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

List:       kde-commits
Subject:    KDE/kdepimlibs/akonadi/kmime
From:       Andras Mantia <amantia () kde ! org>
Date:       2010-09-22 11:57:34
Message-ID: 20100922115734.E1481AC888 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1178210 by amantia:

More robust and correct update of the actions.

 M  +39 -5     standardmailactionmanager.cpp  


--- trunk/KDE/kdepimlibs/akonadi/kmime/standardmailactionmanager.cpp #1178209:1178210
@@ -45,6 +45,7 @@
 
 #include <QtCore/QPointer>
 #include <QtGui/QItemSelectionModel>
+#include <Akonadi/CollectionStatistics>
 
 using namespace Akonadi;
 
@@ -180,9 +181,10 @@
 
     void updateActions()
     {
-      if ( !mItemSelectionModel ||  mItemSelectionModel->selectedIndexes().isEmpty() \
                )
-        return;
+      bool itemIsSelected = mItemSelectionModel && \
!mItemSelectionModel->selectedIndexes().isEmpty(); +      bool collectionIsSelected = \
mCollectionSelectionModel && !mCollectionSelectionModel->selectedIndexes().isEmpty(); \
 +      if ( itemIsSelected ) {
       bool allMarkedAsImportant = true;
       bool allMarkedAsRead = true;
       bool allMarkedAsActionItem = true;
@@ -199,27 +201,59 @@
           allMarkedAsActionItem = false;
     }
 
-      QAction *action = mParent->action( \
Akonadi::StandardMailActionManager::MarkMailAsRead ); +        QAction *action = \
mActions.value( Akonadi::StandardMailActionManager::MarkMailAsRead ); +        if ( \
action ) {  updateMarkAction( action, allMarkedAsRead);
       if ( allMarkedAsRead )
          action->setText( i18n("&Mark Mail as Unread") );
       else
         action->setText( i18n("&Mark Mail as Read") );
+          action->setEnabled( true );
+        }
 
-      action = mParent->action( \
Akonadi::StandardMailActionManager::MarkMailAsImportant ); +        action = \
mActions.value( Akonadi::StandardMailActionManager::MarkMailAsImportant ); +        \
if ( action ) {  updateMarkAction( action, allMarkedAsImportant );
       if ( allMarkedAsImportant )
         action->setText( i18n("Remove Important Mark") );
       else
         action->setText( i18n("&Mark Mail as Important") );
+          action->setEnabled( true );
+        }
 
-      action = mParent->action( \
Akonadi::StandardMailActionManager::MarkMailAsActionItem ); +        action = \
mActions.value( Akonadi::StandardMailActionManager::MarkMailAsActionItem ); +        \
if ( action ) {  updateMarkAction( action, allMarkedAsActionItem );
       if ( allMarkedAsActionItem )
         action->setText( i18n("Remove Action Item Mark") );
       else
         action->setText( i18n("&Mark Mail as Action Item") );
+          action->setEnabled( true );
+        }
+     } else {
+        QAction *action = mActions.value( \
Akonadi::StandardMailActionManager::MarkMailAsRead ); +        if ( action ) \
action->setEnabled( false ); +        action = mActions.value( \
Akonadi::StandardMailActionManager::MarkMailAsImportant ); +        if ( action ) \
action->setEnabled( false ); +        action = mActions.value( \
Akonadi::StandardMailActionManager::MarkMailAsActionItem ); +        if ( action ) \
action->setEnabled( false ); +     }
    
+      bool enableMarkAllAsRead = false;
+      bool enableMarkAllAsUnread = false;
+      if ( collectionIsSelected ) {
+        Collection collection = selectedCollection();
+        if ( collection.isValid() ) {
+          Akonadi::CollectionStatistics stats = collection.statistics();
+          enableMarkAllAsRead = ( stats.unreadCount() > 0 );
+          enableMarkAllAsUnread = ( stats.count() != stats.unreadCount() );
+        }
+      }
+      QAction *action = mActions.value( \
Akonadi::StandardMailActionManager::MarkAllMailAsRead ); +      if ( action ) \
action->setEnabled( enableMarkAllAsRead ); +      action = mActions.value( \
Akonadi::StandardMailActionManager::MarkAllMailAsUnread); +      if ( action ) \
action->setEnabled( enableMarkAllAsUnread ); +                                        \
  emit mParent->actionStateUpdated();
     }
 


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

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