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 }