akonadi/clients
mainwidget.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "mainwidget.h"
00023 #include "mainwindow.h"
00024
00025 #include <QtGui/QSortFilterProxyModel>
00026
00027 MainWidget::MainWidget( MainWindow* parent )
00028 : QWidget( parent ), mMainWindow( parent )
00029 {
00030
00031 QHBoxLayout *layout = new QHBoxLayout( this );
00032 QSplitter *topSplitter = new QSplitter( Qt::Vertical, this );
00033 layout->addWidget( topSplitter );
00034 QSplitter *splitter = new QSplitter( Qt::Horizontal, this );
00035 topSplitter->addWidget( splitter );
00036
00037
00038
00039
00040
00041 mCollectionList = new Akonadi::CollectionView();
00042 splitter->addWidget( mCollectionList );
00043
00044
00045 mIncidenceList = new QTreeView( this );
00046 mIncidenceList->setDragEnabled( this );
00047 mIncidenceList->setRootIsDecorated( false );
00048 splitter->addWidget( mIncidenceList );
00049
00050
00051 mIncidenceViewer = new Akonadi::KCalItemBrowser( this );
00052 topSplitter->addWidget( mIncidenceViewer );
00053
00054
00055
00056
00057
00058
00059 mCollectionModel = new Akonadi::CollectionModel( this );
00060 mCollectionProxyModel = new Akonadi::CollectionFilterProxyModel( this );
00061 mCollectionProxyModel->setSourceModel( mCollectionModel );
00062 mCollectionProxyModel->addMimeTypeFilter( QString::fromLatin1( "text/calendar" ) );
00063
00064
00065 QSortFilterProxyModel *sortModel = new QSortFilterProxyModel( this );
00066 sortModel->setDynamicSortFilter( true );
00067 sortModel->setSortCaseSensitivity( Qt::CaseInsensitive );
00068 sortModel->setSourceModel( mCollectionProxyModel );
00069
00070
00071 mIncidenceModel = new Akonadi::KCalModel( this );
00072
00073
00074
00075
00076 mIncidenceList->setModel( mIncidenceModel );
00077 mCollectionList->setModel( sortModel );
00078
00079
00080
00081
00082 connect( mCollectionList, SIGNAL(clicked(const Akonadi::Collection&)),
00083 SLOT(collectionClicked(const Akonadi::Collection&)) );
00084 connect( mIncidenceList, SIGNAL(clicked(QModelIndex)), SLOT(itemActivated(QModelIndex)) );
00085 }
00086
00087 void MainWidget::collectionClicked( const Akonadi::Collection& collection )
00088 {
00089 mIncidenceModel->setCollection( collection );
00090 }
00091
00092 void MainWidget::itemActivated( const QModelIndex& index )
00093 {
00094 const Akonadi::Item item = mIncidenceModel->itemForIndex( index );
00095 mIncidenceViewer->setItem( item );
00096 }
00097