[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:       2007-06-24 11:32:34
Message-ID: 1182684754.315890.27766.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 679603 by vkrause:

Allow to dynamically switch between item models.


 M  +2 -1      CMakeLists.txt  
 M  +36 -12    browserwidget.cpp  
 M  +5 -1      browserwidget.h  
 A             browserwidget_itemview.ui  


--- trunk/KDE/kdepim/akonadi/clients/akonadiconsole/CMakeLists.txt #679602:679603
@@ -18,10 +18,11 @@
 )
 
 kde4_automoc(${akonadiconsole_bin_SRCS})
+kde4_add_ui_files(akonadiconsole_bin_SRCS browserwidget_itemview.ui)
 
 kde4_add_executable(akonadiconsole_bin ${akonadiconsole_bin_SRCS})
 set_target_properties(akonadiconsole_bin PROPERTIES OUTPUT_NAME akonadiconsole)
 
-target_link_libraries( akonadiconsole_bin akonadicomponents kabcakonadi kdepim \
${KDE4_KDEUI_LIBRARY} ) +target_link_libraries( akonadiconsole_bin akonadicomponents \
kabcakonadi kmimeakonadi kdepim ${KDE4_KDEUI_LIBRARY} )  
 install(TARGETS akonadiconsole_bin DESTINATION ${BIN_INSTALL_DIR} )
--- trunk/KDE/kdepim/akonadi/clients/akonadiconsole/browserwidget.cpp #679602:679603
@@ -44,7 +44,9 @@
 using namespace Akonadi;
 
 BrowserWidget::BrowserWidget(QWidget * parent) :
-    QWidget( parent )
+    QWidget( parent ),
+    mItemModel( 0 ),
+    mCurrentCollection( 0 )
 {
   QVBoxLayout *layout = new QVBoxLayout( this );
 
@@ -61,16 +63,20 @@
   QSplitter *splitter2 = new QSplitter( Qt::Vertical, this );
   splitter->addWidget( splitter2 );
 
-  mItemModel = new ItemModel( this );
-//  mItemModel = new KABCModel( this );
-//   mItemModel = new MessageModel( this );
+  QWidget *itemViewParent = new QWidget( this );
+  itemUi.setupUi( itemViewParent );
 
-  mItemView = new QTreeView( this );
-  mItemView->setRootIsDecorated( false );
-  mItemView->setModel( mItemModel );
-  connect( mItemView, SIGNAL(clicked(QModelIndex)), SLOT(itemActivated(QModelIndex)) \
                );
-  splitter2->addWidget( mItemView );
+  itemUi.modelBox->addItem( "Generic" );
+  itemUi.modelBox->addItem( "Mail" );
+  itemUi.modelBox->addItem( "Contacts" );
+  connect( itemUi.modelBox, SIGNAL(activated(int)), SLOT(modelChanged()) );
+  modelChanged();
 
+  itemUi.itemView->setModel( mItemModel );
+  connect( itemUi.itemView, SIGNAL(clicked(QModelIndex)), \
SLOT(itemActivated(QModelIndex)) ); +  splitter2->addWidget( itemViewParent );
+  itemViewParent->layout()->setMargin( 0 );
+
   mStack = new QStackedWidget( this );
   mDataView = new QTextEdit( mStack );
   mDataView->setReadOnly( true );
@@ -82,10 +88,10 @@
 
 void BrowserWidget::collectionActivated(const QModelIndex & index)
 {
-  int colId = mCollectionView->model()->data( index, \
                CollectionModel::CollectionIdRole ).toInt();
-  if ( colId <= 0 )
+  mCurrentCollection = mCollectionView->model()->data( index, \
CollectionModel::CollectionIdRole ).toInt(); +  if ( mCurrentCollection <= 0 )
     return;
-  mItemModel->setCollection( Collection( colId ) );
+  mItemModel->setCollection( Collection( mCurrentCollection ) );
 }
 
 void BrowserWidget::itemActivated(const QModelIndex & index)
@@ -121,4 +127,22 @@
   }
 }
 
+void BrowserWidget::modelChanged()
+{
+  delete mItemModel;
+  switch ( itemUi.modelBox->currentIndex() ) {
+    case 1:
+      mItemModel = new MessageModel( this );
+      break;
+    case 2:
+      mItemModel = new KABCModel( this );
+      break;
+    default:
+      mItemModel = new ItemModel( this );
+  }
+  itemUi.itemView->setModel( mItemModel );
+  if ( mCurrentCollection > 0 )
+    mItemModel->setCollection( Collection( mCurrentCollection ) );
+}
+
 #include "browserwidget.moc"
--- trunk/KDE/kdepim/akonadi/clients/akonadiconsole/browserwidget.h #679602:679603
@@ -20,6 +20,8 @@
 #ifndef BROWSERWIDGET_H
 #define BROWSERWIDGET_H
 
+#include <ui_browserwidget_itemview.h>
+
 #include <QtGui/QWidget>
 
 class QModelIndex;
@@ -51,15 +53,17 @@
     void collectionActivated( const QModelIndex &index );
     void itemActivated( const QModelIndex &index );
     void itemFetchDone( KJob *job );
+    void modelChanged();
 
   private:
     Akonadi::CollectionModel *mCollectionModel;
     Akonadi::CollectionView *mCollectionView;
     Akonadi::ItemModel *mItemModel;
-    QTreeView *mItemView;
     QStackedWidget *mStack;
     QTextEdit *mDataView;
     KPIM::AddresseeView *mAddresseeView;
+    Ui::ItemViewWidget itemUi;
+    int mCurrentCollection;
 };
 
 #endif


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

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