From f0585904726c3c720c4bcfbea573519c5b5df81a Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Mon, 12 Nov 2012 12:42:01 +0100 Subject: [PATCH] Fix Bug 309891 - Filter buttons and context menu option are not shown FIXED-IN: 4.9.4 BUG: 309891 --- kmmainwidget.cpp | 23 +++++++++++++++++++++-- kmmainwidget.h | 2 ++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/kmmainwidget.cpp b/kmmainwidget.cpp index 8db775faa..d32e00ad3 100644 --- a/kmmainwidget.cpp +++ b/kmmainwidget.cpp @@ -4235,11 +4235,10 @@ void KMMainWidget::slotShowStartupFolder() { connect( MailCommon::FilterManager::instance(), SIGNAL(filtersChanged()), this, SLOT(initializeFilterActions()) ); - // Plug various action lists. This can't be done in the constructor, as that is called before // the main window or Kontact calls createGUI(). // This function however is called with a single shot timer. - initializeFilterActions(); + checkAkonadiServerManagerState(); mFolderShortcutActionManager->createActions(); mTagActionManager->createActions(); messageActions()->setupForwardingActionsList( mGUIClient ); @@ -4253,6 +4252,26 @@ void KMMainWidget::slotShowStartupFolder() } } +void KMMainWidget::checkAkonadiServerManagerState() +{ + Akonadi::ServerManager::State state = Akonadi::ServerManager::self()->state(); + if(state == Akonadi::ServerManager::Running) { + initializeFilterActions(); + } else { + connect( Akonadi::ServerManager::self(), SIGNAL(stateChanged(Akonadi::ServerManager::State)), + SLOT(slotServerStateChanged(Akonadi::ServerManager::State)) ); + } +} + +void KMMainWidget::slotServerStateChanged(Akonadi::ServerManager::State state) +{ + if(state == Akonadi::ServerManager::Running) { + initializeFilterActions(); + disconnect( Akonadi::ServerManager::self(), SIGNAL(stateChanged(Akonadi::ServerManager::State))); + } +} + + void KMMainWidget::slotShowTip() { KTipDialog::showTip( this, QString(), true ); diff --git a/kmmainwidget.h b/kmmainwidget.h index 7c6e9496a..283e04e36 100644 --- a/kmmainwidget.h +++ b/kmmainwidget.h @@ -459,6 +459,7 @@ class KMAIL_EXPORT KMMainWidget : public QWidget void slotShowNotification(); void slotConfigureAutomaticArchiving(); private: + void checkAkonadiServerManagerState(); void updateHtmlMenuEntry(); void updateMoveAction( const Akonadi::CollectionStatistics& statistic ); @@ -556,6 +557,7 @@ class KMAIL_EXPORT KMMainWidget : public QWidget void slotDeletionCollectionResult(KJob* job); void slotServerSideSubscription(); void slotFetchItemsForFolderDone(KJob*job); + void slotServerStateChanged(Akonadi::ServerManager::State state); private: // Message actions