SVN commit 822960 by vkrause: Save and restore the UI state (splitters, item view layouts, etc.). Since I'm lazy it's done in a generic way by traversing the object tree and looking for supported widgets, so I should not have to do that ever again in any other application :) M +1 -0 CMakeLists.txt M +4 -1 browserwidget.cpp M +1 -0 mainwidget.cpp M +11 -0 mainwindow.cpp M +3 -0 mainwindow.h A uistatesaver.cpp [License: LGPL (v2+)] A uistatesaver.h [License: LGPL (v2+)] --- trunk/KDE/kdepim/akonadi/clients/akonadiconsole/CMakeLists.txt #822959:822960 @@ -12,6 +12,7 @@ mainwidget.cpp mainwindow.cpp searchdialog.cpp + uistatesaver.cpp ) qt4_add_dbus_interfaces( akonadiconsole_bin_SRCS --- trunk/KDE/kdepim/akonadi/clients/akonadiconsole/browserwidget.cpp #822959:822960 @@ -50,6 +50,7 @@ #include #include #include +#include using namespace Akonadi; @@ -64,6 +65,7 @@ QVBoxLayout *layout = new QVBoxLayout( this ); QSplitter *splitter = new QSplitter( Qt::Horizontal, this ); + splitter->setObjectName( "collectionSplitter" ); layout->addWidget( splitter ); mCollectionView = new Akonadi::CollectionView( xmlGuiWindow ); @@ -78,6 +80,7 @@ mCollectionView->setModel( sortModel ); QSplitter *splitter2 = new QSplitter( Qt::Vertical, this ); + splitter2->setObjectName( "itemSplitter" ); splitter->addWidget( splitter2 ); QWidget *itemViewParent = new QWidget( this ); @@ -88,7 +91,7 @@ itemUi.modelBox->addItem( "Contacts" ); itemUi.modelBox->addItem( "Calendar" ); connect( itemUi.modelBox, SIGNAL(activated(int)), SLOT(modelChanged()) ); - modelChanged(); + QTimer::singleShot( 0, this, SLOT(modelChanged()) ); itemUi.itemView->setXmlGuiWindow( xmlGuiWindow ); itemUi.itemView->setModel( mItemModel ); --- trunk/KDE/kdepim/akonadi/clients/akonadiconsole/mainwidget.cpp #822959:822960 @@ -44,6 +44,7 @@ QVBoxLayout *layout = new QVBoxLayout( this ); QTabWidget *tabWidget = new QTabWidget( this ); + tabWidget->setObjectName( "mainTab" ); layout->addWidget( tabWidget ); tabWidget->addTab( new AgentWidget( tabWidget ), "Agents" ); --- trunk/KDE/kdepim/akonadi/clients/akonadiconsole/mainwindow.cpp #822959:822960 @@ -22,11 +22,13 @@ #include "mainwindow.h" #include "mainwidget.h" +#include "uistatesaver.h" #include #include #include +#include #include #include #include @@ -40,4 +42,13 @@ KStandardAction::quit( qApp, SLOT(quit()), actionCollection() ); setupGUI( Keys /*| ToolBar | StatusBar*/ | Save | Create, "akonadiconsoleui.rc" ); + + UiStateSaver::restoreState( this, KConfigGroup( KGlobal::config(), "UiState" ) ); } + +bool MainWindow::queryExit() +{ + KConfigGroup config( KGlobal::config(), "UiState" ); + UiStateSaver::saveState( this, config ); + return KXmlGuiWindow::queryExit(); +} --- trunk/KDE/kdepim/akonadi/clients/akonadiconsole/mainwindow.h #822959:822960 @@ -30,6 +30,9 @@ public: explicit MainWindow( QWidget *parent = 0 ); + + protected: + bool queryExit(); }; #endif