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::historyBack() { if ( m_pageHistory.count() < 2 ) return; ViewPage* oldPage = m_pageHistory.takeFirst(); ViewPage* newPage = m_pageHistory.first(); tDebug() << "Deleting page in history:" << oldPage->widget()->metaObject()->className(); tDebug() << "Showing page after moving backwards in history:" << newPage->widget()->metaObject()->className(); setPage( newPage, false ); // delete oldPage; }
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(); } }
void ViewManager::historyBack() { ViewPage* oldPage = m_pageHistory.takeFirst(); ViewPage* newPage = m_pageHistory.first(); qDebug() << "Showing page after moving backwards in history:" << newPage->widget()->metaObject()->className(); setPage( newPage, false ); delete oldPage; }
void ViewManager::showHistory( int historyPosition ) { if ( historyPosition < 0 || historyPosition >= m_pageHistory.count() ) { qDebug() << "History position out of bounds!" << historyPosition << m_pageHistory.count(); Q_ASSERT( false ); return; } setHistoryPosition( historyPosition ); ViewPage* page = m_pageHistory.at( historyPosition ); qDebug() << "Showing page after a deleting:" << page->widget()->metaObject()->className(); setPage( page, false ); }
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 ); }