diff --git a/src/tomahawk/sourcetree/items/SourceTreeItem.cpp b/src/tomahawk/sourcetree/items/SourceTreeItem.cpp index 768a2f0cd..e2ad9fadd 100644 --- a/src/tomahawk/sourcetree/items/SourceTreeItem.cpp +++ b/src/tomahawk/sourcetree/items/SourceTreeItem.cpp @@ -261,3 +261,26 @@ SourceTreeItem::setParentItem(SourceTreeItem* item) { m_parent = item; } + +void +SourceTreeItem::removeFromList() +{ + pageDestroyed(); +} + + +void +SourceTreeItem::pageDestroyed() +{ + model()->removeSourceItemLink( this ); + + int idx = parent()->children().indexOf( this ); + parent()->beginRowsRemoved( idx, idx ); + parent()->removeChild( this ); + parent()->endRowsRemoved(); + + emit removed(); + deleteLater(); +} + + diff --git a/src/tomahawk/sourcetree/items/SourceTreeItem.h b/src/tomahawk/sourcetree/items/SourceTreeItem.h index 91a9c9e54..9f744f6ac 100644 --- a/src/tomahawk/sourcetree/items/SourceTreeItem.h +++ b/src/tomahawk/sourcetree/items/SourceTreeItem.h @@ -81,9 +81,11 @@ public: public slots: virtual void activate() {} virtual void doubleClicked() {} + virtual void removeFromList(); signals: void updated(); + bool removed(); void selectRequest( SourceTreeItem* ); void expandRequest( SourceTreeItem* ); void toggleExpandRequest( SourceTreeItem* ); @@ -100,6 +102,7 @@ protected: private slots: void checkPlayingStatus(); + void pageDestroyed(); private: SourcesModel::RowType m_type; diff --git a/src/tomahawk/sourcetree/items/TemporaryPageItem.cpp b/src/tomahawk/sourcetree/items/TemporaryPageItem.cpp index b1c6bdef4..69fbd54a4 100644 --- a/src/tomahawk/sourcetree/items/TemporaryPageItem.cpp +++ b/src/tomahawk/sourcetree/items/TemporaryPageItem.cpp @@ -131,29 +131,6 @@ TemporaryPageItem::IDValue() const } -void -TemporaryPageItem::removeFromList() -{ - pageDestroyed(); - ViewManager::instance()->destroyPage( m_page ); -} - - -void -TemporaryPageItem::pageDestroyed() -{ - model()->removeSourceItemLink( this ); - - int idx = parent()->children().indexOf( this ); - parent()->beginRowsRemoved( idx, idx ); - parent()->removeChild( this ); - parent()->endRowsRemoved(); - - emit removed(); - deleteLater(); -} - - void TemporaryPageItem::linkActionTriggered( QAction* action ) { @@ -211,3 +188,12 @@ TemporaryPageItem::isBeingPlayed() const { return m_page->isBeingPlayed(); } + + +void +TemporaryPageItem::removeFromList() +{ + SourceTreeItem::removeFromList(); + + ViewManager::instance()->destroyPage( m_page ); +} diff --git a/src/tomahawk/sourcetree/items/TemporaryPageItem.h b/src/tomahawk/sourcetree/items/TemporaryPageItem.h index 389cd1ac7..546356a4c 100644 --- a/src/tomahawk/sourcetree/items/TemporaryPageItem.h +++ b/src/tomahawk/sourcetree/items/TemporaryPageItem.h @@ -46,12 +46,8 @@ public: public slots: void removeFromList(); -signals: - bool removed(); - private slots: void linkActionTriggered( QAction* ); - void pageDestroyed(); private: Tomahawk::ViewPage* m_page;