[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