diff --git a/src/libtomahawk/ViewPage.h b/src/libtomahawk/ViewPage.h index 5e5858779..5be23f124 100644 --- a/src/libtomahawk/ViewPage.h +++ b/src/libtomahawk/ViewPage.h @@ -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. diff --git a/src/tomahawk/sourcetree/SourceDelegate.cpp b/src/tomahawk/sourcetree/SourceDelegate.cpp index 40b6852ae..cf30afec1 100644 --- a/src/tomahawk/sourcetree/SourceDelegate.cpp +++ b/src/tomahawk/sourcetree/SourceDelegate.cpp @@ -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 ); diff --git a/src/tomahawk/sourcetree/SourcesModel.cpp b/src/tomahawk/sourcetree/SourcesModel.cpp index 05ee67163..03741b59d 100644 --- a/src/tomahawk/sourcetree/SourcesModel.cpp +++ b/src/tomahawk/sourcetree/SourcesModel.cpp @@ -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 ) { diff --git a/src/tomahawk/sourcetree/SourcesModel.h b/src/tomahawk/sourcetree/SourcesModel.h index 83daa2cb1..8ccdfd20d 100644 --- a/src/tomahawk/sourcetree/SourcesModel.h +++ b/src/tomahawk/sourcetree/SourcesModel.h @@ -63,6 +63,7 @@ public: TemporaryPage = 7, LovedTracksPage = 10, DeletablePage = 15, + RemovablePage = 16, Collection = 14, ScriptCollection = 11, diff --git a/src/tomahawk/sourcetree/items/GenericPageItems.cpp b/src/tomahawk/sourcetree/items/GenericPageItems.cpp index 742453a70..2966438ea 100644 --- a/src/tomahawk/sourcetree/items/GenericPageItems.cpp +++ b/src/tomahawk/sourcetree/items/GenericPageItems.cpp @@ -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 diff --git a/src/tomahawk/sourcetree/items/GenericPageItems.h b/src/tomahawk/sourcetree/items/GenericPageItems.h index 7a6b01a4d..393fc1cc6 100644 --- a/src/tomahawk/sourcetree/items/GenericPageItems.h +++ b/src/tomahawk/sourcetree/items/GenericPageItems.h @@ -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 ); diff --git a/src/viewpages/whatsnew_0_8/WhatsNew_0_8.h b/src/viewpages/whatsnew_0_8/WhatsNew_0_8.h index 1d645d0cf..b30a71edb 100644 --- a/src/viewpages/whatsnew_0_8/WhatsNew_0_8.h +++ b/src/viewpages/whatsnew_0_8/WhatsNew_0_8.h @@ -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; }