[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdepim/akonadi/clients/akonadiconsole
From:       Volker Krause <vkrause () kde ! org>
Date:       2008-06-22 9:06:01
Message-ID: 1214125561.205812.14452.nullmailer () svn ! kde ! org
[Download RAW message or body]

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 <QStackedWidget>
 #include <QtGui/QSortFilterProxyModel>
 #include <QStandardItemModel>
+#include <QTimer>
 
 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 <akonadi/control.h>
 
 #include <KAction>
 #include <KActionCollection>
+#include <KConfigGroup>
 #include <KLocale>
 #include <KStandardAction>
 #include <QApplication>
@@ -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
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic