KConfig

kemailsettings.cpp
1 /*
2  SPDX-FileCopyrightText: 2000 Alex Zepeda <zipzippy@sonic.net>
3 
4  SPDX-License-Identifier: BSD-2-Clause
5 */
6 
7 #include "kemailsettings.h"
8 
9 #include <kconfig.h>
10 #include <kconfiggroup.h>
11 
12 class KEMailSettingsPrivate
13 {
14 public:
15  KEMailSettingsPrivate()
16  : m_pConfig(nullptr)
17  {
18  }
19  ~KEMailSettingsPrivate()
20  {
21  delete m_pConfig;
22  }
23  KConfig *m_pConfig;
24  QStringList profiles;
25  QString m_sDefaultProfile, m_sCurrentProfile;
26 };
27 
29 {
30  return p->m_sDefaultProfile;
31 }
32 
34 {
35  KConfigGroup cg(p->m_pConfig, QLatin1String("PROFILE_") + p->m_sCurrentProfile);
36  switch (s) {
37  case ClientProgram: {
38  return cg.readEntry("EmailClient");
39  }
40  case ClientTerminal: {
41  return cg.readEntry("TerminalClient", QVariant(false)).toString();
42  }
43  case RealName: {
44  return cg.readEntry("FullName");
45  }
46  case EmailAddress: {
47  return cg.readEntry("EmailAddress");
48  }
49  case ReplyToAddress: {
50  return cg.readEntry("ReplyAddr");
51  }
52  case Organization: {
53  return cg.readEntry("Organization");
54  }
55  };
56  return QString();
57 }
59 {
60  KConfigGroup cg(p->m_pConfig, QLatin1String("PROFILE_") + p->m_sCurrentProfile);
61  switch (s) {
62  case ClientProgram: {
63  cg.writePathEntry("EmailClient", v);
64  break;
65  }
66  case ClientTerminal: {
67  cg.writeEntry("TerminalClient", (v == QLatin1String("true")));
68  break;
69  }
70  case RealName: {
71  cg.writeEntry("FullName", v);
72  break;
73  }
74  case EmailAddress: {
75  cg.writeEntry("EmailAddress", v);
76  break;
77  }
78  case ReplyToAddress: {
79  cg.writeEntry("ReplyAddr", v);
80  break;
81  }
82  case Organization: {
83  cg.writeEntry("Organization", v);
84  break;
85  }
86  };
87  cg.sync();
88 }
89 
91 {
92  p->m_pConfig->group(QStringLiteral("Defaults")).writeEntry("Profile", s);
93  p->m_pConfig->sync();
94  p->m_sDefaultProfile = s;
95 }
96 
98 {
99  const QString groupname = QLatin1String("PROFILE_") + s;
100  p->m_sCurrentProfile = s;
101  if (!p->m_pConfig->hasGroup(groupname)) { // Create a group if it doesn't exist
102  KConfigGroup cg(p->m_pConfig, groupname);
103  cg.writeEntry("ServerType", QString());
104  p->profiles += s;
105  }
106 }
107 
109 {
110  return p->profiles;
111 }
112 
114  : p(new KEMailSettingsPrivate())
115 {
116  p->m_sCurrentProfile.clear();
117 
118  p->m_pConfig = new KConfig(QStringLiteral("emaildefaults"));
119 
120  const QStringList groups = p->m_pConfig->groupList();
121  for (const auto &grp : groups) {
122  if (grp.startsWith(QLatin1String("PROFILE_"))) {
123  p->profiles += grp.mid(8 /* length of "PROFILE_" */);
124  }
125  }
126 
127  KConfigGroup cg(p->m_pConfig, QStringLiteral("Defaults"));
128  p->m_sDefaultProfile = cg.readEntry("Profile", tr("Default"));
129  if (!p->m_sDefaultProfile.isNull()) {
130  if (!p->m_pConfig->hasGroup(QLatin1String("PROFILE_") + p->m_sDefaultProfile)) {
131  setDefault(tr("Default"));
132  } else {
133  setDefault(p->m_sDefaultProfile);
134  }
135  } else {
136  if (!p->profiles.isEmpty()) {
137  setDefault(p->profiles[0]);
138  } else {
139  setDefault(tr("Default"));
140  }
141  }
143 }
144 
146 {
147  delete p;
148 }
void writeEntry(const QString &key, const QVariant &value, WriteConfigFlags pFlags=Normal)
Writes a value to the configuration object.
void setDefault(const QString &def)
Sets a new default.
Setting
The list of settings that I thought of when I wrote this class.
The central class of the KDE configuration data system.
Definition: kconfig.h:55
QString defaultProfileName() const
Returns the name of the default profile.
QString getSetting(KEMailSettings::Setting s) const
Get one of the predefined "basic" settings.
void writePathEntry(const QString &pKey, const QString &path, WriteConfigFlags pFlags=Normal)
Writes a file path to the configuration.
QStringList profiles() const
List of profiles available.
void setProfile(const QString &s)
Change the current profile.
T readEntry(const QString &key, const T &aDefault) const
Reads the value of an entry specified by pKey in the current group.
Definition: kconfiggroup.h:216
KEMailSettings()
Default constructor, just sets things up and sets the default profile as the current profile.
~KEMailSettings()
Default destructor, nothing to see here.
void setSetting(KEMailSettings::Setting s, const QString &v)
Set one of the predefined "basic" settings.
bool sync() override
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Thu Feb 15 2024 04:07:59 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.