From 84a2ea9f3e272fc9b9e37f4a4bb1192ccb69fefc Mon Sep 17 00:00:00 2001 From: Laurent Montel Date: Wed, 22 May 2019 07:14:47 +0200 Subject: [PATCH] Allow to restart account --- src/kmmainwidget.cpp | 20 ++++++++++++++++++++ src/kmmainwidget.h | 4 +++- src/kmmainwin.rc | 3 ++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/kmmainwidget.cpp b/src/kmmainwidget.cpp index 2603bb55d..de693193d 100644 --- a/src/kmmainwidget.cpp +++ b/src/kmmainwidget.cpp @@ -3575,6 +3575,10 @@ void KMMainWidget::setupActions() mAccountSettings = new QAction(QIcon::fromTheme(QStringLiteral("configure")), i18n("Account &Settings"), this); actionCollection()->addAction(QStringLiteral("resource_settings"), mAccountSettings); connect(mAccountSettings, &QAction::triggered, this, &KMMainWidget::slotAccountSettings); + + mRestartAccountSettings = new QAction(QIcon::fromTheme(QStringLiteral("view-refresh")), i18n("Restart Account"), this); + actionCollection()->addAction(QStringLiteral("resource_restart"), mRestartAccountSettings); + connect(mRestartAccountSettings, &QAction::triggered, this, &KMMainWidget::slotRestartAccount); } void KMMainWidget::slotAddFavoriteFolder() @@ -4057,8 +4061,10 @@ void KMMainWidget::updateFolderMenu() } if (mCurrentCollection.parentCollection() != Akonadi::Collection::root()) { mGUIClient->unplugActionList(QStringLiteral("resource_settings")); + mGUIClient->unplugActionList(QStringLiteral("resource_restart")); } else { mGUIClient->plugActionList(QStringLiteral("resource_settings"), {mAccountSettings}); + mGUIClient->plugActionList(QStringLiteral("resource_restart"), {mRestartAccountSettings}); } mGUIClient->unplugActionList(QStringLiteral("collectionview_actionlist")); @@ -4603,6 +4609,20 @@ void KMMainWidget::slotAccountSettings() instance.configure(this); } +void KMMainWidget::slotRestartAccount() +{ + if (!mCurrentCollection.isValid() || mCurrentCollection.parentCollection() != Akonadi::Collection::root()) { + return; + } + + auto instance = Akonadi::AgentManager::self()->instance(mCurrentCollection.resource()); + if (!instance.isValid()) { + return; + } + + instance.restart(); +} + void KMMainWidget::savePaneSelection() { if (mMessagePane) { diff --git a/src/kmmainwidget.h b/src/kmmainwidget.h index b044c67a3..c34d70083 100644 --- a/src/kmmainwidget.h +++ b/src/kmmainwidget.h @@ -506,7 +506,6 @@ private Q_SLOTS: void slotRedirectCurrentMessage(); void slotEditCurrentVacation(); void slotReplyMessageTo(const KMime::Message::Ptr &message, bool replyToAll); - void slotAccountSettings(); private: void slotSetFocusToViewer(); void deleteSelectedMessages(bool confirmDelete); // completely delete message @@ -521,6 +520,8 @@ private: QAction *filterToAction(MailCommon::MailFilter *filter); Akonadi::Collection::List applyFilterOnCollection(bool recursive); void setShowStatusBarMessage(const QString &msg); + void slotRestartAccount(); + void slotAccountSettings(); // Message actions QAction *mDeleteAction = nullptr; @@ -536,6 +537,7 @@ private: QAction *mArchiveAction = nullptr; QAction *mSelectAllMessages = nullptr; KActionMenuTransport *mSendActionMenu = nullptr; + QAction *mRestartAccountSettings = nullptr; // Filter actions KActionMenu *mFilterMenu = nullptr; QAction *mExpireConfigAction = nullptr; diff --git a/src/kmmainwin.rc b/src/kmmainwin.rc index 924e28ef6..a3b5e34f7 100644 --- a/src/kmmainwin.rc +++ b/src/kmmainwin.rc @@ -2,7 +2,7 @@ the same menu entries at the same place in KMail and Kontact --> - + &File @@ -287,6 +287,7 @@ +