1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-04-20 07:52:30 +02:00

Differentiate between removable and deletable viewpages to allow showing whatsnew-page after removing it

This commit is contained in:
Dominik Schmidt 2016-01-06 01:18:07 +01:00
parent 5aa875c40a
commit cde395edf0
7 changed files with 29 additions and 4 deletions

View File

@ -76,6 +76,8 @@ public:
*/
virtual bool addPageItem() const;
virtual bool isRemovable() const { return false; }
/**
* This page is actually a constant page that will be shown on every
* restart of Tomahawk until the user selects it to be removed.

View File

@ -538,7 +538,7 @@ SourceDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, co
paintStandardItem( painter, optIndentation, index, count );
}
else if ( type == SourcesModel::TemporaryPage || type == SourcesModel::DeletablePage )
else if ( type == SourcesModel::TemporaryPage || type == SourcesModel::DeletablePage || type == SourcesModel::RemovablePage )
{
if ( opt.state & QStyle::State_MouseOver )
{
@ -668,7 +668,7 @@ SourceDelegate::editorEvent( QEvent* event, QAbstractItemModel* model, const QSt
if ( event->type() == QEvent::MouseButtonRelease || event->type() == QEvent::MouseButtonPress )
{
SourcesModel::RowType type = static_cast< SourcesModel::RowType >( index.data( SourcesModel::SourceTreeItemTypeRole ).toInt() );
if ( type == SourcesModel::TemporaryPage || type == SourcesModel::DeletablePage )
if ( type == SourcesModel::TemporaryPage || type == SourcesModel::DeletablePage || type == SourcesModel::RemovablePage )
{
SourceTreeItem* gpi = index.data( SourcesModel::SourceTreeItemRole ).value< SourceTreeItem* >();
Q_ASSERT( gpi );

View File

@ -334,7 +334,15 @@ SourcesModel::appendPageItem( const QString& name, ViewPage* page, int sortValue
page->pixmap(),
std::bind( &ViewManager::showDynamicPage, ViewManager::instance(), name ),
std::bind( &ViewManager::dynamicPageWidget, ViewManager::instance(), name ) );
pageItem->setDeletable( page->isDeletable() );
if ( page->isDeletable() )
{
pageItem->setDeletable( true );
}
else
{
pageItem->setRemovable( page->isRemovable() );
}
if ( sortValue )
{

View File

@ -63,6 +63,7 @@ public:
TemporaryPage = 7,
LovedTracksPage = 10,
DeletablePage = 15,
RemovablePage = 16,
Collection = 14,
ScriptCollection = 11,

View File

@ -132,6 +132,18 @@ GenericPageItem::setDeletable( bool deletable )
}
}
void
GenericPageItem::setRemovable( bool removable )
{
if ( removable )
{
setRowType( SourcesModel::RemovablePage );
}
else
{
setRowType( SourcesModel::GenericPage );
}
}
int
GenericPageItem::peerSortValue() const

View File

@ -43,6 +43,7 @@ public:
virtual int peerSortValue() const; // How to sort relative to peers in the tree.
virtual bool isBeingPlayed() const;
void setRemovable( bool removable );
void setDeletable( bool deletable );
void setText( const QString& text );
void setSortValue( int value );

View File

@ -91,7 +91,8 @@ public:
const QString pixmapPath() const { return ( RESPATH "images/whatsnew.svg" ); }
bool addPageItem() const;
bool isDeletable() const { return true; }
bool isRemovable() const override { return true; }
bool isDeletable() const override { return false; }
void onItemDeleted();
int sortValue() { return 1; }