From da98e6929e330d1f5a469d3dca3b832053d476fe Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20Kundr=C3=A1t?= Date: Sat, 8 Dec 2012 01:21:53 +0100 Subject: [PATCH] Settings: implement loading & saving of multiple identities --- src/Common/SettingsNames.cpp | 7 ++++-- src/Common/SettingsNames.h | 2 +- src/Composer/SenderIdentitiesModel.cpp | 39 +++++++++++++++++++++++++--------- src/Composer/SenderIdentitiesModel.h | 2 +- 4 files changed, 36 insertions(+), 14 deletions(-) diff --git a/src/Common/SettingsNames.cpp b/src/Common/SettingsNames.cpp index c88e5874..8871010e 100644 --- a/src/Common/SettingsNames.cpp +++ b/src/Common/SettingsNames.cpp @@ -24,8 +24,11 @@ namespace Common { -QString SettingsNames::realNameKey = QLatin1String("identity.realName"); -QString SettingsNames::addressKey = QLatin1String("identity.address"); +QString SettingsNames::identitiesKey = QLatin1String("identities"); +QString SettingsNames::realNameKey = QLatin1String("realName"); +QString SettingsNames::addressKey = QLatin1String("address"); +QString SettingsNames::obsRealNameKey = QLatin1String("identity.realName"); +QString SettingsNames::obsAddressKey = QLatin1String("identity.address"); QString SettingsNames::msaMethodKey = QLatin1String("msa.method"); QString SettingsNames::methodSMTP = QLatin1String("SMTP"); QString SettingsNames::methodSSMTP = QLatin1String("SSMTP"); diff --git a/src/Common/SettingsNames.h b/src/Common/SettingsNames.h index d6a3cbfc..4a5bf719 100644 --- a/src/Common/SettingsNames.h +++ b/src/Common/SettingsNames.h @@ -28,7 +28,7 @@ namespace Common { struct SettingsNames { - static QString realNameKey, addressKey; + static QString identitiesKey, realNameKey, addressKey, obsRealNameKey, obsAddressKey; static QString msaMethodKey, methodSMTP, methodSSMTP, methodSENDMAIL, methodImapSendmail, smtpHostKey, smtpPortKey, smtpAuthKey, smtpStartTlsKey, smtpUserKey, smtpPassKey, sendmailKey, sendmailDefaultCmd; diff --git a/src/Composer/SenderIdentitiesModel.cpp b/src/Composer/SenderIdentitiesModel.cpp index 5e05773a..877272b5 100644 --- a/src/Composer/SenderIdentitiesModel.cpp +++ b/src/Composer/SenderIdentitiesModel.cpp @@ -124,26 +124,45 @@ void SenderIdentitiesModel::removeIdentityAt(const int position) endRemoveRows(); } -void SenderIdentitiesModel::loadFromSettings(const QSettings &s) +void SenderIdentitiesModel::loadFromSettings(QSettings &s) { beginResetModel(); m_identities.clear(); - // FIXME: replace this block with support for multiple identities - m_identities << ItemSenderIdentity( - s.value(Common::SettingsNames::realNameKey).toString(), - s.value(Common::SettingsNames::addressKey).toString()); + int num = s.beginReadArray(Common::SettingsNames::identitiesKey); + if (num == 0) { + s.endArray(); + // Load from the older format where only one identity was supported + m_identities << ItemSenderIdentity( + s.value(Common::SettingsNames::obsRealNameKey).toString(), + s.value(Common::SettingsNames::obsAddressKey).toString()); + // Thrash the old settings, replace with the new format + saveToSettings(s); + } else { + // The new format with multiple identities + for (int i = 0; i < num; ++i) { + s.setArrayIndex(i); + m_identities << ItemSenderIdentity( + s.value(Common::SettingsNames::realNameKey).toString(), + s.value(Common::SettingsNames::addressKey).toString()); + } + s.endArray(); + } + endResetModel(); } void SenderIdentitiesModel::saveToSettings(QSettings &s) const { - // FIXME: replace this with support for multiple identities - - if (m_identities.size() == 1) { - s.setValue(Common::SettingsNames::realNameKey, m_identities[0].realName); - s.setValue(Common::SettingsNames::addressKey, m_identities[0].emailAddress); + s.beginWriteArray(Common::SettingsNames::identitiesKey); + for (int i = 0; i < m_identities.size(); ++i) { + s.setArrayIndex(i); + s.setValue(Common::SettingsNames::realNameKey, m_identities[i].realName); + s.setValue(Common::SettingsNames::addressKey, m_identities[i].emailAddress); } + s.endArray(); + s.remove(Common::SettingsNames::obsRealNameKey); + s.remove(Common::SettingsNames::obsAddressKey); } } diff --git a/src/Composer/SenderIdentitiesModel.h b/src/Composer/SenderIdentitiesModel.h index 7d78c691..5b5745bb 100644 --- a/src/Composer/SenderIdentitiesModel.h +++ b/src/Composer/SenderIdentitiesModel.h @@ -58,7 +58,7 @@ public: void removeIdentityAt(const int position); /** @short Replace the contents of this model by data read from a QSettings instance */ - void loadFromSettings(const QSettings &s); + void loadFromSettings(QSettings &s); /** @short Save the data into a QSettings instance */ void saveToSettings(QSettings &s) const; -- 2.11.4.GIT