File indexing completed on 2024-05-12 15:34:12

0001 /*
0002     SPDX-FileCopyrightText: 2000 Alex Zepeda <zipzippy@sonic.net>
0003 
0004     SPDX-License-Identifier: BSD-2-Clause
0005 */
0006 
0007 #include "kemailsettings.h"
0008 
0009 #include <kconfig.h>
0010 #include <kconfiggroup.h>
0011 
0012 class KEMailSettingsPrivate
0013 {
0014 public:
0015     KEMailSettingsPrivate()
0016         : m_pConfig(nullptr)
0017     {
0018     }
0019     ~KEMailSettingsPrivate()
0020     {
0021         delete m_pConfig;
0022     }
0023     KConfig *m_pConfig;
0024     QStringList profiles;
0025     QString m_sDefaultProfile, m_sCurrentProfile;
0026 };
0027 
0028 QString KEMailSettings::defaultProfileName() const
0029 {
0030     return p->m_sDefaultProfile;
0031 }
0032 
0033 QString KEMailSettings::getSetting(KEMailSettings::Setting s) const
0034 {
0035     KConfigGroup cg(p->m_pConfig, QLatin1String("PROFILE_") + p->m_sCurrentProfile);
0036     switch (s) {
0037     case ClientProgram: {
0038         return cg.readEntry("EmailClient");
0039     }
0040     case ClientTerminal: {
0041         return cg.readEntry("TerminalClient", QVariant(false)).toString();
0042     }
0043     case RealName: {
0044         return cg.readEntry("FullName");
0045     }
0046     case EmailAddress: {
0047         return cg.readEntry("EmailAddress");
0048     }
0049     case ReplyToAddress: {
0050         return cg.readEntry("ReplyAddr");
0051     }
0052     case Organization: {
0053         return cg.readEntry("Organization");
0054     }
0055     case OutServer: {
0056         return cg.readEntry("OutgoingServer");
0057     }
0058     case OutServerLogin: {
0059         return cg.readEntry("OutgoingUserName");
0060     }
0061     case OutServerPass: {
0062         return cg.readEntry("OutgoingPassword");
0063     }
0064 #if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0)
0065     case OutServerType: {
0066         return cg.readEntry("OutgoingServerType");
0067     }
0068     case OutServerCommand: {
0069         return cg.readEntry("OutgoingCommand");
0070     }
0071     case OutServerTLS: {
0072         return cg.readEntry("OutgoingServerTLS", QVariant(false)).toString();
0073     }
0074 #else
0075     case OutServerType_DEPRECATED_DO_NOT_USE:
0076     case OutServerCommand_DEPRECATED_DO_NOT_USE:
0077     case OutServerTLS_DEPRECATED_DO_NOT_USE:
0078         break;
0079 #endif
0080     case InServer: {
0081         return cg.readEntry("IncomingServer");
0082     }
0083     case InServerLogin: {
0084         return cg.readEntry("IncomingUserName");
0085     }
0086     case InServerPass: {
0087         return cg.readEntry("IncomingPassword");
0088     }
0089 #if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0)
0090     case InServerType: {
0091         return cg.readEntry("IncomingServerType");
0092     }
0093     case InServerMBXType: {
0094         return cg.readEntry("IncomingServerMBXType");
0095     }
0096     case InServerTLS: {
0097         return cg.readEntry("IncomingServerTLS", QVariant(false)).toString();
0098     }
0099 #endif
0100     };
0101     return QString();
0102 }
0103 void KEMailSettings::setSetting(KEMailSettings::Setting s, const QString &v)
0104 {
0105     KConfigGroup cg(p->m_pConfig, QLatin1String("PROFILE_") + p->m_sCurrentProfile);
0106     switch (s) {
0107     case ClientProgram: {
0108         cg.writePathEntry("EmailClient", v);
0109         break;
0110     }
0111     case ClientTerminal: {
0112         cg.writeEntry("TerminalClient", (v == QLatin1String("true")));
0113         break;
0114     }
0115     case RealName: {
0116         cg.writeEntry("FullName", v);
0117         break;
0118     }
0119     case EmailAddress: {
0120         cg.writeEntry("EmailAddress", v);
0121         break;
0122     }
0123     case ReplyToAddress: {
0124         cg.writeEntry("ReplyAddr", v);
0125         break;
0126     }
0127     case Organization: {
0128         cg.writeEntry("Organization", v);
0129         break;
0130     }
0131     case OutServer: {
0132         cg.writeEntry("OutgoingServer", v);
0133         break;
0134     }
0135     case OutServerLogin: {
0136         cg.writeEntry("OutgoingUserName", v);
0137         break;
0138     }
0139     case OutServerPass: {
0140         cg.writeEntry("OutgoingPassword", v);
0141         break;
0142     }
0143 #if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0)
0144     case OutServerType: {
0145         cg.writeEntry("OutgoingServerType", v);
0146         break;
0147     }
0148     case OutServerCommand: {
0149         cg.writeEntry("OutgoingCommand", v);
0150         break;
0151     }
0152     case OutServerTLS: {
0153         cg.writeEntry("OutgoingServerTLS", (v == QLatin1String("true")));
0154         break;
0155     }
0156 #else
0157     case OutServerType_DEPRECATED_DO_NOT_USE:
0158     case OutServerCommand_DEPRECATED_DO_NOT_USE:
0159     case OutServerTLS_DEPRECATED_DO_NOT_USE:
0160         break;
0161 #endif
0162     case InServer: {
0163         cg.writeEntry("IncomingServer", v);
0164         break;
0165     }
0166     case InServerLogin: {
0167         cg.writeEntry("IncomingUserName", v);
0168         break;
0169     }
0170     case InServerPass: {
0171         cg.writeEntry("IncomingPassword", v);
0172         break;
0173     }
0174 #if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0)
0175     case InServerType: {
0176         cg.writeEntry("IncomingServerType", v);
0177         break;
0178     }
0179     case InServerMBXType: {
0180         cg.writeEntry("IncomingServerMBXType", v);
0181         break;
0182     }
0183     case InServerTLS: {
0184         cg.writeEntry("IncomingServerTLS", (v == QLatin1String("true")));
0185         break;
0186     }
0187 #endif
0188     };
0189     cg.sync();
0190 }
0191 
0192 void KEMailSettings::setDefault(const QString &s)
0193 {
0194     p->m_pConfig->group("Defaults").writeEntry("Profile", s);
0195     p->m_pConfig->sync();
0196     p->m_sDefaultProfile = s;
0197 }
0198 
0199 void KEMailSettings::setProfile(const QString &s)
0200 {
0201     const QString groupname = QLatin1String("PROFILE_") + s;
0202     p->m_sCurrentProfile = s;
0203     if (!p->m_pConfig->hasGroup(groupname)) { // Create a group if it doesn't exist
0204         KConfigGroup cg(p->m_pConfig, groupname);
0205         cg.writeEntry("ServerType", QString());
0206         p->profiles += s;
0207     }
0208 }
0209 
0210 #if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0)
0211 QString KEMailSettings::currentProfileName() const
0212 {
0213     return p->m_sCurrentProfile;
0214 }
0215 #endif
0216 
0217 QStringList KEMailSettings::profiles() const
0218 {
0219     return p->profiles;
0220 }
0221 
0222 KEMailSettings::KEMailSettings()
0223     : p(new KEMailSettingsPrivate())
0224 {
0225     p->m_sCurrentProfile.clear();
0226 
0227     p->m_pConfig = new KConfig(QStringLiteral("emaildefaults"));
0228 
0229     const QStringList groups = p->m_pConfig->groupList();
0230     for (const auto &grp : groups) {
0231         if (grp.startsWith(QLatin1String("PROFILE_"))) {
0232             p->profiles += grp.mid(8 /* length of "PROFILE_" */);
0233         }
0234     }
0235 
0236     KConfigGroup cg(p->m_pConfig, "Defaults");
0237     p->m_sDefaultProfile = cg.readEntry("Profile", tr("Default"));
0238     if (!p->m_sDefaultProfile.isNull()) {
0239         if (!p->m_pConfig->hasGroup(QLatin1String("PROFILE_") + p->m_sDefaultProfile)) {
0240             setDefault(tr("Default"));
0241         } else {
0242             setDefault(p->m_sDefaultProfile);
0243         }
0244     } else {
0245         if (!p->profiles.isEmpty()) {
0246             setDefault(p->profiles[0]);
0247         } else {
0248             setDefault(tr("Default"));
0249         }
0250     }
0251     setProfile(defaultProfileName());
0252 }
0253 
0254 KEMailSettings::~KEMailSettings()
0255 {
0256     delete p;
0257 }