summaryrefslogtreecommitdiffabout
authorulf69 <ulf69>2004-10-15 18:16:21 (UTC)
committer ulf69 <ulf69>2004-10-15 18:16:21 (UTC)
commitb7fbbfff6b939278cb7665d78b2615c77856ce7d (patch) (unidiff)
tree7972f1ca12eba5b163fcc72d0833477c5321c15f
parent51f5d242a0acc53ca0135e32bb7a329b367f855f (diff)
downloadkdepimpi-b7fbbfff6b939278cb7665d78b2615c77856ce7d.zip
kdepimpi-b7fbbfff6b939278cb7665d78b2615c77856ce7d.tar.gz
kdepimpi-b7fbbfff6b939278cb7665d78b2615c77856ce7d.tar.bz2
removed debug output for release builds
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--pwmanager/pwmanager/serializer.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/pwmanager/pwmanager/serializer.cpp b/pwmanager/pwmanager/serializer.cpp
index 74b3354..203f82c 100644
--- a/pwmanager/pwmanager/serializer.cpp
+++ b/pwmanager/pwmanager/serializer.cpp
@@ -1,756 +1,756 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * copyright (C) 2004 by Michael Buesch * 3 * copyright (C) 2004 by Michael Buesch *
4 * email: mbuesch@freenet.de * 4 * email: mbuesch@freenet.de *
5 * * 5 * *
6 * This program is free software; you can redistribute it and/or modify * 6 * This program is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License version 2 * 7 * it under the terms of the GNU General Public License version 2 *
8 * as published by the Free Software Foundation. * 8 * as published by the Free Software Foundation. *
9 * * 9 * *
10 ***************************************************************************/ 10 ***************************************************************************/
11 11
12 12
13/*************************************************************************** 13/***************************************************************************
14 * copyright (C) 2004 by Ulf Schenk 14 * copyright (C) 2004 by Ulf Schenk
15 * This file is originaly based on version 2.0 of pwmanager 15 * This file is originaly based on version 2.0 of pwmanager
16 * and was modified to run on embedded devices that run microkde 16 * and was modified to run on embedded devices that run microkde
17 * 17 *
18 * $Id$ 18 * $Id$
19 **************************************************************************/ 19 **************************************************************************/
20 20
21#include "serializer.h" 21#include "serializer.h"
22#include "pwmexception.h" 22#include "pwmexception.h"
23 23
24#ifdef PWM_EMBEDDED 24#ifdef PWM_EMBEDDED
25#include <kglobal.h> 25#include <kglobal.h>
26#include <klocale.h> 26#include <klocale.h>
27#endif 27#endif
28 28
29/* enable/disable serializer debugging (0/1) */ 29/* enable/disable serializer debugging (0/1) */
30 #define SERIALIZER_DEBUG1 30 #define SERIALIZER_DEBUG0
31/* use the old xml tags for writing (0/1) */ 31/* use the old xml tags for writing (0/1) */
32 #define USE_OLD_TAGS 0 32 #define USE_OLD_TAGS 0
33/* write a CDATA section (0/1) */ 33/* write a CDATA section (0/1) */
34 #define WRITE_CDATA_SEC 0 34 #define WRITE_CDATA_SEC 0
35 35
36 36
37 #define META_CREATE_DATE"c" 37 #define META_CREATE_DATE"c"
38 #define META_VALID_DATE "v" 38 #define META_VALID_DATE "v"
39 #define META_EXPIRE_DATE"e" 39 #define META_EXPIRE_DATE"e"
40 #define META_UPDATE_DATE"u" 40 #define META_UPDATE_DATE"u"
41 #define META_UPDATE_INT "i" 41 #define META_UPDATE_INT "i"
42//US ENH : uniqueid 42//US ENH : uniqueid
43#define META_UNIQUEID "n" 43#define META_UNIQUEID "n"
44#define SYNC_ROOT "s" 44#define SYNC_ROOT "s"
45#define SYNC_TARGET_PREFIX "t" 45#define SYNC_TARGET_PREFIX "t"
46#define SYNC_TARGET_NAME "n" 46#define SYNC_TARGET_NAME "n"
47 47
48 48
49/* This is compatibility stuff. 49/* This is compatibility stuff.
50 * The names of the entries have changed and here are the 50 * The names of the entries have changed and here are the
51 * new and old ones 51 * new and old ones
52 */ 52 */
53 #define ROOT_MAGIC_OLD "PwM-xml-dat" 53 #define ROOT_MAGIC_OLD "PwM-xml-dat"
54 #define VER_STR_OLD "ver" 54 #define VER_STR_OLD "ver"
55 #define COMPAT_VER_OLD "0x02" 55 #define COMPAT_VER_OLD "0x02"
56 #define CAT_ROOT_OLD "categories" 56 #define CAT_ROOT_OLD "categories"
57 #define CAT_PREFIX_OLD "cat_" 57 #define CAT_PREFIX_OLD "cat_"
58 #define CAT_NAME_OLD "name" 58 #define CAT_NAME_OLD "name"
59 #define ENTRY_PREFIX_OLD"entry_" 59 #define ENTRY_PREFIX_OLD"entry_"
60 #define ENTRY_DESC_OLD "desc" 60 #define ENTRY_DESC_OLD "desc"
61 #define ENTRY_NAME_OLD "name" 61 #define ENTRY_NAME_OLD "name"
62 #define ENTRY_PW_OLD "pw" 62 #define ENTRY_PW_OLD "pw"
63 #define ENTRY_COMMENT_OLD"comment" 63 #define ENTRY_COMMENT_OLD"comment"
64 #define ENTRY_URL_OLD "url" 64 #define ENTRY_URL_OLD "url"
65 #define ENTRY_LAUNCHER_OLD"launcher" 65 #define ENTRY_LAUNCHER_OLD"launcher"
66 #define ENTRY_LVP_OLD "listViewPos" 66 #define ENTRY_LVP_OLD "listViewPos"
67 #define ENTRY_BIN_OLD "b" 67 #define ENTRY_BIN_OLD "b"
68 #define ENTRY_META_OLD "m" 68 #define ENTRY_META_OLD "m"
69 69
70 #define ROOT_MAGIC_NEW "P" 70 #define ROOT_MAGIC_NEW "P"
71 #define VER_STR_NEW "v" 71 #define VER_STR_NEW "v"
72 #define COMPAT_VER_NEW "2" 72 #define COMPAT_VER_NEW "2"
73 #define CAT_ROOT_NEW "c" 73 #define CAT_ROOT_NEW "c"
74 #define CAT_PREFIX_NEW "c" 74 #define CAT_PREFIX_NEW "c"
75 #define CAT_NAME_NEW "n" 75 #define CAT_NAME_NEW "n"
76 #define ENTRY_PREFIX_NEW"e" 76 #define ENTRY_PREFIX_NEW"e"
77 #define ENTRY_DESC_NEW "d" 77 #define ENTRY_DESC_NEW "d"
78 #define ENTRY_NAME_NEW "n" 78 #define ENTRY_NAME_NEW "n"
79 #define ENTRY_PW_NEW "p" 79 #define ENTRY_PW_NEW "p"
80 #define ENTRY_COMMENT_NEW"c" 80 #define ENTRY_COMMENT_NEW"c"
81 #define ENTRY_URL_NEW "u" 81 #define ENTRY_URL_NEW "u"
82 #define ENTRY_LAUNCHER_NEW"l" 82 #define ENTRY_LAUNCHER_NEW"l"
83 #define ENTRY_LVP_NEW "v" 83 #define ENTRY_LVP_NEW "v"
84 #define ENTRY_BIN_NEW ENTRY_BIN_OLD 84 #define ENTRY_BIN_NEW ENTRY_BIN_OLD
85 #define ENTRY_META_NEW ENTRY_META_OLD 85 #define ENTRY_META_NEW ENTRY_META_OLD
86 86
87#if USE_OLD_TAGS != 0 87#if USE_OLD_TAGS != 0
88 # define ROOT_MAGIC_WR ROOT_MAGIC_OLD 88 # define ROOT_MAGIC_WR ROOT_MAGIC_OLD
89 # define VER_STR_WR VER_STR_OLD 89 # define VER_STR_WR VER_STR_OLD
90 # define COMPAT_VER_WR COMPAT_VER_OLD 90 # define COMPAT_VER_WR COMPAT_VER_OLD
91 # define CAT_ROOT_WR CAT_ROOT_OLD 91 # define CAT_ROOT_WR CAT_ROOT_OLD
92 # define CAT_PREFIX_WR CAT_PREFIX_OLD 92 # define CAT_PREFIX_WR CAT_PREFIX_OLD
93 # define CAT_NAME_WR CAT_NAME_OLD 93 # define CAT_NAME_WR CAT_NAME_OLD
94 # define ENTRY_PREFIX_WRENTRY_PREFIX_OLD 94 # define ENTRY_PREFIX_WRENTRY_PREFIX_OLD
95 # define ENTRY_DESC_WR ENTRY_DESC_OLD 95 # define ENTRY_DESC_WR ENTRY_DESC_OLD
96 # define ENTRY_NAME_WR ENTRY_NAME_OLD 96 # define ENTRY_NAME_WR ENTRY_NAME_OLD
97 # define ENTRY_PW_WR ENTRY_PW_OLD 97 # define ENTRY_PW_WR ENTRY_PW_OLD
98 # define ENTRY_COMMENT_WRENTRY_COMMENT_OLD 98 # define ENTRY_COMMENT_WRENTRY_COMMENT_OLD
99 # define ENTRY_URL_WR ENTRY_URL_OLD 99 # define ENTRY_URL_WR ENTRY_URL_OLD
100 # define ENTRY_LAUNCHER_WRENTRY_LAUNCHER_OLD 100 # define ENTRY_LAUNCHER_WRENTRY_LAUNCHER_OLD
101 # define ENTRY_LVP_WR ENTRY_LVP_OLD 101 # define ENTRY_LVP_WR ENTRY_LVP_OLD
102 # define ENTRY_BIN_WR ENTRY_BIN_OLD 102 # define ENTRY_BIN_WR ENTRY_BIN_OLD
103 # define ENTRY_META_WR ENTRY_META_OLD 103 # define ENTRY_META_WR ENTRY_META_OLD
104#else 104#else
105 # define ROOT_MAGIC_WR ROOT_MAGIC_NEW 105 # define ROOT_MAGIC_WR ROOT_MAGIC_NEW
106 # define VER_STR_WR VER_STR_NEW 106 # define VER_STR_WR VER_STR_NEW
107 # define COMPAT_VER_WR COMPAT_VER_NEW 107 # define COMPAT_VER_WR COMPAT_VER_NEW
108 # define CAT_ROOT_WR CAT_ROOT_NEW 108 # define CAT_ROOT_WR CAT_ROOT_NEW
109 # define CAT_PREFIX_WR CAT_PREFIX_NEW 109 # define CAT_PREFIX_WR CAT_PREFIX_NEW
110 # define CAT_NAME_WR CAT_NAME_NEW 110 # define CAT_NAME_WR CAT_NAME_NEW
111 # define ENTRY_PREFIX_WRENTRY_PREFIX_NEW 111 # define ENTRY_PREFIX_WRENTRY_PREFIX_NEW
112 # define ENTRY_DESC_WR ENTRY_DESC_NEW 112 # define ENTRY_DESC_WR ENTRY_DESC_NEW
113 # define ENTRY_NAME_WR ENTRY_NAME_NEW 113 # define ENTRY_NAME_WR ENTRY_NAME_NEW
114 # define ENTRY_PW_WR ENTRY_PW_NEW 114 # define ENTRY_PW_WR ENTRY_PW_NEW
115 # define ENTRY_COMMENT_WRENTRY_COMMENT_NEW 115 # define ENTRY_COMMENT_WRENTRY_COMMENT_NEW
116 # define ENTRY_URL_WR ENTRY_URL_NEW 116 # define ENTRY_URL_WR ENTRY_URL_NEW
117 # define ENTRY_LAUNCHER_WRENTRY_LAUNCHER_NEW 117 # define ENTRY_LAUNCHER_WRENTRY_LAUNCHER_NEW
118 # define ENTRY_LVP_WR ENTRY_LVP_NEW 118 # define ENTRY_LVP_WR ENTRY_LVP_NEW
119 # define ENTRY_BIN_WR ENTRY_BIN_NEW 119 # define ENTRY_BIN_WR ENTRY_BIN_NEW
120 # define ENTRY_META_WR ENTRY_META_NEW 120 # define ENTRY_META_WR ENTRY_META_NEW
121#endif 121#endif
122 122
123 123
124Serializer::Serializer() 124Serializer::Serializer()
125{ 125{
126 defaultLockStat = true; 126 defaultLockStat = true;
127//US BUG: I needed to specify a document name. Otherwise impl will not be created for serializing 127//US BUG: I needed to specify a document name. Otherwise impl will not be created for serializing
128#ifndef PWM_EMBEDDED 128#ifndef PWM_EMBEDDED
129 domDoc = new QDomDocument; 129 domDoc = new QDomDocument;
130#else 130#else
131 domDoc = new QDomDocument("mydoc"); 131 domDoc = new QDomDocument("mydoc");
132#endif 132#endif
133} 133}
134 134
135Serializer::Serializer(const QCString &buffer) 135Serializer::Serializer(const QCString &buffer)
136{ 136{
137 defaultLockStat = true; 137 defaultLockStat = true;
138//US BUG: I needed to specify a document name. Otherwise impl will not be created for serializing 138//US BUG: I needed to specify a document name. Otherwise impl will not be created for serializing
139#ifndef PWM_EMBEDDED 139#ifndef PWM_EMBEDDED
140 domDoc = new QDomDocument; 140 domDoc = new QDomDocument;
141#else 141#else
142 domDoc = new QDomDocument("mydoc"); 142 domDoc = new QDomDocument("mydoc");
143#endif 143#endif
144 144
145 if (!parseXml(buffer)) { 145 if (!parseXml(buffer)) {
146 delete domDoc; 146 delete domDoc;
147#ifndef PWM_EMBEDDED 147#ifndef PWM_EMBEDDED
148 throw PwMException(PwMException::EX_PARSE); 148 throw PwMException(PwMException::EX_PARSE);
149#else 149#else
150 qDebug("Serializer::Serializer : Parse Exception "); 150 qDebug("Serializer::Serializer : Parse Exception ");
151#endif 151#endif
152 } 152 }
153} 153}
154 154
155Serializer::~Serializer() 155Serializer::~Serializer()
156{ 156{
157 delete_ifnot_null(domDoc); 157 delete_ifnot_null(domDoc);
158} 158}
159 159
160void Serializer::clear() 160void Serializer::clear()
161{ 161{
162 delete_ifnot_null(domDoc); 162 delete_ifnot_null(domDoc);
163 domDoc = new QDomDocument; 163 domDoc = new QDomDocument;
164} 164}
165 165
166bool Serializer::parseXml(const QCString &buffer) 166bool Serializer::parseXml(const QCString &buffer)
167{ 167{
168 PWM_ASSERT(domDoc); 168 PWM_ASSERT(domDoc);
169#ifndef PWM_EMBEDDED 169#ifndef PWM_EMBEDDED
170 if (!domDoc->setContent(buffer, true)) 170 if (!domDoc->setContent(buffer, true))
171 return false; 171 return false;
172#else 172#else
173 if (!domDoc->setContent(buffer)) 173 if (!domDoc->setContent(buffer))
174 return false; 174 return false;
175#endif 175#endif
176 if (!checkValid()) 176 if (!checkValid())
177 return false; 177 return false;
178 return true; 178 return true;
179} 179}
180 180
181QCString Serializer::getXml() 181QCString Serializer::getXml()
182{ 182{
183 PWM_ASSERT(domDoc); 183 PWM_ASSERT(domDoc);
184 184
185#ifndef PWM_EMBEDDED 185#ifndef PWM_EMBEDDED
186#if defined(PWM_DEBUG) && SERIALIZER_DEBUG != 0 186#if defined(PWM_DEBUG) && SERIALIZER_DEBUG != 0
187 QCString tmp(domDoc->toCString(8)); 187 QCString tmp(domDoc->toCString(8));
188 printDebug("<BEGIN Serializer::getXml() dump>\n"); 188 printDebug("<BEGIN Serializer::getXml() dump>\n");
189 cout << tmp << endl; 189 cout << tmp << endl;
190 printDebug("<END Serializer::getXml() dump>"); 190 printDebug("<END Serializer::getXml() dump>");
191#endif // DEBUG 191#endif // DEBUG
192 192
193 QCString ret(domDoc->toCString(0)); 193 QCString ret(domDoc->toCString(0));
194 ret.replace('\n', ""); 194 ret.replace('\n', "");
195 return ret; 195 return ret;
196#else 196#else
197 197
198#if defined(PWM_DEBUG) && SERIALIZER_DEBUG != 0 198#if defined(PWM_DEBUG) && SERIALIZER_DEBUG != 0
199 QCString tmp(" " + domDoc->toCString()); 199 QCString tmp(" " + domDoc->toCString());
200 printDebug("<BEGIN Serializer::getXml() dump>\n"); 200 printDebug("<BEGIN Serializer::getXml() dump>\n");
201 qDebug(tmp); 201 qDebug(tmp);
202 cout << tmp << endl; 202 cout << tmp << endl;
203 printDebug("<END Serializer::getXml() dump>"); 203 printDebug("<END Serializer::getXml() dump>");
204#endif // DEBUG 204#endif // DEBUG
205 205
206 QCString ret(domDoc->toCString()); 206 QCString ret(domDoc->toCString());
207 ret.replace(QRegExp("\n"), ""); 207 ret.replace(QRegExp("\n"), "");
208 return ret; 208 return ret;
209 209
210#endif 210#endif
211} 211}
212 212
213bool Serializer::serialize(PwMItem &dta) 213bool Serializer::serialize(PwMItem &dta)
214{ 214{
215 PWM_ASSERT(domDoc); 215 PWM_ASSERT(domDoc);
216 QDomElement root(genNewRoot()); 216 QDomElement root(genNewRoot());
217 QDomElement catNode(domDoc->createElement(CAT_ROOT_WR)); 217 QDomElement catNode(domDoc->createElement(CAT_ROOT_WR));
218 QDomElement syncNode(domDoc->createElement(SYNC_ROOT)); 218 QDomElement syncNode(domDoc->createElement(SYNC_ROOT));
219 if (!addSyncData(&syncNode, dta.syncDta)) 219 if (!addSyncData(&syncNode, dta.syncDta))
220 return false; 220 return false;
221 root.appendChild(syncNode); 221 root.appendChild(syncNode);
222 if (!addCategories(&catNode, dta.dta)) 222 if (!addCategories(&catNode, dta.dta))
223 return false; 223 return false;
224 root.appendChild(catNode); 224 root.appendChild(catNode);
225 return true; 225 return true;
226} 226}
227 227
228bool Serializer::deSerialize(PwMItem *dta) 228bool Serializer::deSerialize(PwMItem *dta)
229{ 229{
230 PWM_ASSERT(domDoc); 230 PWM_ASSERT(domDoc);
231 PWM_ASSERT(dta); 231 PWM_ASSERT(dta);
232 QDomElement root(domDoc->documentElement()); 232 QDomElement root(domDoc->documentElement());
233 QDomNode n; 233 QDomNode n;
234 234
235 dta->clear(); 235 dta->clear();
236 for (n = root.firstChild(); !n.isNull(); n = n.nextSibling()) { 236 for (n = root.firstChild(); !n.isNull(); n = n.nextSibling()) {
237 // find <categories> ... </categories> 237 // find <categories> ... </categories>
238 // <c> ... </c> 238 // <c> ... </c>
239 if (n.nodeName() == CAT_ROOT_NEW || 239 if (n.nodeName() == CAT_ROOT_NEW ||
240 n.nodeName() == CAT_ROOT_OLD) { 240 n.nodeName() == CAT_ROOT_OLD) {
241 if (!readCategories(n, &(dta->dta))) { 241 if (!readCategories(n, &(dta->dta))) {
242 return false; 242 return false;
243 } 243 }
244 continue; 244 continue;
245 } 245 }
246 else if (n.nodeName() == SYNC_ROOT) { 246 else if (n.nodeName() == SYNC_ROOT) {
247 if (!readSyncData(n, &(dta->syncDta))) { 247 if (!readSyncData(n, &(dta->syncDta))) {
248 return false; 248 return false;
249 } 249 }
250 continue; 250 continue;
251 } 251 }
252 252
253 /* NOTE: We can stop processing here, as we 253 /* NOTE: We can stop processing here, as we
254 * don't have more nodes in root, yet. 254 * don't have more nodes in root, yet.
255 */ 255 */
256 return false; 256 return false;
257 257
258 } 258 }
259 return true; 259 return true;
260} 260}
261 261
262bool Serializer::readCategories(const QDomNode &n, 262bool Serializer::readCategories(const QDomNode &n,
263 vector<PwMCategoryItem> *dta) 263 vector<PwMCategoryItem> *dta)
264{ 264{
265 QDomNodeList nl(n.childNodes()); 265 QDomNodeList nl(n.childNodes());
266 QDomNode cur; 266 QDomNode cur;
267 QString name; 267 QString name;
268 unsigned int numCat = nl.count(), i; 268 unsigned int numCat = nl.count(), i;
269 PwMCategoryItem curCat; 269 PwMCategoryItem curCat;
270 vector<PwMDataItem> curEntr; 270 vector<PwMDataItem> curEntr;
271 271
272 if (!numCat) { 272 if (!numCat) {
273 printDebug("Serializer::readCategories(): empty"); 273 printDebug("Serializer::readCategories(): empty");
274 return false; 274 return false;
275 } 275 }
276 for (i = 0; i < numCat; ++i) { 276 for (i = 0; i < numCat; ++i) {
277 cur = nl.item(i); 277 cur = nl.item(i);
278 if (cur.nodeName().left(1) == CAT_PREFIX_NEW || 278 if (cur.nodeName().left(1) == CAT_PREFIX_NEW ||
279 cur.nodeName().left(4) == CAT_PREFIX_OLD) { 279 cur.nodeName().left(4) == CAT_PREFIX_OLD) {
280 name = cur.toElement().attribute(CAT_NAME_NEW); 280 name = cur.toElement().attribute(CAT_NAME_NEW);
281 if (name == QString::null) 281 if (name == QString::null)
282 name = cur.toElement().attribute(CAT_NAME_OLD); 282 name = cur.toElement().attribute(CAT_NAME_OLD);
283 PWM_ASSERT(name != QString::null); 283 PWM_ASSERT(name != QString::null);
284 PWM_ASSERT(name != ""); 284 PWM_ASSERT(name != "");
285 curCat.clear(); 285 curCat.clear();
286 curCat.name = name.latin1(); 286 curCat.name = name.latin1();
287 if (!readEntries(cur, &curEntr)) { 287 if (!readEntries(cur, &curEntr)) {
288 dta->clear(); 288 dta->clear();
289 return false; 289 return false;
290 } 290 }
291 curCat.d = curEntr; 291 curCat.d = curEntr;
292 dta->push_back(curCat); 292 dta->push_back(curCat);
293 } else { 293 } else {
294 printDebug("Serializer::readCategories(): uh? not a category?"); 294 printDebug("Serializer::readCategories(): uh? not a category?");
295 } 295 }
296 } 296 }
297 return true; 297 return true;
298} 298}
299 299
300bool Serializer::readEntries(const QDomNode &n, 300bool Serializer::readEntries(const QDomNode &n,
301 vector<PwMDataItem> *dta) 301 vector<PwMDataItem> *dta)
302{ 302{
303 QDomNodeList nl(n.childNodes()); 303 QDomNodeList nl(n.childNodes());
304 QDomNode cur; 304 QDomNode cur;
305 unsigned int numEntr = nl.count(), i; 305 unsigned int numEntr = nl.count(), i;
306 PwMDataItem curEntr; 306 PwMDataItem curEntr;
307 307
308 dta->clear(); 308 dta->clear();
309 for (i = 0; i < numEntr; ++i) { 309 for (i = 0; i < numEntr; ++i) {
310 cur = nl.item(i); 310 cur = nl.item(i);
311 if (cur.nodeName().left(1) == ENTRY_PREFIX_NEW || 311 if (cur.nodeName().left(1) == ENTRY_PREFIX_NEW ||
312 cur.nodeName().left(6) == ENTRY_PREFIX_OLD) { 312 cur.nodeName().left(6) == ENTRY_PREFIX_OLD) {
313 if (!extractEntry(cur, &curEntr)) { 313 if (!extractEntry(cur, &curEntr)) {
314 return false; 314 return false;
315 } 315 }
316 dta->push_back(curEntr); 316 dta->push_back(curEntr);
317 } else { 317 } else {
318 printDebug("Serializer::readEntries(): hm? not an entry?"); 318 printDebug("Serializer::readEntries(): hm? not an entry?");
319 } 319 }
320 } 320 }
321 return true; 321 return true;
322} 322}
323 323
324bool Serializer::extractEntry(const QDomNode &n, 324bool Serializer::extractEntry(const QDomNode &n,
325 PwMDataItem *dta) 325 PwMDataItem *dta)
326{ 326{
327 QDomNodeList nl(n.childNodes()); 327 QDomNodeList nl(n.childNodes());
328 QDomNode cur, cdata; 328 QDomNode cur, cdata;
329 unsigned int cnt = nl.count(), i; 329 unsigned int cnt = nl.count(), i;
330 QString name, text; 330 QString name, text;
331 331
332 if (!cnt) { 332 if (!cnt) {
333 printDebug("Serializer::extractEntry(): empty"); 333 printDebug("Serializer::extractEntry(): empty");
334 return false; 334 return false;
335 } 335 }
336 dta->clear(); 336 dta->clear();
337 for (i = 0; i < cnt; ++i) { 337 for (i = 0; i < cnt; ++i) {
338 cur = nl.item(i); 338 cur = nl.item(i);
339 name = cur.nodeName(); 339 name = cur.nodeName();
340 cdata = cur.firstChild(); 340 cdata = cur.firstChild();
341 if (unlikely(cdata.isCDATASection())) { 341 if (unlikely(cdata.isCDATASection())) {
342 text = cdata.toCDATASection().data(); 342 text = cdata.toCDATASection().data();
343 } else if (likely(cur.isElement())) { 343 } else if (likely(cur.isElement())) {
344 text = cur.toElement().text(); 344 text = cur.toElement().text();
345 } else { 345 } else {
346 printDebug("Serializer::extractEntry(): neither CDATA nor element."); 346 printDebug("Serializer::extractEntry(): neither CDATA nor element.");
347 return false; 347 return false;
348 } 348 }
349 if (text == " ") 349 if (text == " ")
350 text = ""; // for backward compatibility. 350 text = ""; // for backward compatibility.
351 if (name == ENTRY_DESC_NEW || 351 if (name == ENTRY_DESC_NEW ||
352 name == ENTRY_DESC_OLD) { 352 name == ENTRY_DESC_OLD) {
353 dta->desc = unescapeEntryData(text).latin1(); 353 dta->desc = unescapeEntryData(text).latin1();
354 } else if (name == ENTRY_NAME_NEW || 354 } else if (name == ENTRY_NAME_NEW ||
355 name == ENTRY_NAME_OLD) { 355 name == ENTRY_NAME_OLD) {
356 dta->name = unescapeEntryData(text).latin1(); 356 dta->name = unescapeEntryData(text).latin1();
357 } else if (name == ENTRY_PW_NEW || 357 } else if (name == ENTRY_PW_NEW ||
358 name == ENTRY_PW_OLD) { 358 name == ENTRY_PW_OLD) {
359 dta->pw = unescapeEntryData(text).latin1(); 359 dta->pw = unescapeEntryData(text).latin1();
360 } else if (name == ENTRY_COMMENT_NEW || 360 } else if (name == ENTRY_COMMENT_NEW ||
361 name == ENTRY_COMMENT_OLD) { 361 name == ENTRY_COMMENT_OLD) {
362 dta->comment = unescapeEntryData(text).latin1(); 362 dta->comment = unescapeEntryData(text).latin1();
363 } else if (name == ENTRY_URL_NEW || 363 } else if (name == ENTRY_URL_NEW ||
364 name == ENTRY_URL_OLD) { 364 name == ENTRY_URL_OLD) {
365 dta->url = unescapeEntryData(text).latin1(); 365 dta->url = unescapeEntryData(text).latin1();
366 } else if (name == ENTRY_LAUNCHER_NEW || 366 } else if (name == ENTRY_LAUNCHER_NEW ||
367 name == ENTRY_LAUNCHER_OLD) { 367 name == ENTRY_LAUNCHER_OLD) {
368 dta->launcher = unescapeEntryData(text).latin1(); 368 dta->launcher = unescapeEntryData(text).latin1();
369 } else if (name == ENTRY_LVP_NEW || 369 } else if (name == ENTRY_LVP_NEW ||
370 name == ENTRY_LVP_OLD) { 370 name == ENTRY_LVP_OLD) {
371 dta->listViewPos = strtol(text.latin1(), 0, 10); 371 dta->listViewPos = strtol(text.latin1(), 0, 10);
372 } else if (name == ENTRY_BIN_NEW) { 372 } else if (name == ENTRY_BIN_NEW) {
373 // ENTRY_BIN_NEW == ENTRY_BIN_OLD 373 // ENTRY_BIN_NEW == ENTRY_BIN_OLD
374 if (text == "0") { 374 if (text == "0") {
375 dta->binary = false; 375 dta->binary = false;
376 } else { 376 } else {
377 dta->binary = true; 377 dta->binary = true;
378 } 378 }
379 } else if (name == ENTRY_META_NEW) { 379 } else if (name == ENTRY_META_NEW) {
380 // ENTRY_META_NEW == ENTRY_META_OLD 380 // ENTRY_META_NEW == ENTRY_META_OLD
381 if (!extractMeta(cur, &dta->meta)) 381 if (!extractMeta(cur, &dta->meta))
382 return false; 382 return false;
383 } else { 383 } else {
384 printDebug(string("Serializer::extractEntry(): invalid: ") 384 printDebug(string("Serializer::extractEntry(): invalid: ")
385 + name.latin1()); 385 + name.latin1());
386 } 386 }
387 } 387 }
388 dta->lockStat = defaultLockStat; 388 dta->lockStat = defaultLockStat;
389 return true; 389 return true;
390} 390}
391 391
392bool Serializer::extractMeta(const QDomNode &n, 392bool Serializer::extractMeta(const QDomNode &n,
393 PwMMetaData *dta) 393 PwMMetaData *dta)
394{ 394{
395 QDomNode cur(n.firstChild()); 395 QDomNode cur(n.firstChild());
396 QString name, val; 396 QString name, val;
397 while (!cur.isNull()) { 397 while (!cur.isNull()) {
398 name = cur.nodeName(); 398 name = cur.nodeName();
399 val = cur.toElement().text(); 399 val = cur.toElement().text();
400 if (val == "") { 400 if (val == "") {
401 cur = cur.nextSibling(); 401 cur = cur.nextSibling();
402 continue; 402 continue;
403 } 403 }
404#ifndef PWM_EMBEDDED 404#ifndef PWM_EMBEDDED
405 if (name == META_CREATE_DATE) { 405 if (name == META_CREATE_DATE) {
406 dta->create = QDateTime::fromString(val, Qt::ISODate); 406 dta->create = QDateTime::fromString(val, Qt::ISODate);
407 } else if (name == META_VALID_DATE) { 407 } else if (name == META_VALID_DATE) {
408 dta->valid = QDateTime::fromString(val, Qt::ISODate); 408 dta->valid = QDateTime::fromString(val, Qt::ISODate);
409 } else if (name == META_EXPIRE_DATE) { 409 } else if (name == META_EXPIRE_DATE) {
410 dta->expire = QDateTime::fromString(val, Qt::ISODate); 410 dta->expire = QDateTime::fromString(val, Qt::ISODate);
411 } else if (name == META_UPDATE_DATE) { 411 } else if (name == META_UPDATE_DATE) {
412 dta->update = QDateTime::fromString(val, Qt::ISODate); 412 dta->update = QDateTime::fromString(val, Qt::ISODate);
413 } else if (name == META_UPDATE_INT) { 413 } else if (name == META_UPDATE_INT) {
414 dta->updateInt = strtoul(val.latin1(), 0, 10); 414 dta->updateInt = strtoul(val.latin1(), 0, 10);
415 } else if (name == META_UNIQUEID) { 415 } else if (name == META_UNIQUEID) {
416 dta->uniqueid = unescapeEntryData(val).latin1(); 416 dta->uniqueid = unescapeEntryData(val).latin1();
417 } else { 417 } else {
418 printDebug(string("extractMeta(): invalid: ") 418 printDebug(string("extractMeta(): invalid: ")
419 + name.latin1()); 419 + name.latin1());
420 } 420 }
421#else 421#else
422 422
423 423
424 bool ok = true; 424 bool ok = true;
425 425
426 if (name == META_CREATE_DATE) { 426 if (name == META_CREATE_DATE) {
427 dta->create = KGlobal::locale()->readDateTime(val, KLocale::ISODate, &ok); 427 dta->create = KGlobal::locale()->readDateTime(val, KLocale::ISODate, &ok);
428 } else if (name == META_VALID_DATE) { 428 } else if (name == META_VALID_DATE) {
429 dta->valid = KGlobal::locale()->readDateTime(val, KLocale::ISODate, &ok); 429 dta->valid = KGlobal::locale()->readDateTime(val, KLocale::ISODate, &ok);
430 } else if (name == META_EXPIRE_DATE) { 430 } else if (name == META_EXPIRE_DATE) {
431 dta->expire = KGlobal::locale()->readDateTime(val, KLocale::ISODate, &ok); 431 dta->expire = KGlobal::locale()->readDateTime(val, KLocale::ISODate, &ok);
432 } else if (name == META_UPDATE_DATE) { 432 } else if (name == META_UPDATE_DATE) {
433 dta->update = KGlobal::locale()->readDateTime(val, KLocale::ISODate, &ok); 433 dta->update = KGlobal::locale()->readDateTime(val, KLocale::ISODate, &ok);
434 } else if (name == META_UPDATE_INT) { 434 } else if (name == META_UPDATE_INT) {
435 dta->updateInt = strtoul(val.latin1(), 0, 10); 435 dta->updateInt = strtoul(val.latin1(), 0, 10);
436 } else if (name == META_UNIQUEID) { 436 } else if (name == META_UNIQUEID) {
437 dta->uniqueid = unescapeEntryData(val).latin1(); 437 dta->uniqueid = unescapeEntryData(val).latin1();
438 } else { 438 } else {
439 printDebug(string("extractMeta(): invalid: ") 439 printDebug(string("extractMeta(): invalid: ")
440 + name.latin1()); 440 + name.latin1());
441 } 441 }
442 442
443 if (ok == false) 443 if (ok == false)
444 qDebug("Serializer::extractMeta invalid date or time !!!!!!!!!!!!!"); 444 qDebug("Serializer::extractMeta invalid date or time !!!!!!!!!!!!!");
445 445
446 446
447#endif 447#endif
448 cur = cur.nextSibling(); 448 cur = cur.nextSibling();
449 } 449 }
450 return true; 450 return true;
451} 451}
452 452
453bool Serializer::checkValid() 453bool Serializer::checkValid()
454{ 454{
455 PWM_ASSERT(domDoc); 455 PWM_ASSERT(domDoc);
456 QDomElement root(domDoc->documentElement()); 456 QDomElement root(domDoc->documentElement());
457 if (root.nodeName() != ROOT_MAGIC_NEW && 457 if (root.nodeName() != ROOT_MAGIC_NEW &&
458 root.nodeName() != ROOT_MAGIC_OLD) { 458 root.nodeName() != ROOT_MAGIC_OLD) {
459 printDebug("Serializer: wrong magic"); 459 printDebug("Serializer: wrong magic");
460 return false; 460 return false;
461 } 461 }
462 if (root.attribute(VER_STR_NEW) != COMPAT_VER_NEW && 462 if (root.attribute(VER_STR_NEW) != COMPAT_VER_NEW &&
463 root.attribute(VER_STR_OLD) != COMPAT_VER_OLD) { 463 root.attribute(VER_STR_OLD) != COMPAT_VER_OLD) {
464 printDebug("Serializer: wrong version"); 464 printDebug("Serializer: wrong version");
465 return false; 465 return false;
466 } 466 }
467 return true; 467 return true;
468} 468}
469 469
470QDomElement Serializer::genNewRoot() 470QDomElement Serializer::genNewRoot()
471{ 471{
472 PWM_ASSERT(domDoc); 472 PWM_ASSERT(domDoc);
473 QDomElement root(domDoc->createElement(ROOT_MAGIC_WR)); 473 QDomElement root(domDoc->createElement(ROOT_MAGIC_WR));
474 root.setAttribute(VER_STR_WR, COMPAT_VER_WR); 474 root.setAttribute(VER_STR_WR, COMPAT_VER_WR);
475 domDoc->appendChild(root); 475 domDoc->appendChild(root);
476 return root; 476 return root;
477} 477}
478 478
479bool Serializer::addCategories(QDomElement *e, 479bool Serializer::addCategories(QDomElement *e,
480 const vector<PwMCategoryItem> &dta) 480 const vector<PwMCategoryItem> &dta)
481{ 481{
482 unsigned int numCat = dta.size(), i; 482 unsigned int numCat = dta.size(), i;
483 QString curId, curName; 483 QString curId, curName;
484 QDomElement curCat; 484 QDomElement curCat;
485 485
486 for (i = 0; i < numCat; ++i) { 486 for (i = 0; i < numCat; ++i) {
487 curId = CAT_PREFIX_WR; 487 curId = CAT_PREFIX_WR;
488 curId += tostr(i).c_str(); 488 curId += tostr(i).c_str();
489 curName = dta[i].name.c_str(); 489 curName = dta[i].name.c_str();
490 curCat = domDoc->createElement(curId); 490 curCat = domDoc->createElement(curId);
491 curCat.setAttribute(CAT_NAME_WR, curName); 491 curCat.setAttribute(CAT_NAME_WR, curName);
492 if (!addEntries(&curCat, dta[i].d)) { 492 if (!addEntries(&curCat, dta[i].d)) {
493 return false; 493 return false;
494 } 494 }
495 e->appendChild(curCat); 495 e->appendChild(curCat);
496 } 496 }
497 return true; 497 return true;
498} 498}
499 499
500bool Serializer::addEntries(QDomElement *e, 500bool Serializer::addEntries(QDomElement *e,
501 const vector<PwMDataItem> &dta) 501 const vector<PwMDataItem> &dta)
502{ 502{
503 unsigned int numEntr = dta.size(), i; 503 unsigned int numEntr = dta.size(), i;
504 QString curId; 504 QString curId;
505 QDomElement curEntr; 505 QDomElement curEntr;
506 506
507 for (i = 0; i < numEntr; ++i) { 507 for (i = 0; i < numEntr; ++i) {
508 curId = ENTRY_PREFIX_WR; 508 curId = ENTRY_PREFIX_WR;
509 curId += tostr(i).c_str(); 509 curId += tostr(i).c_str();
510 curEntr = domDoc->createElement(curId); 510 curEntr = domDoc->createElement(curId);
511 if (!writeEntry(&curEntr, dta[i])) { 511 if (!writeEntry(&curEntr, dta[i])) {
512 return false; 512 return false;
513 } 513 }
514 e->appendChild(curEntr); 514 e->appendChild(curEntr);
515 } 515 }
516 return true; 516 return true;
517} 517}
518 518
519bool Serializer::writeEntry(QDomElement *e, 519bool Serializer::writeEntry(QDomElement *e,
520 const PwMDataItem &_dta) 520 const PwMDataItem &_dta)
521{ 521{
522#if WRITE_CDATA_SEC != 0 522#if WRITE_CDATA_SEC != 0
523 # define new_text(x)domDoc->createCDATASection(x) 523 # define new_text(x)domDoc->createCDATASection(x)
524 QDomCDATASection curText; 524 QDomCDATASection curText;
525#else 525#else
526 # define new_text(x)domDoc->createTextNode(x) 526 # define new_text(x)domDoc->createTextNode(x)
527 QDomText curText; 527 QDomText curText;
528#endif 528#endif
529 529
530 QDomText plainText; 530 QDomText plainText;
531 QDomElement tag; 531 QDomElement tag;
532 532
533 // begin -- This is for compatibility with the old serializer 533 // begin -- This is for compatibility with the old serializer
534 PwMDataItem dta = _dta; 534 PwMDataItem dta = _dta;
535 if (!dta.desc.size()) 535 if (!dta.desc.size())
536 dta.desc = " "; 536 dta.desc = " ";
537 if (!dta.name.size()) 537 if (!dta.name.size())
538 dta.name = " "; 538 dta.name = " ";
539 if (!dta.pw.size()) 539 if (!dta.pw.size())
540 dta.pw = " "; 540 dta.pw = " ";
541 if (!dta.comment.size()) 541 if (!dta.comment.size())
542 dta.comment = " "; 542 dta.comment = " ";
543 if (!dta.url.size()) 543 if (!dta.url.size())
544 dta.url = " "; 544 dta.url = " ";
545 if (!dta.launcher.size()) 545 if (!dta.launcher.size())
546 dta.launcher = " "; 546 dta.launcher = " ";
547 // end -- This is for compatibility with the old serializer 547 // end -- This is for compatibility with the old serializer
548 548
549 tag = domDoc->createElement(ENTRY_DESC_WR); 549 tag = domDoc->createElement(ENTRY_DESC_WR);
550 curText = new_text(escapeEntryData(dta.desc.c_str())); 550 curText = new_text(escapeEntryData(dta.desc.c_str()));
551 tag.appendChild(curText); 551 tag.appendChild(curText);
552 e->appendChild(tag); 552 e->appendChild(tag);
553 553
554 tag = domDoc->createElement(ENTRY_NAME_WR); 554 tag = domDoc->createElement(ENTRY_NAME_WR);
555 curText = new_text(escapeEntryData(dta.name.c_str())); 555 curText = new_text(escapeEntryData(dta.name.c_str()));
556 tag.appendChild(curText); 556 tag.appendChild(curText);
557 e->appendChild(tag); 557 e->appendChild(tag);
558 558
559 tag = domDoc->createElement(ENTRY_PW_WR); 559 tag = domDoc->createElement(ENTRY_PW_WR);
560 curText = new_text(escapeEntryData(dta.pw.c_str())); 560 curText = new_text(escapeEntryData(dta.pw.c_str()));
561 tag.appendChild(curText); 561 tag.appendChild(curText);
562 e->appendChild(tag); 562 e->appendChild(tag);
563 563
564 tag = domDoc->createElement(ENTRY_COMMENT_WR); 564 tag = domDoc->createElement(ENTRY_COMMENT_WR);
565 curText = new_text(escapeEntryData(dta.comment.c_str())); 565 curText = new_text(escapeEntryData(dta.comment.c_str()));
566 tag.appendChild(curText); 566 tag.appendChild(curText);
567 e->appendChild(tag); 567 e->appendChild(tag);
568 568
569 tag = domDoc->createElement(ENTRY_URL_WR); 569 tag = domDoc->createElement(ENTRY_URL_WR);
570 curText = new_text(escapeEntryData(dta.url.c_str())); 570 curText = new_text(escapeEntryData(dta.url.c_str()));
571 tag.appendChild(curText); 571 tag.appendChild(curText);
572 e->appendChild(tag); 572 e->appendChild(tag);
573 573
574 tag = domDoc->createElement(ENTRY_LAUNCHER_WR); 574 tag = domDoc->createElement(ENTRY_LAUNCHER_WR);
575 curText = new_text(escapeEntryData(dta.launcher.c_str())); 575 curText = new_text(escapeEntryData(dta.launcher.c_str()));
576 tag.appendChild(curText); 576 tag.appendChild(curText);
577 e->appendChild(tag); 577 e->appendChild(tag);
578 578
579 tag = domDoc->createElement(ENTRY_LVP_WR); 579 tag = domDoc->createElement(ENTRY_LVP_WR);
580 plainText = domDoc->createTextNode(tostr(dta.listViewPos).c_str()); 580 plainText = domDoc->createTextNode(tostr(dta.listViewPos).c_str());
581 tag.appendChild(plainText); 581 tag.appendChild(plainText);
582 e->appendChild(tag); 582 e->appendChild(tag);
583 583
584 tag = domDoc->createElement(ENTRY_BIN_WR); 584 tag = domDoc->createElement(ENTRY_BIN_WR);
585 if (dta.binary) 585 if (dta.binary)
586 plainText = domDoc->createTextNode("1"); 586 plainText = domDoc->createTextNode("1");
587 else 587 else
588 plainText = domDoc->createTextNode("0"); 588 plainText = domDoc->createTextNode("0");
589 tag.appendChild(plainText); 589 tag.appendChild(plainText);
590 e->appendChild(tag); 590 e->appendChild(tag);
591 591
592 tag = domDoc->createElement(ENTRY_META_WR); 592 tag = domDoc->createElement(ENTRY_META_WR);
593 if (!writeMeta(&tag, dta.meta)) 593 if (!writeMeta(&tag, dta.meta))
594 return false; 594 return false;
595 e->appendChild(tag); 595 e->appendChild(tag);
596 596
597#undef new_text 597#undef new_text
598 return true; 598 return true;
599} 599}
600 600
601bool Serializer::writeMeta(QDomElement *e, 601bool Serializer::writeMeta(QDomElement *e,
602 const PwMMetaData &dta) 602 const PwMMetaData &dta)
603{ 603{
604 QDomText text; 604 QDomText text;
605 QDomElement tag; 605 QDomElement tag;
606 606
607 tag = domDoc->createElement(META_CREATE_DATE); 607 tag = domDoc->createElement(META_CREATE_DATE);
608#ifndef PWM_EMBEDDED 608#ifndef PWM_EMBEDDED
609 text = domDoc->createTextNode(dta.create.toString(Qt::ISODate)); 609 text = domDoc->createTextNode(dta.create.toString(Qt::ISODate));
610#else 610#else
611 text = domDoc->createTextNode(KGlobal::locale()->formatDateTime(dta.create, KLocale::ISODate)); 611 text = domDoc->createTextNode(KGlobal::locale()->formatDateTime(dta.create, KLocale::ISODate));
612#endif 612#endif
613 tag.appendChild(text); 613 tag.appendChild(text);
614 e->appendChild(tag); 614 e->appendChild(tag);
615 615
616 tag = domDoc->createElement(META_VALID_DATE); 616 tag = domDoc->createElement(META_VALID_DATE);
617#ifndef PWM_EMBEDDED 617#ifndef PWM_EMBEDDED
618 text = domDoc->createTextNode(dta.valid.toString(Qt::ISODate)); 618 text = domDoc->createTextNode(dta.valid.toString(Qt::ISODate));
619#else 619#else
620 text = domDoc->createTextNode(KGlobal::locale()->formatDateTime(dta.valid, KLocale::ISODate)); 620 text = domDoc->createTextNode(KGlobal::locale()->formatDateTime(dta.valid, KLocale::ISODate));
621#endif 621#endif
622 tag.appendChild(text); 622 tag.appendChild(text);
623 e->appendChild(tag); 623 e->appendChild(tag);
624 624
625 tag = domDoc->createElement(META_EXPIRE_DATE); 625 tag = domDoc->createElement(META_EXPIRE_DATE);
626#ifndef PWM_EMBEDDED 626#ifndef PWM_EMBEDDED
627 text = domDoc->createTextNode(dta.expire.toString(Qt::ISODate)); 627 text = domDoc->createTextNode(dta.expire.toString(Qt::ISODate));
628#else 628#else
629 text = domDoc->createTextNode(KGlobal::locale()->formatDateTime(dta.expire, KLocale::ISODate)); 629 text = domDoc->createTextNode(KGlobal::locale()->formatDateTime(dta.expire, KLocale::ISODate));
630#endif 630#endif
631 tag.appendChild(text); 631 tag.appendChild(text);
632 e->appendChild(tag); 632 e->appendChild(tag);
633 633
634 tag = domDoc->createElement(META_UPDATE_DATE); 634 tag = domDoc->createElement(META_UPDATE_DATE);
635#ifndef PWM_EMBEDDED 635#ifndef PWM_EMBEDDED
636 text = domDoc->createTextNode(dta.update.toString(Qt::ISODate)); 636 text = domDoc->createTextNode(dta.update.toString(Qt::ISODate));
637#else 637#else
638 text = domDoc->createTextNode(KGlobal::locale()->formatDateTime(dta.update, KLocale::ISODate)); 638 text = domDoc->createTextNode(KGlobal::locale()->formatDateTime(dta.update, KLocale::ISODate));
639#endif 639#endif
640 tag.appendChild(text); 640 tag.appendChild(text);
641 e->appendChild(tag); 641 e->appendChild(tag);
642 642
643 tag = domDoc->createElement(META_UPDATE_INT); 643 tag = domDoc->createElement(META_UPDATE_INT);
644 text = domDoc->createTextNode(tostr(dta.updateInt).c_str()); 644 text = domDoc->createTextNode(tostr(dta.updateInt).c_str());
645 tag.appendChild(text); 645 tag.appendChild(text);
646 e->appendChild(tag); 646 e->appendChild(tag);
647 647
648 tag = domDoc->createElement(META_UNIQUEID); 648 tag = domDoc->createElement(META_UNIQUEID);
649 text = domDoc->createTextNode(escapeEntryData(dta.uniqueid.c_str())); 649 text = domDoc->createTextNode(escapeEntryData(dta.uniqueid.c_str()));
650 tag.appendChild(text); 650 tag.appendChild(text);
651 e->appendChild(tag); 651 e->appendChild(tag);
652 652
653#undef new_text 653#undef new_text
654 return true; 654 return true;
655} 655}
656 656
657QString Serializer::escapeEntryData(QString dta) 657QString Serializer::escapeEntryData(QString dta)
658{ 658{
659#ifndef PWM_EMBEDDED 659#ifndef PWM_EMBEDDED
660 dta.replace('\n', "$>--endl--<$"); 660 dta.replace('\n', "$>--endl--<$");
661 dta.replace("]]>", "||>"); 661 dta.replace("]]>", "||>");
662#else 662#else
663 dta.replace(QRegExp("\n"), "$>--endl--<$"); 663 dta.replace(QRegExp("\n"), "$>--endl--<$");
664 dta.replace(QRegExp("]]>"), "||>"); 664 dta.replace(QRegExp("]]>"), "||>");
665#endif 665#endif
666 return dta; 666 return dta;
667} 667}
668 668
669QString Serializer::unescapeEntryData(QString dta) 669QString Serializer::unescapeEntryData(QString dta)
670{ 670{
671#ifndef PWM_EMBEDDED 671#ifndef PWM_EMBEDDED
672 dta.replace("$>--endl--<$", "\n"); 672 dta.replace("$>--endl--<$", "\n");
673 dta.replace("||>", "]]>"); 673 dta.replace("||>", "]]>");
674#else 674#else
675 dta.replace(QRegExp("$>--endl--<$"), "\n"); 675 dta.replace(QRegExp("$>--endl--<$"), "\n");
676 dta.replace(QRegExp("||>"), "]]>"); 676 dta.replace(QRegExp("||>"), "]]>");
677#endif 677#endif
678 return dta; 678 return dta;
679} 679}
680 680
681 681
682//US ENH: the following methods are getting used to write/read sync entries 682//US ENH: the following methods are getting used to write/read sync entries
683/** read the syncentries in the node "n" */ 683/** read the syncentries in the node "n" */
684bool Serializer::readSyncData(const QDomNode &n, vector<PwMSyncItem> *dta) 684bool Serializer::readSyncData(const QDomNode &n, vector<PwMSyncItem> *dta)
685{ 685{
686 QDomNodeList nl(n.childNodes()); 686 QDomNodeList nl(n.childNodes());
687 QDomNode cur; 687 QDomNode cur;
688 688
689 QString devicename, val; 689 QString devicename, val;
690 unsigned int numSync = nl.count(), i; 690 unsigned int numSync = nl.count(), i;
691 PwMSyncItem curSync; 691 PwMSyncItem curSync;
692 bool ok = true; 692 bool ok = true;
693 693
694 if (!numSync) { 694 if (!numSync) {
695 //no sync entries is a possible result 695 //no sync entries is a possible result
696 printDebug("Serializer::readSyncData(): empty"); 696 printDebug("Serializer::readSyncData(): empty");
697 return true; 697 return true;
698 } 698 }
699 for (i = 0; i < numSync; ++i) { 699 for (i = 0; i < numSync; ++i) {
700 cur = nl.item(i); 700 cur = nl.item(i);
701 if (cur.nodeName().left(1) == SYNC_TARGET_PREFIX) { 701 if (cur.nodeName().left(1) == SYNC_TARGET_PREFIX) {
702 devicename = cur.toElement().attribute(SYNC_TARGET_NAME); 702 devicename = cur.toElement().attribute(SYNC_TARGET_NAME);
703 val = cur.toElement().text(); 703 val = cur.toElement().text();
704 704
705 if ((val == "") || (devicename == QString::null)) { 705 if ((val == "") || (devicename == QString::null)) {
706 printDebug("Serializer::readSyncData(): empty synctarget name or syncdate"); 706 printDebug("Serializer::readSyncData(): empty synctarget name or syncdate");
707 continue; 707 continue;
708 } 708 }
709 709
710 curSync.syncName = devicename; 710 curSync.syncName = devicename;
711#ifndef PWM_EMBEDDED 711#ifndef PWM_EMBEDDED
712 curSync.lastSyncDate = QDateTime::fromString(val, Qt::ISODate); 712 curSync.lastSyncDate = QDateTime::fromString(val, Qt::ISODate);
713#else 713#else
714 curSync.lastSyncDate = KGlobal::locale()->readDateTime(val, KLocale::ISODate, &ok); 714 curSync.lastSyncDate = KGlobal::locale()->readDateTime(val, KLocale::ISODate, &ok);
715 if (ok == false) 715 if (ok == false)
716 qDebug("Serializer::readSyncData(): could not parse syncdate:%s",val.latin1()); 716 qDebug("Serializer::readSyncData(): could not parse syncdate:%s",val.latin1());
717 717
718#endif 718#endif
719 dta->push_back(curSync); 719 dta->push_back(curSync);
720 } 720 }
721 } 721 }
722 return true; 722 return true;
723 723
724} 724}
725 725
726 726
727 727
728bool Serializer::addSyncData(QDomElement *e, 728bool Serializer::addSyncData(QDomElement *e,
729 const vector<PwMSyncItem> &dta) 729 const vector<PwMSyncItem> &dta)
730{ 730{
731 unsigned int numSync = dta.size(), i; 731 unsigned int numSync = dta.size(), i;
732 QString curId, curDeviceName; 732 QString curId, curDeviceName;
733 QDomElement curSync, curSyncDate; 733 QDomElement curSync, curSyncDate;
734 QDomText text; 734 QDomText text;
735 735
736 for (i = 0; i < numSync; ++i) { 736 for (i = 0; i < numSync; ++i) {
737 curId = SYNC_TARGET_PREFIX; 737 curId = SYNC_TARGET_PREFIX;
738 curId += tostr(i).c_str(); 738 curId += tostr(i).c_str();
739 curDeviceName = dta[i].syncName.c_str(); 739 curDeviceName = dta[i].syncName.c_str();
740 curSync = domDoc->createElement(curId); 740 curSync = domDoc->createElement(curId);
741 curSync.setAttribute(SYNC_TARGET_NAME, curDeviceName); 741 curSync.setAttribute(SYNC_TARGET_NAME, curDeviceName);
742 742
743#ifndef PWM_EMBEDDED 743#ifndef PWM_EMBEDDED
744 text = domDoc->createTextNode(dta[i].lastSyncDate.toString(Qt::ISODate)); 744 text = domDoc->createTextNode(dta[i].lastSyncDate.toString(Qt::ISODate));
745#else 745#else
746 text = domDoc->createTextNode(KGlobal::locale()->formatDateTime(dta[i].lastSyncDate, KLocale::ISODate)); 746 text = domDoc->createTextNode(KGlobal::locale()->formatDateTime(dta[i].lastSyncDate, KLocale::ISODate));
747#endif 747#endif
748 curSyncDate.appendChild(text); 748 curSyncDate.appendChild(text);
749 curSync.appendChild(curSyncDate); 749 curSync.appendChild(curSyncDate);
750 750
751 e->appendChild(curSync); 751 e->appendChild(curSync);
752 752
753 } 753 }
754 return true; 754 return true;
755} 755}
756 756