/* SPDX-FileCopyrightText: 2000 Alex Zepeda SPDX-License-Identifier: BSD-2-Clause */ #include "kemailsettings.h" #include #include class KEMailSettingsPrivate { public: KEMailSettingsPrivate() : m_pConfig(nullptr) { } ~KEMailSettingsPrivate() { delete m_pConfig; } KConfig *m_pConfig; QStringList profiles; QString m_sDefaultProfile, m_sCurrentProfile; }; QString KEMailSettings::defaultProfileName() const { return p->m_sDefaultProfile; } QString KEMailSettings::getSetting(KEMailSettings::Setting s) const { KConfigGroup cg(p->m_pConfig, QLatin1String("PROFILE_") + p->m_sCurrentProfile); switch (s) { case ClientProgram: { return cg.readEntry("EmailClient"); } case ClientTerminal: { return cg.readEntry("TerminalClient", QVariant(false)).toString(); } case RealName: { return cg.readEntry("FullName"); } case EmailAddress: { return cg.readEntry("EmailAddress"); } case ReplyToAddress: { return cg.readEntry("ReplyAddr"); } case Organization: { return cg.readEntry("Organization"); } case OutServer: { return cg.readEntry("OutgoingServer"); } case OutServerLogin: { return cg.readEntry("OutgoingUserName"); } case OutServerPass: { return cg.readEntry("OutgoingPassword"); } #if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0) case OutServerType: { return cg.readEntry("OutgoingServerType"); } case OutServerCommand: { return cg.readEntry("OutgoingCommand"); } case OutServerTLS: { return cg.readEntry("OutgoingServerTLS", QVariant(false)).toString(); } #else case OutServerType_DEPRECATED_DO_NOT_USE: case OutServerCommand_DEPRECATED_DO_NOT_USE: case OutServerTLS_DEPRECATED_DO_NOT_USE: break; #endif case InServer: { return cg.readEntry("IncomingServer"); } case InServerLogin: { return cg.readEntry("IncomingUserName"); } case InServerPass: { return cg.readEntry("IncomingPassword"); } #if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0) case InServerType: { return cg.readEntry("IncomingServerType"); } case InServerMBXType: { return cg.readEntry("IncomingServerMBXType"); } case InServerTLS: { return cg.readEntry("IncomingServerTLS", QVariant(false)).toString(); } #endif }; return QString(); } void KEMailSettings::setSetting(KEMailSettings::Setting s, const QString &v) { KConfigGroup cg(p->m_pConfig, QLatin1String("PROFILE_") + p->m_sCurrentProfile); switch (s) { case ClientProgram: { cg.writePathEntry("EmailClient", v); break; } case ClientTerminal: { cg.writeEntry("TerminalClient", (v == QLatin1String("true"))); break; } case RealName: { cg.writeEntry("FullName", v); break; } case EmailAddress: { cg.writeEntry("EmailAddress", v); break; } case ReplyToAddress: { cg.writeEntry("ReplyAddr", v); break; } case Organization: { cg.writeEntry("Organization", v); break; } case OutServer: { cg.writeEntry("OutgoingServer", v); break; } case OutServerLogin: { cg.writeEntry("OutgoingUserName", v); break; } case OutServerPass: { cg.writeEntry("OutgoingPassword", v); break; } #if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0) case OutServerType: { cg.writeEntry("OutgoingServerType", v); break; } case OutServerCommand: { cg.writeEntry("OutgoingCommand", v); break; } case OutServerTLS: { cg.writeEntry("OutgoingServerTLS", (v == QLatin1String("true"))); break; } #else case OutServerType_DEPRECATED_DO_NOT_USE: case OutServerCommand_DEPRECATED_DO_NOT_USE: case OutServerTLS_DEPRECATED_DO_NOT_USE: break; #endif case InServer: { cg.writeEntry("IncomingServer", v); break; } case InServerLogin: { cg.writeEntry("IncomingUserName", v); break; } case InServerPass: { cg.writeEntry("IncomingPassword", v); break; } #if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0) case InServerType: { cg.writeEntry("IncomingServerType", v); break; } case InServerMBXType: { cg.writeEntry("IncomingServerMBXType", v); break; } case InServerTLS: { cg.writeEntry("IncomingServerTLS", (v == QLatin1String("true"))); break; } #endif }; cg.sync(); } void KEMailSettings::setDefault(const QString &s) { p->m_pConfig->group("Defaults").writeEntry("Profile", s); p->m_pConfig->sync(); p->m_sDefaultProfile = s; } void KEMailSettings::setProfile(const QString &s) { const QString groupname = QLatin1String("PROFILE_") + s; p->m_sCurrentProfile = s; if (!p->m_pConfig->hasGroup(groupname)) { // Create a group if it doesn't exist KConfigGroup cg(p->m_pConfig, groupname); cg.writeEntry("ServerType", QString()); p->profiles += s; } } #if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0) QString KEMailSettings::currentProfileName() const { return p->m_sCurrentProfile; } #endif QStringList KEMailSettings::profiles() const { return p->profiles; } KEMailSettings::KEMailSettings() : p(new KEMailSettingsPrivate()) { p->m_sCurrentProfile.clear(); p->m_pConfig = new KConfig(QStringLiteral("emaildefaults")); const QStringList groups = p->m_pConfig->groupList(); for (const auto &grp : groups) { if (grp.startsWith(QLatin1String("PROFILE_"))) { p->profiles += grp.mid(8 /* length of "PROFILE_" */); } } KConfigGroup cg(p->m_pConfig, "Defaults"); p->m_sDefaultProfile = cg.readEntry("Profile", tr("Default")); if (!p->m_sDefaultProfile.isNull()) { if (!p->m_pConfig->hasGroup(QLatin1String("PROFILE_") + p->m_sDefaultProfile)) { setDefault(tr("Default")); } else { setDefault(p->m_sDefaultProfile); } } else { if (!p->profiles.isEmpty()) { setDefault(p->profiles[0]); } else { setDefault(tr("Default")); } } setProfile(defaultProfileName()); } KEMailSettings::~KEMailSettings() { delete p; }