diff --git a/src/configuredialog/configureaccountpage.cpp b/src/configuredialog/configureaccountpage.cpp index a9d580eac..d1903f02d 100644 --- a/src/configuredialog/configureaccountpage.cpp +++ b/src/configuredialog/configureaccountpage.cpp @@ -21,6 +21,7 @@ #include "kmkernel.h" #include "settings/kmailsettings.h" #include "configagentdelegate.h" +#include "undosend/undosendcombobox.h" #include "MessageComposer/MessageComposerSettings" #include "MailCommon/AccountConfigOrderDialog" #include "PimCommon/ConfigureImmutableWidgetUtils" @@ -156,6 +157,18 @@ AccountsPageSendingTab::AccountsPageSendingTab(QWidget *parent) l = new QLabel(i18n("Defa&ult send method:"), group); l->setBuddy(mSendMethodCombo); glay->addWidget(l, 3, 0); + + mUndoSend = new QCheckBox(i18n("Enable Undo Send"), this); + glay->addWidget(mUndoSend, 4, 0); + connect(mUndoSend, &QCheckBox::toggled, this, [this](bool state) { + mUndoSendComboBox->setEnabled(state); + Q_EMIT slotEmitChanged(); + }); + + mUndoSendComboBox = new UndoSendCombobox(this); + mUndoSendComboBox->setEnabled(false); + glay->addWidget(mUndoSendComboBox, 4, 1); + connect(mUndoSendComboBox, qOverload(&QComboBox::activated), this, &AccountsPageSendingTab::slotEmitChanged); } void AccountsPage::SendingTab::doLoadFromGlobalSettings() @@ -168,6 +181,8 @@ void AccountsPage::SendingTab::doLoadOther() mSendMethodCombo->setCurrentIndex(MessageComposer::MessageComposerSettings::self()->sendImmediate() ? 0 : 1); loadWidget(mConfirmSendCheck, KMailSettings::self()->confirmBeforeSendItem()); loadWidget(mCheckSpellingBeforeSending, KMailSettings::self()->checkSpellingBeforeSendItem()); + loadWidget(mUndoSend, KMailSettings::self()->enabledUndoSendItem()); + mUndoSendComboBox->setDelay(KMailSettings::self()->undoSendDelay()); } void AccountsPage::SendingTab::save() @@ -175,7 +190,9 @@ void AccountsPage::SendingTab::save() KMailSettings::self()->setSendOnCheck(mSendOnCheckCombo->currentIndex()); saveCheckBox(mConfirmSendCheck, KMailSettings::self()->confirmBeforeSendItem()); saveCheckBox(mCheckSpellingBeforeSending, KMailSettings::self()->checkSpellingBeforeSendItem()); + saveCheckBox(mUndoSend, KMailSettings::self()->enabledUndoSendItem()); MessageComposer::MessageComposerSettings::self()->setSendImmediate(mSendMethodCombo->currentIndex() == 0); + KMailSettings::self()->setUndoSendDelay(mUndoSendComboBox->delay()); } QString AccountsPage::ReceivingTab::helpAnchor() const diff --git a/src/configuredialog/configureaccountpage.h b/src/configuredialog/configureaccountpage.h index 42e6f71d5..08472c53f 100644 --- a/src/configuredialog/configureaccountpage.h +++ b/src/configuredialog/configureaccountpage.h @@ -24,6 +24,7 @@ class QCheckBox; class QComboBox; +class UndoSendCombobox; class OrgFreedesktopAkonadiNewMailNotifierInterface; namespace KLDAP { class LdapConfigureWidget; @@ -47,6 +48,8 @@ private: QCheckBox *mCheckSpellingBeforeSending = nullptr; QComboBox *mSendOnCheckCombo = nullptr; QComboBox *mSendMethodCombo = nullptr; + UndoSendCombobox *mUndoSendComboBox = nullptr; + QCheckBox *mUndoSend = nullptr; }; // subclasses: one class per tab: diff --git a/src/settings/kmail.kcfg.cmake b/src/settings/kmail.kcfg.cmake index 40bfe2f0f..e68397e3a 100644 --- a/src/settings/kmail.kcfg.cmake +++ b/src/settings/kmail.kcfg.cmake @@ -430,4 +430,13 @@ 100 + + + + false + + + 10 + + diff --git a/src/undosend/undosendcombobox.cpp b/src/undosend/undosendcombobox.cpp index 43fe1e072..df5e79296 100644 --- a/src/undosend/undosendcombobox.cpp +++ b/src/undosend/undosendcombobox.cpp @@ -42,3 +42,9 @@ int UndoSendCombobox::delay() const { return currentData().toInt(); } + +void UndoSendCombobox::setDelay(int val) +{ + const int index = findData(val); + setCurrentIndex(index != -1 ? index : 0); +} diff --git a/src/undosend/undosendcombobox.h b/src/undosend/undosendcombobox.h index a27969568..e6d13e869 100644 --- a/src/undosend/undosendcombobox.h +++ b/src/undosend/undosendcombobox.h @@ -31,6 +31,7 @@ public: ~UndoSendCombobox(); Q_REQUIRED_RESULT int delay() const; + void setDelay(int val); private: void initialize(); };