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 }