adconfigdatarw.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <kdebug.h>
00027 #include <kstandarddirs.h>
00028
00029 #include "adcalendar.h"
00030
00031 #include "adconfigdatarw.h"
00032
00033 void ADConfigDataRW::readDaemonData(bool sessionStarting)
00034 {
00035 kdDebug(5900) << "ADConfigDataRW::readDaemonData()" << endl;
00036
00037 KSimpleConfig clientConfig(clientDataFile());
00038
00039 ADCalendarFactory calFactory;
00040 bool cls, cals;
00041 QString newClients = readConfigData(sessionStarting, cls, cals, &calFactory);
00042 if (!newClients.isEmpty())
00043 {
00044
00045 clientConfig.setGroup("General");
00046 clientConfig.writeEntry(CLIENTS_KEY, newClients);
00047 }
00048
00049
00050 QStrList guis;
00051 clientConfig.readListEntry(GUIS_KEY, guis);
00052 bool writeNewGuis = false;
00053 QString newGuis;
00054 for (unsigned int i = 0; i < guis.count(); ++i)
00055 {
00056 QCString gui = guis.at(i);
00057 kdDebug(5900) << "ADConfigDataRW::readDaemonData(): gui: " << gui << endl;
00058 if (gui.isEmpty()
00059 || KStandardDirs::findExe(gui).isNull())
00060 {
00061
00062 if (!gui.isEmpty())
00063 clientConfig.deleteGroup(GUI_KEY + gui, true);
00064 writeNewGuis = true;
00065 }
00066 else
00067 {
00068
00069 QString groupKey = GUI_KEY + gui;
00070 clientConfig.setGroup(groupKey);
00071 QCString dcopObject = clientConfig.readEntry(CLIENT_DCOP_OBJECT_KEY).local8Bit();
00072 mGuis.insert(gui, dcopObject);
00073 if (!newGuis.isEmpty())
00074 newGuis += ',';
00075 newGuis += gui;
00076 }
00077 }
00078 if (writeNewGuis)
00079 {
00080
00081 clientConfig.setGroup("General");
00082 clientConfig.writeEntry(GUIS_KEY, newGuis);
00083 }
00084 }
00085
00086
00087
00088
00089
00090
00091 void ADConfigDataRW::writeConfigClient(const QCString& appName, const ClientInfo& cinfo)
00092 {
00093 KSimpleConfig clientConfig(clientDataFile());
00094 addConfigClient(clientConfig, appName, CLIENTS_KEY);
00095
00096 QString groupKey = CLIENT_KEY + appName;
00097 clientConfig.deleteGroup(groupKey, true);
00098
00099 clientConfig.setGroup(groupKey);
00100 clientConfig.writeEntry(CLIENT_TITLE_KEY, cinfo.title);
00101 if (!cinfo.dcopObject.isEmpty())
00102 clientConfig.writeEntry(CLIENT_DCOP_OBJECT_KEY, QString::fromLocal8Bit(cinfo.dcopObject));
00103 clientConfig.writeEntry(CLIENT_NOTIFICATION_KEY, cinfo.notificationType);
00104 clientConfig.writeEntry(CLIENT_DISP_CAL_KEY, cinfo.displayCalName);
00105 int i = 0;
00106 for (ADCalendarBase* cal = mCalendars.first(); cal; cal = mCalendars.next())
00107 {
00108 if (cal->appName() == appName)
00109 {
00110 cal->setRcIndex(++i);
00111 writeConfigCalendar(cal, clientConfig);
00112 }
00113 }
00114 }
00115
00116
00117
00118
00119 void ADConfigDataRW::writeConfigClientGui(const QCString& appName, const QString& dcopObject)
00120 {
00121 KSimpleConfig clientConfig(clientDataFile());
00122 addConfigClient(clientConfig, appName, GUIS_KEY);
00123
00124 QString groupKey = GUI_KEY + appName;
00125
00126 clientConfig.setGroup(groupKey);
00127 clientConfig.writeEntry(CLIENT_DCOP_OBJECT_KEY, dcopObject);
00128 }
00129
00130
00131
00132
00133 void ADConfigDataRW::addConfigClient(KSimpleConfig& clientConfig, const QCString& appName, const QString& key)
00134 {
00135 clientConfig.setGroup("General");
00136 QStringList clients = QStringList::split(',', clientConfig.readEntry(key), true);
00137 if (clients.find(appName) == clients.end())
00138 {
00139
00140 for (QStringList::Iterator i = clients.begin(); i != clients.end(); )
00141 {
00142 if ((*i).isEmpty())
00143 i = clients.remove(i);
00144 else
00145 ++i;
00146 }
00147 clients.append(appName);
00148 clientConfig.writeEntry(key, clients.join(","));
00149 }
00150 }
00151
00152
00153 void ADConfigDataRW::addConfigCalendar(const QCString& appName, ADCalendarBase* cal)
00154 {
00155 KSimpleConfig clientConfig(clientDataFile());
00156 QString groupKey = CLIENT_KEY + appName;
00157 QMap<QString, QString> entries = clientConfig.entryMap(groupKey);
00158
00159 for (int i = 1; ; ++i)
00160 {
00161 QString key = CLIENT_CALENDAR_KEY + QString::number(i);
00162 if (entries.find(key) == entries.end())
00163 {
00164
00165 cal->setRcIndex(i);
00166 writeConfigCalendar(cal, clientConfig);
00167 return;
00168 }
00169 }
00170 }
00171
00172
00173 void ADConfigDataRW::writeConfigCalendar(const ADCalendarBase* cal)
00174 {
00175 if (cal->rcIndex() > 0)
00176 {
00177 KSimpleConfig clientConfig(clientDataFile());
00178 writeConfigCalendar(cal, clientConfig);
00179 }
00180 }
00181
00182
00183 void ADConfigDataRW::writeConfigCalendar(const ADCalendarBase* cal, KSimpleConfig& clientConfig)
00184 {
00185 if (cal->rcIndex() > 0)
00186 {
00187 clientConfig.setGroup(CLIENT_KEY + cal->appName());
00188 QString dt;
00189 if (cal->lastCheck().isValid())
00190 dt = QString::number(baseDateTime().secsTo(cal->lastCheck()));
00191 clientConfig.writeEntry(CLIENT_CALENDAR_KEY + QString::number(cal->rcIndex()),
00192 QString("%1,%2,%3").arg(cal->actionType()).arg(dt).arg(cal->urlString()));
00193 }
00194 }
00195
00196
00197
00198
00199 void ADConfigDataRW::deleteConfigCalendar(const ADCalendarBase* cal)
00200 {
00201 KSimpleConfig clientConfig(clientDataFile());
00202 QString groupKey = CLIENT_KEY + cal->appName();
00203 int len = CLIENT_CALENDAR_KEY.length();
00204 QMap<QString, QString> entries = clientConfig.entryMap(groupKey);
00205 for (QMap<QString, QString>::ConstIterator it = entries.begin(); it != entries.end(); ++it)
00206 {
00207 if (it.key().startsWith(CLIENT_CALENDAR_KEY))
00208 {
00209 bool ok;
00210 it.key().mid(len).toInt(&ok);
00211 if (ok)
00212 {
00213
00214 int comma = it.data().find(',');
00215 if (comma >= 0 && it.data().mid(comma + 1) == cal->urlString())
00216 {
00217 clientConfig.setGroup(groupKey);
00218 clientConfig.deleteEntry(it.key(), true);
00219 }
00220 }
00221 }
00222 }
00223 }
00224
00225
00226
00227
00228 void ADConfigDataRW::sync()
00229 {
00230 KSimpleConfig clientConfig(clientDataFile());
00231 clientConfig.sync();
00232 }
This file is part of the documentation for kalarmd Library Version 3.2.2.