From 4890f69329fed7820eb53e7ec908d7819d35e50b Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Fri, 10 Jan 2014 17:46:36 +0100 Subject: [PATCH] Remember FlexibleTreeView mode choice for all Collection views. --- src/libtomahawk/ViewManager.cpp | 1 + src/libtomahawk/playlist/FlexibleTreeView.cpp | 36 +++++++++++++++++-- src/libtomahawk/playlist/FlexibleTreeView.h | 2 ++ src/libtomahawk/playlist/ModeHeader.cpp | 20 ++++++++++- src/libtomahawk/playlist/ModeHeader.h | 4 ++- 5 files changed, 58 insertions(+), 5 deletions(-) diff --git a/src/libtomahawk/ViewManager.cpp b/src/libtomahawk/ViewManager.cpp index 86926e756..980a03c35 100644 --- a/src/libtomahawk/ViewManager.cpp +++ b/src/libtomahawk/ViewManager.cpp @@ -323,6 +323,7 @@ ViewManager::show( const Tomahawk::collection_ptr& collection ) { view = m_collectionViews.value( collection ).data(); } + view->restoreViewMode(); setPage( view ); return view; diff --git a/src/libtomahawk/playlist/FlexibleTreeView.cpp b/src/libtomahawk/playlist/FlexibleTreeView.cpp index 0204b8965..97856a7b1 100644 --- a/src/libtomahawk/playlist/FlexibleTreeView.cpp +++ b/src/libtomahawk/playlist/FlexibleTreeView.cpp @@ -1,6 +1,7 @@ /* === This file is part of Tomahawk Player - === * * Copyright 2013, Christian Muehlhaeuser + * Copyright 2014, Teo Mrnjavac * * Tomahawk is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,6 +33,7 @@ #include "playlist/ModeHeader.h" #include "playlist/PlaylistLargeItemDelegate.h" #include "PlayableProxyModelPlaylistInterface.h" +#include "TomahawkSettings.h" #include "utils/TomahawkStyle.h" #include "utils/TomahawkUtilsGui.h" #include "utils/Closure.h" @@ -94,8 +96,6 @@ FlexibleTreeView::FlexibleTreeView( QWidget* parent, QWidget* extraHeader ) /* m_stack->addWidget( m_gridView ); m_stack->addWidget( m_trackView );*/ - setCurrentMode( Columns ); - connect( m_header, SIGNAL( filterTextChanged( QString ) ), SLOT( setFilter( QString ) ) ); NewClosure( m_modeHeader, SIGNAL( flatClicked() ), const_cast< FlexibleTreeView* >( this ), SLOT( setCurrentMode( FlexibleTreeViewMode ) ), FlexibleTreeView::Columns )->setAutoDelete( false ); @@ -198,7 +198,15 @@ FlexibleTreeView::setTreeModel( TreeModel* model ) void FlexibleTreeView::setCurrentMode( FlexibleTreeViewMode mode ) { - m_mode = mode; + if ( m_mode != mode ) + { + TomahawkSettings::instance()->beginGroup( "ui" ); + TomahawkSettings::instance()->setValue( "flexibleTreeViewMode", mode ); + TomahawkSettings::instance()->endGroup(); + TomahawkSettings::instance()->sync(); + + m_mode = mode; + } switch ( mode ) { @@ -283,6 +291,28 @@ FlexibleTreeView::setFilter( const QString& pattern ) } +void +FlexibleTreeView::restoreViewMode() +{ + TomahawkSettings::instance()->beginGroup( "ui" ); + int modeNumber = TomahawkSettings::instance()->value( "flexibleTreeViewMode", Columns ).toInt(); + m_mode = static_cast< FlexibleTreeViewMode >( modeNumber ); + TomahawkSettings::instance()->endGroup(); + + switch ( m_mode ) + { + case Columns: + m_modeHeader->switchTo( 0 ); + break; + case Flat: + m_modeHeader->switchTo( 1 ); + break; + case Albums: + m_modeHeader->switchTo( 2 ); + } +} + + void FlexibleTreeView::setEmptyTip( const QString& tip ) { diff --git a/src/libtomahawk/playlist/FlexibleTreeView.h b/src/libtomahawk/playlist/FlexibleTreeView.h index 2c671ae01..a9a35d4a4 100644 --- a/src/libtomahawk/playlist/FlexibleTreeView.h +++ b/src/libtomahawk/playlist/FlexibleTreeView.h @@ -1,6 +1,7 @@ /* === This file is part of Tomahawk Player - === * * Copyright 2012, Christian Muehlhaeuser + * Copyright 2014, Teo Mrnjavac * * Tomahawk is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -76,6 +77,7 @@ public: public slots: void setCurrentMode( FlexibleTreeViewMode mode ); virtual bool setFilter( const QString& pattern ); + void restoreViewMode(); //ViewManager calls this on every show signals: void modeChanged( FlexibleTreeViewMode mode ); diff --git a/src/libtomahawk/playlist/ModeHeader.cpp b/src/libtomahawk/playlist/ModeHeader.cpp index 4ffabaac6..74b4fb979 100644 --- a/src/libtomahawk/playlist/ModeHeader.cpp +++ b/src/libtomahawk/playlist/ModeHeader.cpp @@ -1,7 +1,7 @@ /* === This file is part of Tomahawk Player - === * * Copyright 2010-2013, Christian Muehlhaeuser - * Copyright 2012-2013, Teo Mrnjavac + * Copyright 2012-2014, Teo Mrnjavac * * Tomahawk is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -103,6 +103,24 @@ ModeHeader::~ModeHeader() } +void +ModeHeader::switchTo( int buttonIndex ) +{ + switch ( buttonIndex ) + { + case 0: + m_radioNormal->click(); + break; + case 1: + m_radioDetailed->click(); + break; + case 2: + m_radioCloud->click(); + break; + } +} + + void ModeHeader::changeEvent( QEvent* e ) { diff --git a/src/libtomahawk/playlist/ModeHeader.h b/src/libtomahawk/playlist/ModeHeader.h index 47b9d346c..dfccb2616 100644 --- a/src/libtomahawk/playlist/ModeHeader.h +++ b/src/libtomahawk/playlist/ModeHeader.h @@ -1,7 +1,7 @@ /* === This file is part of Tomahawk Player - === * * Copyright 2010-2013, Christian Muehlhaeuser - * Copyright 2012-2013, Teo Mrnjavac + * Copyright 2012-2014, Teo Mrnjavac * * Tomahawk is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,6 +34,8 @@ public: ModeHeader( QWidget* parent ); ~ModeHeader(); + void switchTo( int buttonIndex ); + protected: void changeEvent( QEvent* e );