summaryrefslogtreecommitdiffabout
path: root/microkde/kconfig.cpp
authorzautrix <zautrix>2005-07-02 16:10:28 (UTC)
committer zautrix <zautrix>2005-07-02 16:10:28 (UTC)
commit20c9e9cb71ad64aebfa27157bb152ece4e34c00a (patch) (unidiff)
tree6ecd2ce2136875d974d5d361f611b39f5ad86a00 /microkde/kconfig.cpp
parent7b7c582bbb9908ec65c778b70baa6b2c2aa457fc (diff)
downloadkdepimpi-20c9e9cb71ad64aebfa27157bb152ece4e34c00a.zip
kdepimpi-20c9e9cb71ad64aebfa27157bb152ece4e34c00a.tar.gz
kdepimpi-20c9e9cb71ad64aebfa27157bb152ece4e34c00a.tar.bz2
fixxxx
Diffstat (limited to 'microkde/kconfig.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--microkde/kconfig.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/microkde/kconfig.cpp b/microkde/kconfig.cpp
index e0b6e99..821e386 100644
--- a/microkde/kconfig.cpp
+++ b/microkde/kconfig.cpp
@@ -1,319 +1,322 @@
1#include <qfile.h> 1#include <qfile.h>
2#include <qtextstream.h> 2#include <qtextstream.h>
3#include <qwidget.h> 3#include <qwidget.h>
4 4
5#include "kdebug.h" 5#include "kdebug.h"
6 6
7#include "kurl.h" 7#include "kurl.h"
8#include "kstandarddirs.h" 8#include "kstandarddirs.h"
9#include "kconfig.h" 9#include "kconfig.h"
10 10
11QString KConfig::mGroup = ""; 11QString KConfig::mGroup = "";
12//QString KConfig::mGroup = "General"; 12//QString KConfig::mGroup = "General";
13 13
14KConfig::KConfig( const QString &fileName ) 14KConfig::KConfig( const QString &fileName )
15 : mFileName( fileName ), mDirty( false ) 15 : mFileName( fileName ), mDirty( false )
16{ 16{
17 17
18 mTempGroup = ""; 18 mTempGroup = "";
19 load(); 19 load();
20 20
21} 21}
22 22
23 23
24KConfig::~KConfig() 24KConfig::~KConfig()
25{ 25{
26 sync(); 26 sync();
27} 27}
28// we need the temp group for plugins on windows 28// we need the temp group for plugins on windows
29void KConfig::setTempGroup( const QString &group ) 29void KConfig::setTempGroup( const QString &group )
30{ 30{
31 mTempGroup = group; 31 mTempGroup = group;
32 32
33 if ( mTempGroup.right( 1 ) != "/" ) mTempGroup += "/"; 33 if ( mTempGroup.right( 1 ) != "/" ) mTempGroup += "/";
34} 34}
35 35
36 36
37QString KConfig::tempGroup() const { 37QString KConfig::tempGroup() const {
38 return mTempGroup; 38 return mTempGroup;
39} 39}
40 40
41void KConfig::setGroup( const QString &group ) 41void KConfig::setGroup( const QString &group )
42{ 42{
43 43
44 44
45 mGroup = group; 45 mGroup = group;
46 46
47 if ( mGroup.right( 1 ) != "/" ) mGroup += "/"; 47 if ( mGroup.right( 1 ) != "/" ) mGroup += "/";
48} 48}
49 49
50//US 50//US
51QString KConfig::group() const { 51QString KConfig::group() const {
52 return mGroup; 52 return mGroup;
53} 53}
54 54
55//US added method 55//US added method
56QValueList<int> KConfig::readIntListEntry( const QString & key) 56QValueList<int> KConfig::readIntListEntry( const QString & key)
57{ 57{
58// qDebug("KConfig::readIntListEntry key=%s:", key.latin1()); 58// qDebug("KConfig::readIntListEntry key=%s:", key.latin1());
59 59
60 QValueList<int> result; 60 QValueList<int> result;
61 61
62 QMap<QString,QString>::ConstIterator mit = mStringMap.find( mGroup + key ); 62 QMap<QString,QString>::ConstIterator mit = mStringMap.find( mGroup + key );
63 63
64 if ( mit == mStringMap.end() ) { 64 if ( mit == mStringMap.end() ) {
65 return result; 65 return result;
66 } 66 }
67 67
68 QStringList valuesAsStrings = QStringList::split(":", *mit ); 68 QStringList valuesAsStrings = QStringList::split(":@:", *mit );
69 bool ok = false; 69 bool ok = false;
70 bool ok2 = true; 70 bool ok2 = true;
71 int val; 71 int val;
72 72
73 for ( QStringList::Iterator sit = valuesAsStrings.begin(); sit != valuesAsStrings.end(); ++sit ) { 73 for ( QStringList::Iterator sit = valuesAsStrings.begin(); sit != valuesAsStrings.end(); ++sit ) {
74 val = (*sit).toInt(&ok); 74 val = (*sit).toInt(&ok);
75 result << val; 75 result << val;
76 if (ok == false) { 76 if (ok == false) {
77 //qDebug("KConfig::readIntListEntry str=%s , int=%n:", (*sit).latin1(), &val); 77 //qDebug("KConfig::readIntListEntry str=%s , int=%n:", (*sit).latin1(), &val);
78 ok2 = false; 78 ok2 = false;
79 } 79 }
80 } 80 }
81 81
82 if (ok2 == false) 82 if (ok2 == false)
83 { 83 {
84 84
85 qDebug("KConfig::readIntListEntry: error while reading one of the intvalues."); 85 qDebug("KConfig::readIntListEntry: error while reading one of the intvalues.");
86 } 86 }
87 87
88 return result; 88 return result;
89} 89}
90 90
91int KConfig::readNumEntry( const QString & key, int def ) 91int KConfig::readNumEntry( const QString & key, int def )
92{ 92{
93 QString res = readEntry(key, QString::number(def ) ); 93 QString res = readEntry(key, QString::number(def ) );
94 bool ok = false; 94 bool ok = false;
95 int result = res.toInt(&ok); 95 int result = res.toInt(&ok);
96 if ( ok ) 96 if ( ok )
97 return result; 97 return result;
98 return def; 98 return def;
99} 99}
100 100
101QString KConfig::readEntry( const QString &key, const QString &def ) 101QString KConfig::readEntry( const QString &key, const QString &def )
102{ 102{
103 QMap<QString,QString>::ConstIterator it = mStringMap.find( mGroup + key ); 103 QMap<QString,QString>::ConstIterator it = mStringMap.find( mGroup + key );
104 104
105 if ( it == mStringMap.end() ) { 105 if ( it == mStringMap.end() ) {
106 return def; 106 return def;
107 } 107 }
108 108
109 return QString::fromUtf8((*it).latin1()); 109 return QString::fromUtf8((*it).latin1());
110} 110}
111 111
112QSize KConfig::readSizeEntry( const QString &key, QSize* def ) 112QSize KConfig::readSizeEntry( const QString &key, QSize* def )
113{ 113{
114 QValueList<int> intlist = readIntListEntry(key); 114 QValueList<int> intlist = readIntListEntry(key);
115 115
116 if (intlist.count() < 2) 116 if (intlist.count() < 2)
117 { 117 {
118 if (def) 118 if (def)
119 return *def; 119 return *def;
120 else 120 else
121 return QSize(); 121 return QSize();
122 } 122 }
123 123
124 QSize ret; 124 QSize ret;
125 ret.setWidth(intlist[0]); 125 ret.setWidth(intlist[0]);
126 ret.setHeight(intlist[1]); 126 ret.setHeight(intlist[1]);
127 127
128 return ret; 128 return ret;
129} 129}
130 130
131QStringList KConfig::readListEntry( const QString &key ) 131QStringList KConfig::readListEntry( const QString &key )
132{ 132{
133 QMap<QString,QString>::ConstIterator it = mStringMap.find( mGroup + key ); 133 QMap<QString,QString>::ConstIterator it = mStringMap.find( mGroup + key );
134 134
135 if ( it == mStringMap.end() ) { 135 if ( it == mStringMap.end() ) {
136 return QStringList(); 136 return QStringList();
137 } 137 }
138 return QStringList::split(":", QString::fromUtf8((*it).latin1())); 138 QStringList temp = QStringList::split(":@:", QString::fromUtf8((*it).latin1()));
139 if ( temp.count() == 1 )
140 return QStringList::split(":", QString::fromUtf8((*it).latin1()));
141 return temp;
139 142
140} 143}
141 144
142bool KConfig::readBoolEntry( const QString &key, bool def ) 145bool KConfig::readBoolEntry( const QString &key, bool def )
143{ 146{
144 QMap<QString,bool>::ConstIterator it = mBoolMap.find( mGroup + key ); 147 QMap<QString,bool>::ConstIterator it = mBoolMap.find( mGroup + key );
145 148
146 if ( it == mBoolMap.end() ) { 149 if ( it == mBoolMap.end() ) {
147 return def; 150 return def;
148 } 151 }
149 152
150 return *it; 153 return *it;
151} 154}
152 155
153QColor KConfig::readColorEntry( const QString & e, QColor *def ) 156QColor KConfig::readColorEntry( const QString & e, QColor *def )
154{ 157{
155 158
156 QStringList l; 159 QStringList l;
157 l = readListEntry( e.utf8() ); 160 l = readListEntry( e.utf8() );
158 if (l.count() != 3 ) { 161 if (l.count() != 3 ) {
159 if ( def ) 162 if ( def )
160 return *def; 163 return *def;
161 else 164 else
162 return QColor(); 165 return QColor();
163 } 166 }
164 QColor c ( l[0].toInt(), l[1].toInt(), l[2].toInt() ); 167 QColor c ( l[0].toInt(), l[1].toInt(), l[2].toInt() );
165 return c; 168 return c;
166} 169}
167 170
168QFont KConfig::readFontEntry( const QString & e, QFont *def ) 171QFont KConfig::readFontEntry( const QString & e, QFont *def )
169{ 172{
170 QStringList font = readListEntry( e ); 173 QStringList font = readListEntry( e );
171 if ( font.isEmpty() ) 174 if ( font.isEmpty() )
172 return *def; 175 return *def;
173 QFont f; 176 QFont f;
174 f.setFamily( font[0]); 177 f.setFamily( font[0]);
175 f.setBold ( font[1] == "bold"); 178 f.setBold ( font[1] == "bold");
176 f.setPointSize ( font[2].toInt()); 179 f.setPointSize ( font[2].toInt());
177 f.setItalic( font[3] == "italic" ); 180 f.setItalic( font[3] == "italic" );
178 return f; 181 return f;
179} 182}
180 183
181QDateTime KConfig::readDateTimeEntry( const QString &key, const QDateTime *def ) 184QDateTime KConfig::readDateTimeEntry( const QString &key, const QDateTime *def )
182{ 185{
183 QMap<QString,QDateTime>::ConstIterator it = mDateTimeMap.find( mGroup + key ); 186 QMap<QString,QDateTime>::ConstIterator it = mDateTimeMap.find( mGroup + key );
184 187
185 if ( it == mDateTimeMap.end() ) { 188 if ( it == mDateTimeMap.end() ) {
186 if ( def ) return *def; 189 if ( def ) return *def;
187 else return QDateTime(); 190 else return QDateTime();
188 } 191 }
189 192
190 return *it; 193 return *it;
191} 194}
192 195
193//US added method 196//US added method
194void KConfig::writeEntry( const QString &key, const QValueList<int> &value) 197void KConfig::writeEntry( const QString &key, const QValueList<int> &value)
195{ 198{
196 QStringList valuesAsStrings; 199 QStringList valuesAsStrings;
197 200
198 QValueList<int>::ConstIterator it; 201 QValueList<int>::ConstIterator it;
199 202
200 for( it = value.begin(); it != value.end(); ++it ) 203 for( it = value.begin(); it != value.end(); ++it )
201 { 204 {
202 valuesAsStrings << QString::number(*it); 205 valuesAsStrings << QString::number(*it);
203 } 206 }
204 207
205 mStringMap.insert( mGroup + key, valuesAsStrings.join(":") ); 208 mStringMap.insert( mGroup + key, valuesAsStrings.join(":") );
206 mDirty = true; 209 mDirty = true;
207} 210}
208 211
209void KConfig::writeEntry( const QString & key , int num ) 212void KConfig::writeEntry( const QString & key , int num )
210{ 213{
211 writeEntry( key, QString::number ( num ) ); 214 writeEntry( key, QString::number ( num ) );
212} 215}
213 216
214void KConfig::writeEntry( const QString &key, const QString &value ) 217void KConfig::writeEntry( const QString &key, const QString &value )
215{ 218{
216 mStringMap.insert( mGroup + key, value.utf8() ); 219 mStringMap.insert( mGroup + key, value.utf8() );
217 220
218 mDirty = true; 221 mDirty = true;
219} 222}
220 223
221void KConfig::writeEntry( const QString &key, const QStringList &value ) 224void KConfig::writeEntry( const QString &key, const QStringList &value )
222{ 225{
223 mStringMap.insert( mGroup + key, value.join(":").utf8() ); 226 mStringMap.insert( mGroup + key, value.join(":@:").utf8() );
224 227
225 mDirty = true; 228 mDirty = true;
226} 229}
227 230
228void KConfig::writeEntry( const QString &key, bool value) 231void KConfig::writeEntry( const QString &key, bool value)
229{ 232{
230 mBoolMap.insert( mGroup + key, value ); 233 mBoolMap.insert( mGroup + key, value );
231 234
232 mDirty = true; 235 mDirty = true;
233} 236}
234 237
235void KConfig::writeEntry( const QString & e, const QColor & c ) 238void KConfig::writeEntry( const QString & e, const QColor & c )
236{ 239{
237 QStringList l; 240 QStringList l;
238 l.append( QString::number ( c.red() ) ); 241 l.append( QString::number ( c.red() ) );
239 l.append( QString::number ( c.green() ) ); 242 l.append( QString::number ( c.green() ) );
240 l.append( QString::number ( c.blue() ) ); 243 l.append( QString::number ( c.blue() ) );
241 writeEntry( e.utf8(), l ); 244 writeEntry( e.utf8(), l );
242} 245}
243 246
244void KConfig::writeEntry( const QString & e, const QSize & s ) 247void KConfig::writeEntry( const QString & e, const QSize & s )
245{ 248{
246 QValueList<int> intlist; 249 QValueList<int> intlist;
247 intlist << s.width() << s.height(); 250 intlist << s.width() << s.height();
248 writeEntry( e, intlist ); 251 writeEntry( e, intlist );
249} 252}
250 253
251void KConfig::writeEntry( const QString & e , const QFont & f ) 254void KConfig::writeEntry( const QString & e , const QFont & f )
252{ 255{
253 QStringList font; 256 QStringList font;
254 font.append( f.family()); 257 font.append( f.family());
255 font.append( (!f.bold ()?"nonbold":"bold") ); 258 font.append( (!f.bold ()?"nonbold":"bold") );
256 font.append( QString::number ( f.pointSize () ) ); 259 font.append( QString::number ( f.pointSize () ) );
257 font.append( !f.italic ()?"nonitalic":"italic" ); 260 font.append( !f.italic ()?"nonitalic":"italic" );
258 writeEntry( e, font ); 261 writeEntry( e, font );
259} 262}
260 263
261void KConfig::writeEntry( const QString &key, const QDateTime &dt ) 264void KConfig::writeEntry( const QString &key, const QDateTime &dt )
262{ 265{
263 mDateTimeMap.insert( mGroup + key, dt ); 266 mDateTimeMap.insert( mGroup + key, dt );
264} 267}
265 268
266void KConfig::load() 269void KConfig::load()
267{ 270{
268 271
269 272
270 QFile f( mFileName ); 273 QFile f( mFileName );
271 if ( !f.open( IO_ReadOnly ) ) { 274 if ( !f.open( IO_ReadOnly ) ) {
272 //qDebug("KConfig: could not open file %s ",mFileName.latin1() ); 275 //qDebug("KConfig: could not open file %s ",mFileName.latin1() );
273 return; 276 return;
274 } 277 }
275 278
276 mBoolMap.clear(); 279 mBoolMap.clear();
277 mStringMap.clear(); 280 mStringMap.clear();
278 281
279 QTextStream t( &f ); 282 QTextStream t( &f );
280 t.setEncoding( QTextStream::Latin1 ); 283 t.setEncoding( QTextStream::Latin1 );
281 QString line = t.readLine(); 284 QString line = t.readLine();
282 285
283 while ( !line.isNull() ) { 286 while ( !line.isNull() ) {
284 QStringList tokens = QStringList::split( ",", line ); 287 QStringList tokens = QStringList::split( ",", line );
285 if ( tokens[0] == "bool" ) { 288 if ( tokens[0] == "bool" ) {
286 bool value = false; 289 bool value = false;
287 if ( tokens[2] == "1" ) value = true; 290 if ( tokens[2] == "1" ) value = true;
288 mBoolMap.insert( tokens[1], value ); 291 mBoolMap.insert( tokens[1], value );
289 } else if ( tokens[0] == "QString" ) { 292 } else if ( tokens[0] == "QString" ) {
290 QString value = tokens[2]; 293 QString value = tokens[2];
291 mStringMap.insert( tokens[1], value ); 294 mStringMap.insert( tokens[1], value );
292 } else if ( tokens[0] == "QDateTime" ) { 295 } else if ( tokens[0] == "QDateTime" ) {
293#if 0 296#if 0
294 int year = tokens[2].toInt(); 297 int year = tokens[2].toInt();
295 QDateTime dt( QDate( year, 298 QDateTime dt( QDate( year,
296 tokens[3].toInt(), 299 tokens[3].toInt(),
297 tokens[4].toInt() ), 300 tokens[4].toInt() ),
298 QTime( tokens[5].toInt(), tokens[6].toInt(), 301 QTime( tokens[5].toInt(), tokens[6].toInt(),
299 tokens[7].toInt() ) ); 302 tokens[7].toInt() ) );
300 mDateTimeMap.insert( tokens[1], dt ); 303 mDateTimeMap.insert( tokens[1], dt );
301#endif 304#endif
302 } 305 }
303 306
304 line = t.readLine(); 307 line = t.readLine();
305 } 308 }
306} 309}
307 310
308void KConfig::sync() 311void KConfig::sync()
309{ 312{
310 313
311 if ( !mDirty ) return; 314 if ( !mDirty ) return;
312 //qDebug("KConfig::sync() %s ",mFileName.latin1() ); 315 //qDebug("KConfig::sync() %s ",mFileName.latin1() );
313 //kdDebug() << "KConfig::sync(): " << mFileName << endl; 316 //kdDebug() << "KConfig::sync(): " << mFileName << endl;
314 317
315//US I took the following code from a newer version of KDE 318//US I took the following code from a newer version of KDE
316 // Create the containing dir if needed 319 // Create the containing dir if needed
317 KURL path; 320 KURL path;
318 path.setPath(mFileName); 321 path.setPath(mFileName);
319 QString dir=path.directory(); 322 QString dir=path.directory();