diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -105,7 +105,7 @@
set(AKONADI_CONTACT_VERSION "5.2.80")
set(KCONTACTS_LIB_VERSION "5.2.81")
set(KCALENDARCORE_LIB_VERSION "5.2.80")
- set(IDENTITYMANAGEMENT_LIB_VERSION "5.2.80")
+ set(IDENTITYMANAGEMENT_LIB_VERSION "5.3.41")
set(KLDAP_LIB_VERSION "5.2.80")
set(KMAILTRANSPORT_LIB_VERSION "5.2.80")
set(CALENDARUTILS_LIB_VERSION "5.2.80")
@@ -137,7 +137,7 @@
set(LIBMAILIMPORTER_VERSION_LIB "5.2.80")
set(MAILCOMMON_LIB_VERSION_LIB "5.3.41")
set(KDEPIM_APPS_LIB_VERSION_LIB "5.2.80")
- set(MESSAGELIB_LIB_VERSION_LIB "5.3.41")
+ set(MESSAGELIB_LIB_VERSION_LIB "5.3.42")
set(LIBKLEO_LIB_VERSION_LIB "5.2.80")
set(LIBGRANTLEETHEME_LIB_VERSION_LIB "5.2.80")
set(PIMCOMMON_LIB_VERSION_LIB "5.3.41")
diff --git a/accountwizard/CMakeLists.txt b/accountwizard/CMakeLists.txt
--- a/accountwizard/CMakeLists.txt
+++ b/accountwizard/CMakeLists.txt
@@ -42,7 +42,7 @@
set(AKONADI_MIMELIB_VERSION "5.2.80")
set(AKONADI_CONTACT_VERSION "5.2.80")
set(KCONTACTS_LIB_VERSION "5.2.81")
- set(IDENTITYMANAGEMENT_LIB_VERSION "5.2.80")
+ set(IDENTITYMANAGEMENT_LIB_VERSION "5.3.41")
set(KLDAP_LIB_VERSION "5.2.80")
set(KMAILTRANSPORT_LIB_VERSION "5.2.80")
set(KPIMTEXTEDIT_LIB_VERSION "5.2.80")
diff --git a/accountwizard/src/identity.h b/accountwizard/src/identity.h
--- a/accountwizard/src/identity.h
+++ b/accountwizard/src/identity.h
@@ -49,6 +49,8 @@
Q_SCRIPTABLE void setTransport(QObject *transport);
Q_SCRIPTABLE void setPreferredCryptoMessageFormat(const QString &format);
Q_SCRIPTABLE void setXFace(const QString &xface);
+ Q_SCRIPTABLE void setPgpAutoSign(bool autosign);
+ Q_SCRIPTABLE void setPgpAutoEncrypt(bool autoencrypt);
protected:
QString identityName() const;
diff --git a/accountwizard/src/identity.cpp b/accountwizard/src/identity.cpp
--- a/accountwizard/src/identity.cpp
+++ b/accountwizard/src/identity.cpp
@@ -143,3 +143,12 @@
m_identity->setXFace(xface);
}
+void Identity::setPgpAutoEncrypt(bool autoencrypt)
+{
+ m_identity->setPgpAutoEncrypt(autoencrypt);
+}
+
+void Identity::setPgpAutoSign(bool autosign)
+{
+ m_identity->setPgpAutoSign(autosign);
+}
diff --git a/accountwizard/src/personaldatapage.cpp b/accountwizard/src/personaldatapage.cpp
--- a/accountwizard/src/personaldatapage.cpp
+++ b/accountwizard/src/personaldatapage.cpp
@@ -118,6 +118,11 @@
mSetupManager->setName(ui.nameEdit->text());
mSetupManager->setPassword(ui.passwordEdit->text());
mSetupManager->setEmail(ui.emailEdit->text().trimmed());
+ const int cryptoState = ui.comboBox->currentIndex();
+ mSetupManager->setPgpAutoEncrypt(cryptoState == 0 || // sign + encrypt
+ cryptoState == 2); // encrypt only
+ mSetupManager->setPgpAutoSign(cryptoState == 0 || // sign + encrypt
+ cryptoState == 1); // sign only
if (ui.checkOnlineGroupBox->isChecked()) {
// since the user can go back and forth, explicitly disable the man page
diff --git a/accountwizard/src/setupmanager.h b/accountwizard/src/setupmanager.h
--- a/accountwizard/src/setupmanager.h
+++ b/accountwizard/src/setupmanager.h
@@ -42,6 +42,8 @@
void setEmail(const QString &);
void setPassword(const QString &);
void setPersonalDataAvailable(bool available);
+ void setPgpAutoSign(bool autosign);
+ void setPgpAutoEncrypt(bool autoencrypt);
public Q_SLOTS:
Q_SCRIPTABLE bool personalDataAvailable();
@@ -83,6 +85,8 @@
KWallet::Wallet *m_wallet;
bool m_personalDataAvailable;
bool m_rollbackRequested;
+ bool m_pgpAutoSign;
+ bool m_pgpAutoEncrypt;
};
#endif
diff --git a/accountwizard/src/setupmanager.cpp b/accountwizard/src/setupmanager.cpp
--- a/accountwizard/src/setupmanager.cpp
+++ b/accountwizard/src/setupmanager.cpp
@@ -41,7 +41,9 @@
m_page(Q_NULLPTR),
m_wallet(Q_NULLPTR),
m_personalDataAvailable(false),
- m_rollbackRequested(false)
+ m_rollbackRequested(false),
+ m_pgpAutoSign(false),
+ m_pgpAutoEncrypt(false)
{
KEMailSettings e;
m_name = e.getSetting(KEMailSettings::RealName);
@@ -80,7 +82,12 @@
QObject *SetupManager::createIdentity()
{
- return connectObject(new Identity(this));
+ Identity *identity = new Identity(this);
+ identity->setEmail(m_email);
+ identity->setRealName(m_name);
+ identity->setPgpAutoSign(m_pgpAutoSign);
+ identity->setPgpAutoEncrypt(m_pgpAutoEncrypt);
+ return connectObject(identity);
}
static bool dependencyCompare(SetupObject *left, SetupObject *right)
@@ -217,6 +224,16 @@
return QLocale::countryToString(QLocale().country());
}
+void SetupManager::setPgpAutoEncrypt(bool autoencrypt)
+{
+ m_pgpAutoEncrypt = autoencrypt;
+}
+
+void SetupManager::setPgpAutoSign(bool autosign)
+{
+ m_pgpAutoSign = autosign;
+}
+
void SetupManager::openWallet()
{
using namespace KWallet;
diff --git a/accountwizard/src/ui/personaldatapage.ui b/accountwizard/src/ui/personaldatapage.ui
--- a/accountwizard/src/ui/personaldatapage.ui
+++ b/accountwizard/src/ui/personaldatapage.ui
@@ -95,6 +95,40 @@
+ -
+
+
+ Security:
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
-
+
+ Always sign and encrypt outgoing emails
+
+
+ -
+
+ Always sign outgoing emails
+
+
+ -
+
+ Always encrypt outgoing emails
+
+
+ -
+
+ Don't sign or encrypt outgoing emails
+
+
+
+
-
diff --git a/kmail/CMakeLists.txt b/kmail/CMakeLists.txt
--- a/kmail/CMakeLists.txt
+++ b/kmail/CMakeLists.txt
@@ -46,7 +46,7 @@
set(KCONTACTS_LIB_VERSION "5.2.81")
set(KCALENDARCORE_LIB_VERSION "5.2.80")
set(CALENDARUTILS_LIB_VERSION "5.2.80")
- set(IDENTITYMANAGEMENT_LIB_VERSION "5.2.80")
+ set(IDENTITYMANAGEMENT_LIB_VERSION "5.3.41")
set(KLDAP_LIB_VERSION "5.2.80")
set(KMAILTRANSPORT_LIB_VERSION "5.2.80")
set(GPGMEPP_LIB_VERSION "5.2.80")
@@ -64,7 +64,7 @@
set(LIBGRAVATAR_VERSION_LIB "5.2.80")
set(MAILCOMMON_LIB_VERSION_LIB "5.3.41")
set(KDEPIM_APPS_LIB_VERSION_LIB "5.2.80")
- set(MESSAGELIB_LIB_VERSION_LIB "5.3.41")
+ set(MESSAGELIB_LIB_VERSION_LIB "5.3.42")
set(LIBKLEO_LIB_VERSION_LIB "5.2.80")
set(PIMCOMMON_LIB_VERSION_LIB "5.3.41")
set(LIBKDEPIM_LIB_VERSION_LIB "5.2.80")
diff --git a/kmail/src/configuredialog/configuresecuritypage.cpp b/kmail/src/configuredialog/configuresecuritypage.cpp
--- a/kmail/src/configuredialog/configuresecuritypage.cpp
+++ b/kmail/src/configuredialog/configuresecuritypage.cpp
@@ -212,7 +212,6 @@
mWidget->setupUi(this);
connect(mWidget->mEncToSelf, &QCheckBox::toggled, this, &SecurityPageComposerCryptoTab::slotEmitChanged);
connect(mWidget->mShowKeyApprovalDlg, &QCheckBox::toggled, this, &SecurityPageComposerCryptoTab::slotEmitChanged);
- connect(mWidget->mAutoEncrypt, &QCheckBox::toggled, this, &SecurityPageComposerCryptoTab::slotEmitChanged);
connect(mWidget->mNeverEncryptWhenSavingInDrafts, &QCheckBox::toggled, this, &SecurityPageComposerCryptoTab::slotEmitChanged);
connect(mWidget->mStoreEncrypted, &QCheckBox::toggled, this, &SecurityPageComposerCryptoTab::slotEmitChanged);
connect(mWidget->mShowEncSignIndicator, &QCheckBox::toggled, this, &SecurityPageComposerCryptoTab::slotEmitChanged);
@@ -230,7 +229,6 @@
loadWidget(mWidget->mEncToSelf, MessageComposer::MessageComposerSettings::self()->cryptoEncryptToSelfItem());
loadWidget(mWidget->mShowKeyApprovalDlg, MessageComposer::MessageComposerSettings::self()->cryptoShowKeysForApprovalItem());
- loadWidget(mWidget->mAutoEncrypt, MessageComposer::MessageComposerSettings::self()->pgpAutoEncryptItem());
loadWidget(mWidget->mNeverEncryptWhenSavingInDrafts, KMailSettings::self()->neverEncryptDraftsItem());
loadWidget(mWidget->mStoreEncrypted, KMailSettings::self()->cryptoStoreEncryptedItem());
@@ -242,7 +240,6 @@
saveCheckBox(mWidget->mEncToSelf, MessageComposer::MessageComposerSettings::self()->cryptoEncryptToSelfItem());
saveCheckBox(mWidget->mShowKeyApprovalDlg, MessageComposer::MessageComposerSettings::self()->cryptoShowKeysForApprovalItem());
- saveCheckBox(mWidget->mAutoEncrypt, MessageComposer::MessageComposerSettings::self()->pgpAutoEncryptItem());
saveCheckBox(mWidget->mNeverEncryptWhenSavingInDrafts, KMailSettings::self()->neverEncryptDraftsItem());
saveCheckBox(mWidget->mStoreEncrypted, KMailSettings::self()->cryptoStoreEncryptedItem());
saveCheckBox(mWidget->mShowEncSignIndicator, KMailSettings::self()->showCryptoLabelIndicatorItem());
@@ -253,7 +250,6 @@
loadWidget(mWidget->mEncToSelf, MessageComposer::MessageComposerSettings::self()->cryptoEncryptToSelfItem());
loadWidget(mWidget->mShowKeyApprovalDlg, MessageComposer::MessageComposerSettings::self()->cryptoShowKeysForApprovalItem());
- loadWidget(mWidget->mAutoEncrypt, MessageComposer::MessageComposerSettings::self()->pgpAutoEncryptItem());
loadWidget(mWidget->mNeverEncryptWhenSavingInDrafts, KMailSettings::self()->neverEncryptDraftsItem());
loadWidget(mWidget->mStoreEncrypted, KMailSettings::self()->cryptoStoreEncryptedItem());
loadWidget(mWidget->mShowEncSignIndicator, KMailSettings::self()->showCryptoLabelIndicatorItem());
diff --git a/kmail/src/identity/identitydialog.h b/kmail/src/identity/identitydialog.h
--- a/kmail/src/identity/identitydialog.h
+++ b/kmail/src/identity/identitydialog.h
@@ -129,6 +129,7 @@
Kleo::EncryptionKeyRequester *mSMIMEEncryptionKeyRequester;
KComboBox *mPreferredCryptoMessageFormat;
QCheckBox *mAutoSign;
+ QCheckBox *mAutoEncrypt;
// "advanced" tab:
KLineEdit *mReplyToEdit;
KLineEdit *mBccEdit;
diff --git a/kmail/src/identity/identitydialog.cpp b/kmail/src/identity/identitydialog.cpp
--- a/kmail/src/identity/identitydialog.cpp
+++ b/kmail/src/identity/identitydialog.cpp
@@ -370,6 +370,10 @@
glay->addWidget(mAutoSign, row, 0);
++row;
+ mAutoEncrypt = new QCheckBox(i18n("Automatically encrypt messages when possible"));
+ glay->addWidget(mAutoEncrypt, row, 0);
+
+ ++row;
glay->setRowStretch(row, 1);
//
@@ -797,6 +801,7 @@
mPreferredCryptoMessageFormat->setCurrentIndex(format2cb(
Kleo::stringToCryptoMessageFormat(ident.preferredCryptoMessageFormat())));
mAutoSign->setChecked(ident.pgpAutoSign());
+ mAutoEncrypt->setChecked(ident.pgpAutoEncrypt());
// "Advanced" tab:
mReplyToEdit->setText(ident.replyToAddr());
@@ -895,6 +900,7 @@
ident.setPreferredCryptoMessageFormat(
QLatin1String(Kleo::cryptoMessageFormatToString(cb2format(mPreferredCryptoMessageFormat->currentIndex()))));
ident.setPgpAutoSign(mAutoSign->isChecked());
+ ident.setPgpAutoEncrypt(mAutoEncrypt->isChecked());
// "Advanced" tab:
ident.setReplyToAddr(mReplyToEdit->text());
ident.setBcc(mBccEdit->text());
diff --git a/kmail/src/kmmigrateapplication.h b/kmail/src/kmmigrateapplication.h
--- a/kmail/src/kmmigrateapplication.h
+++ b/kmail/src/kmmigrateapplication.h
@@ -30,6 +30,8 @@
void migrate();
private:
void initializeMigrator();
+ void migrateAlwaysEncrypt();
+
PimCommon::MigrateApplicationFiles mMigrator;
};
diff --git a/kmail/src/kmmigrateapplication.cpp b/kmail/src/kmmigrateapplication.cpp
--- a/kmail/src/kmmigrateapplication.cpp
+++ b/kmail/src/kmmigrateapplication.cpp
@@ -18,7 +18,9 @@
*/
#include "kmmigrateapplication.h"
-
+#include
+#include
+#include
#include
KMMigrateApplication::KMMigrateApplication()
@@ -41,6 +43,9 @@
if (mMigrator.checkIfNecessary()) {
mMigrator.start();
}
+
+ // Migrate global "Always encrypt" option to per-identity options
+ migrateAlwaysEncrypt();
}
void KMMigrateApplication::initializeMigrator()
@@ -102,3 +107,28 @@
migrateInfoVCardFromIdentity.setVersion(initialVersion);
mMigrator.insertMigrateInfo(migrateInfoVCardFromIdentity);
}
+
+void KMMigrateApplication::migrateAlwaysEncrypt()
+{
+ KConfig cfg(QStringLiteral("kmail2rc"));
+ if (!cfg.hasGroup("Composer")) {
+ return;
+ }
+
+ KConfigGroup grp = cfg.group("Composer");
+ if (!grp.hasKey("pgp-auto-encrypt")) {
+ return;
+ }
+
+ const bool pgpAutoEncrypt = grp.readEntry("pgp-auto-encrypt", false);
+ grp.deleteEntry("pgp-auto-encrypt");
+
+ // Only update the per-identity flag to true
+ if (pgpAutoEncrypt) {
+ KIdentityManagement::IdentityManager mgr;
+ for (auto iter = mgr.modifyBegin(), end = mgr.modifyEnd(); iter != end; ++iter) {
+ iter->setPgpAutoEncrypt(pgpAutoEncrypt);
+ }
+ mgr.commit();
+ }
+}
diff --git a/kmail/src/ui/composercryptoconfiguration.ui b/kmail/src/ui/composercryptoconfiguration.ui
--- a/kmail/src/ui/composercryptoconfiguration.ui
+++ b/kmail/src/ui/composercryptoconfiguration.ui
@@ -59,16 +59,6 @@
-
-
-
- When this option is enabled, every message you send will be encrypted whenever encryption is possible and desired; of course, it is still possible to disable the automatic encryption for each message individually.
-
-
- Automatically encrypt &messages whenever possible
-
-
-
- -
Never sign/encrypt when sa&ving as draft