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

List:       kde-commits
Subject:    KDE/kdepimlibs/akonadi
From:       Tobias Koenig <tokoe () kde ! org>
Date:       2011-01-24 16:07:28
Message-ID: 20110124160729.02058AC8B9 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1216764 by tokoe:

Open CollectionDialog when clicking on CollectionComboBox in MOBILE_UI mode

BUG: 263880


 M  +50 -0     collectioncombobox.cpp  


--- trunk/KDE/kdepimlibs/akonadi/collectioncombobox.cpp #1216763:1216764
@@ -22,6 +22,7 @@
 #include "collectioncombobox.h"
 
 #include "asyncselectionhandler_p.h"
+#include "collectiondialog.h"
 
 #include <akonadi/changerecorder.h>
 #include <akonadi/collectionfetchscope.h>
@@ -34,6 +35,7 @@
 #include "collectionutils_p.h"
 
 #include <QtCore/QAbstractItemModel>
+#include <QtCore/QEvent>
 
 using namespace Akonadi;
 
@@ -106,15 +108,63 @@
   mParent->setCurrentIndex( index.row() );
 }
 
+class MobileEventHandler : public QObject
+{
+  public:
+    MobileEventHandler( CollectionComboBox *comboBox, CollectionFilterProxyModel \
*mimeTypeFilter, +                        EntityRightsFilterModel \
*accessRightsFilter, QAbstractItemModel *customModel ) +      : QObject( comboBox ),
+        mComboBox( comboBox ),
+        mMimeTypeFilter( mimeTypeFilter ),
+        mAccessRightsFilter( accessRightsFilter ),
+        mCustomModel( customModel )
+    {
+    }
 
+  protected:
+    virtual bool eventFilter( QObject *object, QEvent *event )
+    {
+      if ( object == mComboBox && mComboBox->isEnabled() && event->type() == \
QEvent::MouseButtonPress ) { +        Akonadi::CollectionDialog dialog( mCustomModel \
); +        dialog.setMimeTypeFilter( mMimeTypeFilter->mimeTypeFilters() );
+        dialog.setAccessRightsFilter( mAccessRightsFilter->accessRights() );
+
+        if ( dialog.exec() ) {
+          const Akonadi::Collection collection = dialog.selectedCollection();
+          const QModelIndex index = \
Akonadi::EntityTreeModel::modelIndexForCollection( mComboBox->model(), collection ); \
+          mComboBox->setCurrentIndex( index.row() ); +        }
+
+        return true;
+      }
+
+      return QObject::eventFilter( object, event );
+    }
+
+  private:
+    CollectionComboBox *mComboBox;
+    CollectionFilterProxyModel *mMimeTypeFilter;
+    EntityRightsFilterModel *mAccessRightsFilter;
+    QAbstractItemModel *mCustomModel;
+};
+
+
 CollectionComboBox::CollectionComboBox( QWidget *parent )
   : KComboBox( parent ), d( new Private( 0, this ) )
 {
+#ifdef KDEPIM_MOBILE_UI
+  MobileEventHandler *handler = new MobileEventHandler( this, \
d->mMimeTypeFilterModel, d->mRightsFilterModel, 0 ); +  installEventFilter( handler \
); +#endif
 }
 
 CollectionComboBox::CollectionComboBox( QAbstractItemModel *model, QWidget *parent )
   : KComboBox( parent ), d( new Private( model, this ) )
 {
+#ifdef KDEPIM_MOBILE_UI
+  MobileEventHandler *handler = new MobileEventHandler( this, \
d->mMimeTypeFilterModel, d->mRightsFilterModel, model ); +  installEventFilter( \
handler ); +#endif
 }
 
 CollectionComboBox::~CollectionComboBox()


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

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