File indexing completed on 2024-05-12 03:54:27

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     };
0056     return QString();
0057 }
0058 void KEMailSettings::setSetting(KEMailSettings::Setting s, const QString &v)
0059 {
0060     KConfigGroup cg(p->m_pConfig, QLatin1String("PROFILE_") + p->m_sCurrentProfile);
0061     switch (s) {
0062     case ClientProgram: {
0063         cg.writePathEntry("EmailClient", v);
0064         break;
0065     }
0066     case ClientTerminal: {
0067         cg.writeEntry("TerminalClient", (v == QLatin1String("true")));
0068         break;
0069     }
0070     case RealName: {
0071         cg.writeEntry("FullName", v);
0072         break;
0073     }
0074     case EmailAddress: {
0075         cg.writeEntry("EmailAddress", v);
0076         break;
0077     }
0078     case ReplyToAddress: {
0079         cg.writeEntry("ReplyAddr", v);
0080         break;
0081     }
0082     case Organization: {
0083         cg.writeEntry("Organization", v);
0084         break;
0085     }
0086     };
0087     cg.sync();
0088 }
0089 
0090 void KEMailSettings::setDefault(const QString &s)
0091 {
0092     p->m_pConfig->group(QStringLiteral("Defaults")).writeEntry("Profile", s);
0093     p->m_pConfig->sync();
0094     p->m_sDefaultProfile = s;
0095 }
0096 
0097 void KEMailSettings::setProfile(const QString &s)
0098 {
0099     const QString groupname = QLatin1String("PROFILE_") + s;
0100     p->m_sCurrentProfile = s;
0101     if (!p->m_pConfig->hasGroup(groupname)) { // Create a group if it doesn't exist
0102         KConfigGroup cg(p->m_pConfig, groupname);
0103         cg.writeEntry("ServerType", QString());
0104         p->profiles += s;
0105     }
0106 }
0107 
0108 QStringList KEMailSettings::profiles() const
0109 {
0110     return p->profiles;
0111 }
0112 
0113 KEMailSettings::KEMailSettings()
0114     : p(new KEMailSettingsPrivate())
0115 {
0116     p->m_sCurrentProfile.clear();
0117 
0118     p->m_pConfig = new KConfig(QStringLiteral("emaildefaults"));
0119 
0120     const QStringList groups = p->m_pConfig->groupList();
0121     for (const auto &grp : groups) {
0122         if (grp.startsWith(QLatin1String("PROFILE_"))) {
0123             p->profiles += grp.mid(8 /* length of "PROFILE_" */);
0124         }
0125     }
0126 
0127     KConfigGroup cg(p->m_pConfig, QStringLiteral("Defaults"));
0128     p->m_sDefaultProfile = cg.readEntry("Profile", tr("Default"));
0129     if (!p->m_sDefaultProfile.isNull()) {
0130         if (!p->m_pConfig->hasGroup(QLatin1String("PROFILE_") + p->m_sDefaultProfile)) {
0131             setDefault(tr("Default"));
0132         } else {
0133             setDefault(p->m_sDefaultProfile);
0134         }
0135     } else {
0136         if (!p->profiles.isEmpty()) {
0137             setDefault(p->profiles[0]);
0138         } else {
0139             setDefault(tr("Default"));
0140         }
0141     }
0142     setProfile(defaultProfileName());
0143 }
0144 
0145 KEMailSettings::~KEMailSettings()
0146 {
0147     delete p;
0148 }