File indexing completed on 2024-05-12 05:46:27
0001 /* 0002 * Copyright (c) 2000 Alex Zepeda <zipzippy@sonic.net> 0003 * All rights reserved. 0004 * 0005 * Redistribution and use in source and binary forms, with or without 0006 * modification, are permitted provided that the following conditions 0007 * are met: 0008 * 1. Redistributions of source code must retain the above copyright 0009 * notice, this list of conditions and the following disclaimer. 0010 * 2. Redistributions in binary form must reproduce the above copyright 0011 * notice, this list of conditions and the following disclaimer in the 0012 * documentation and/or other materials provided with the distribution. 0013 * 0014 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 0015 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 0016 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 0017 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 0018 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 0019 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 0020 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 0021 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 0022 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 0023 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 0024 * SUCH DAMAGE. 0025 */ 0026 0027 #include "kemailsettings.h" 0028 0029 #include <kconfig.h> 0030 #include <kconfiggroup.h> 0031 0032 class KEMailSettingsPrivate 0033 { 0034 public: 0035 KEMailSettingsPrivate() : m_pConfig(nullptr) {} 0036 ~KEMailSettingsPrivate() 0037 { 0038 delete m_pConfig; 0039 } 0040 KConfig *m_pConfig; 0041 QStringList profiles; 0042 QString m_sDefaultProfile, m_sCurrentProfile; 0043 }; 0044 0045 QString KEMailSettings::defaultProfileName() const 0046 { 0047 return p->m_sDefaultProfile; 0048 } 0049 0050 QString KEMailSettings::getSetting(KEMailSettings::Setting s) const 0051 { 0052 KConfigGroup cg(p->m_pConfig, QLatin1String("PROFILE_") + p->m_sCurrentProfile); 0053 switch (s) { 0054 case ClientProgram: { 0055 return cg.readEntry("EmailClient"); 0056 } 0057 case ClientTerminal: { 0058 return cg.readEntry("TerminalClient", QVariant(false)).toString(); 0059 } 0060 case RealName: { 0061 return cg.readEntry("FullName"); 0062 } 0063 case EmailAddress: { 0064 return cg.readEntry("EmailAddress"); 0065 } 0066 case ReplyToAddress: { 0067 return cg.readEntry("ReplyAddr"); 0068 } 0069 case Organization: { 0070 return cg.readEntry("Organization"); 0071 } 0072 case OutServer: { 0073 return cg.readEntry("OutgoingServer"); 0074 } 0075 case OutServerLogin: { 0076 return cg.readEntry("OutgoingUserName"); 0077 } 0078 case OutServerPass: { 0079 return cg.readEntry("OutgoingPassword"); 0080 } 0081 #if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0) 0082 case OutServerType: { 0083 return cg.readEntry("OutgoingServerType"); 0084 } 0085 case OutServerCommand: { 0086 return cg.readEntry("OutgoingCommand"); 0087 } 0088 case OutServerTLS: { 0089 return cg.readEntry("OutgoingServerTLS", QVariant(false)).toString(); 0090 } 0091 #else 0092 case OutServerType_DEPRECATED_DO_NOT_USE: 0093 case OutServerCommand_DEPRECATED_DO_NOT_USE: 0094 case OutServerTLS_DEPRECATED_DO_NOT_USE: 0095 break; 0096 #endif 0097 case InServer: { 0098 return cg.readEntry("IncomingServer"); 0099 } 0100 case InServerLogin: { 0101 return cg.readEntry("IncomingUserName"); 0102 } 0103 case InServerPass: { 0104 return cg.readEntry("IncomingPassword"); 0105 } 0106 #if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0) 0107 case InServerType: { 0108 return cg.readEntry("IncomingServerType"); 0109 } 0110 case InServerMBXType: { 0111 return cg.readEntry("IncomingServerMBXType"); 0112 } 0113 case InServerTLS: { 0114 return cg.readEntry("IncomingServerTLS", QVariant(false)).toString(); 0115 } 0116 #endif 0117 }; 0118 return QString(); 0119 } 0120 void KEMailSettings::setSetting(KEMailSettings::Setting s, const QString &v) 0121 { 0122 KConfigGroup cg(p->m_pConfig, QLatin1String("PROFILE_") + p->m_sCurrentProfile); 0123 switch (s) { 0124 case ClientProgram: { 0125 cg.writePathEntry("EmailClient", v); 0126 break; 0127 } 0128 case ClientTerminal: { 0129 cg.writeEntry("TerminalClient", (v == QLatin1String("true"))); 0130 break; 0131 } 0132 case RealName: { 0133 cg.writeEntry("FullName", v); 0134 break; 0135 } 0136 case EmailAddress: { 0137 cg.writeEntry("EmailAddress", v); 0138 break; 0139 } 0140 case ReplyToAddress: { 0141 cg.writeEntry("ReplyAddr", v); 0142 break; 0143 } 0144 case Organization: { 0145 cg.writeEntry("Organization", v); 0146 break; 0147 } 0148 case OutServer: { 0149 cg.writeEntry("OutgoingServer", v); 0150 break; 0151 } 0152 case OutServerLogin: { 0153 cg.writeEntry("OutgoingUserName", v); 0154 break; 0155 } 0156 case OutServerPass: { 0157 cg.writeEntry("OutgoingPassword", v); 0158 break; 0159 } 0160 #if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0) 0161 case OutServerType: { 0162 cg.writeEntry("OutgoingServerType", v); 0163 break; 0164 } 0165 case OutServerCommand: { 0166 cg.writeEntry("OutgoingCommand", v); 0167 break; 0168 } 0169 case OutServerTLS: { 0170 cg.writeEntry("OutgoingServerTLS", (v == QLatin1String("true"))); 0171 break; 0172 } 0173 #else 0174 case OutServerType_DEPRECATED_DO_NOT_USE: 0175 case OutServerCommand_DEPRECATED_DO_NOT_USE: 0176 case OutServerTLS_DEPRECATED_DO_NOT_USE: 0177 break; 0178 #endif 0179 case InServer: { 0180 cg.writeEntry("IncomingServer", v); 0181 break; 0182 } 0183 case InServerLogin: { 0184 cg.writeEntry("IncomingUserName", v); 0185 break; 0186 } 0187 case InServerPass: { 0188 cg.writeEntry("IncomingPassword", v); 0189 break; 0190 } 0191 #if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0) 0192 case InServerType: { 0193 cg.writeEntry("IncomingServerType", v); 0194 break; 0195 } 0196 case InServerMBXType: { 0197 cg.writeEntry("IncomingServerMBXType", v); 0198 break; 0199 } 0200 case InServerTLS: { 0201 cg.writeEntry("IncomingServerTLS", (v == QLatin1String("true"))); 0202 break; 0203 } 0204 #endif 0205 }; 0206 cg.sync(); 0207 } 0208 0209 void KEMailSettings::setDefault(const QString &s) 0210 { 0211 p->m_pConfig->group("Defaults").writeEntry("Profile", s); 0212 p->m_pConfig->sync(); 0213 p->m_sDefaultProfile = s; 0214 0215 } 0216 0217 void KEMailSettings::setProfile(const QString &s) 0218 { 0219 const QString groupname = QLatin1String("PROFILE_") + s; 0220 p->m_sCurrentProfile = s; 0221 if (!p->m_pConfig->hasGroup(groupname)) { // Create a group if it doesn't exist 0222 KConfigGroup cg(p->m_pConfig, groupname); 0223 cg.writeEntry("ServerType", QString()); 0224 p->profiles += s; 0225 } 0226 } 0227 0228 #if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0) 0229 QString KEMailSettings::currentProfileName() const 0230 { 0231 return p->m_sCurrentProfile; 0232 } 0233 #endif 0234 0235 QStringList KEMailSettings::profiles() const 0236 { 0237 return p->profiles; 0238 } 0239 0240 KEMailSettings::KEMailSettings() 0241 : p(new KEMailSettingsPrivate()) 0242 { 0243 p->m_sCurrentProfile.clear(); 0244 0245 p->m_pConfig = new KConfig(QStringLiteral("emaildefaults")); 0246 0247 const QStringList groups = p->m_pConfig->groupList(); 0248 for (QStringList::ConstIterator it = groups.begin(); it != groups.end(); ++it) { 0249 if ((*it).startsWith(QLatin1String("PROFILE_"))) { 0250 p->profiles += (*it).mid(8, (*it).length()); 0251 } 0252 } 0253 0254 KConfigGroup cg(p->m_pConfig, "Defaults"); 0255 p->m_sDefaultProfile = cg.readEntry("Profile", tr("Default")); 0256 if (!p->m_sDefaultProfile.isNull()) { 0257 if (!p->m_pConfig->hasGroup(QLatin1String("PROFILE_") + p->m_sDefaultProfile)) { 0258 setDefault(tr("Default")); 0259 } else { 0260 setDefault(p->m_sDefaultProfile); 0261 } 0262 } else { 0263 if (!p->profiles.isEmpty()) { 0264 setDefault(p->profiles[0]); 0265 } else { 0266 setDefault(tr("Default")); 0267 } 0268 } 0269 setProfile(defaultProfileName()); 0270 } 0271 0272 KEMailSettings::~KEMailSettings() 0273 { 0274 delete p; 0275 }