ViewPage* ViewManager::pageForInterface( Tomahawk::playlistinterface_ptr interface ) const { QList< Tomahawk::ViewPage* > pages = allPages(); for ( int i = 0; i < pages.count(); i++ ) { ViewPage* page = pages.at( i ); if ( page->playlistInterface() == interface ) return page; if ( page->playlistInterface() && page->playlistInterface()->hasChildInterface( interface ) ) return page; } return 0; }
void ViewManager::historyForward() { if ( !m_pageHistoryFwd.count() ) return; ViewPage* page = m_pageHistoryFwd.takeLast(); if ( m_currentPage ) { m_pageHistoryBack << m_currentPage; tDebug() << "Moved to backward history:" << m_currentPage->widget()->metaObject()->className(); } tDebug() << "Showing page after moving forwards in history:" << page->widget()->metaObject()->className(); setPage( page, false ); }
void ViewManager::onWidgetDestroyed( QWidget* widget ) { qDebug() << "Destroyed child:" << widget << widget->metaObject()->className(); bool resetWidget = ( m_stack->currentWidget() == widget ); for ( int i = 0; i < m_pageHistory.count(); i++ ) { ViewPage* page = m_pageHistory.at( i ); if ( page->widget() != widget ) continue; if ( !playlistForInterface( page->playlistInterface() ).isNull() ) { m_playlistViews.remove( playlistForInterface( page->playlistInterface() ) ); } if ( !dynamicPlaylistForInterface( page->playlistInterface() ).isNull() ) { m_dynamicWidgets.remove( dynamicPlaylistForInterface( page->playlistInterface() ) ); } if ( page->widget() == widget && !resetWidget ) { m_pageHistory.removeAt( i ); } } m_stack->removeWidget( widget ); if ( resetWidget ) { historyBack(); } }
void ViewManager::onWidgetDestroyed( QWidget* widget ) { tDebug() << "Destroyed child:" << widget << widget->metaObject()->className(); bool resetWidget = ( m_stack->currentWidget() == widget ); QList< Tomahawk::ViewPage* > p = historyPages(); for ( int i = 0; i < p.count(); i++ ) { ViewPage* page = p.at( i ); if ( page->widget() != widget ) continue; if ( !playlistForInterface( page->playlistInterface() ).isNull() ) { m_playlistViews.remove( playlistForInterface( page->playlistInterface() ) ); } if ( !dynamicPlaylistForInterface( page->playlistInterface() ).isNull() ) { m_dynamicWidgets.remove( dynamicPlaylistForInterface( page->playlistInterface() ) ); } m_pageHistoryBack.removeAll( page ); m_pageHistoryFwd.removeAll( page ); } m_stack->removeWidget( widget ); if ( resetWidget ) { m_currentPage = 0; historyBack(); } }