-rw-r--r-- | microkde/kconfig.cpp | 9 |
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 @@ #include <qfile.h> #include <qtextstream.h> #include <qwidget.h> #include "kdebug.h" #include "kurl.h" #include "kstandarddirs.h" #include "kconfig.h" QString KConfig::mGroup = ""; //QString KConfig::mGroup = "General"; KConfig::KConfig( const QString &fileName ) : mFileName( fileName ), mDirty( false ) { mTempGroup = ""; load(); } KConfig::~KConfig() { sync(); } // we need the temp group for plugins on windows void KConfig::setTempGroup( const QString &group ) { mTempGroup = group; if ( mTempGroup.right( 1 ) != "/" ) mTempGroup += "/"; } QString KConfig::tempGroup() const { return mTempGroup; } void KConfig::setGroup( const QString &group ) { mGroup = group; if ( mGroup.right( 1 ) != "/" ) mGroup += "/"; } //US QString KConfig::group() const { return mGroup; } //US added method QValueList<int> KConfig::readIntListEntry( const QString & key) { // qDebug("KConfig::readIntListEntry key=%s:", key.latin1()); QValueList<int> result; QMap<QString,QString>::ConstIterator mit = mStringMap.find( mGroup + key ); if ( mit == mStringMap.end() ) { return result; } - QStringList valuesAsStrings = QStringList::split(":", *mit ); + QStringList valuesAsStrings = QStringList::split(":@:", *mit ); bool ok = false; bool ok2 = true; int val; for ( QStringList::Iterator sit = valuesAsStrings.begin(); sit != valuesAsStrings.end(); ++sit ) { val = (*sit).toInt(&ok); result << val; if (ok == false) { //qDebug("KConfig::readIntListEntry str=%s , int=%n:", (*sit).latin1(), &val); ok2 = false; } } if (ok2 == false) { qDebug("KConfig::readIntListEntry: error while reading one of the intvalues."); } return result; } int KConfig::readNumEntry( const QString & key, int def ) { QString res = readEntry(key, QString::number(def ) ); bool ok = false; int result = res.toInt(&ok); if ( ok ) return result; return def; } QString KConfig::readEntry( const QString &key, const QString &def ) { QMap<QString,QString>::ConstIterator it = mStringMap.find( mGroup + key ); if ( it == mStringMap.end() ) { return def; } return QString::fromUtf8((*it).latin1()); } QSize KConfig::readSizeEntry( const QString &key, QSize* def ) { QValueList<int> intlist = readIntListEntry(key); if (intlist.count() < 2) { if (def) return *def; else return QSize(); } QSize ret; ret.setWidth(intlist[0]); ret.setHeight(intlist[1]); return ret; } QStringList KConfig::readListEntry( const QString &key ) { QMap<QString,QString>::ConstIterator it = mStringMap.find( mGroup + key ); if ( it == mStringMap.end() ) { return QStringList(); } - return QStringList::split(":", QString::fromUtf8((*it).latin1())); + QStringList temp = QStringList::split(":@:", QString::fromUtf8((*it).latin1())); + if ( temp.count() == 1 ) + return QStringList::split(":", QString::fromUtf8((*it).latin1())); + return temp; } bool KConfig::readBoolEntry( const QString &key, bool def ) { QMap<QString,bool>::ConstIterator it = mBoolMap.find( mGroup + key ); if ( it == mBoolMap.end() ) { return def; } return *it; } QColor KConfig::readColorEntry( const QString & e, QColor *def ) { QStringList l; l = readListEntry( e.utf8() ); if (l.count() != 3 ) { if ( def ) return *def; else return QColor(); } QColor c ( l[0].toInt(), l[1].toInt(), l[2].toInt() ); return c; } QFont KConfig::readFontEntry( const QString & e, QFont *def ) { QStringList font = readListEntry( e ); if ( font.isEmpty() ) return *def; QFont f; f.setFamily( font[0]); f.setBold ( font[1] == "bold"); f.setPointSize ( font[2].toInt()); f.setItalic( font[3] == "italic" ); return f; } QDateTime KConfig::readDateTimeEntry( const QString &key, const QDateTime *def ) { QMap<QString,QDateTime>::ConstIterator it = mDateTimeMap.find( mGroup + key ); if ( it == mDateTimeMap.end() ) { if ( def ) return *def; else return QDateTime(); } return *it; } //US added method void KConfig::writeEntry( const QString &key, const QValueList<int> &value) { QStringList valuesAsStrings; QValueList<int>::ConstIterator it; for( it = value.begin(); it != value.end(); ++it ) { valuesAsStrings << QString::number(*it); } mStringMap.insert( mGroup + key, valuesAsStrings.join(":") ); mDirty = true; } void KConfig::writeEntry( const QString & key , int num ) { writeEntry( key, QString::number ( num ) ); } void KConfig::writeEntry( const QString &key, const QString &value ) { mStringMap.insert( mGroup + key, value.utf8() ); mDirty = true; } void KConfig::writeEntry( const QString &key, const QStringList &value ) { - mStringMap.insert( mGroup + key, value.join(":").utf8() ); + mStringMap.insert( mGroup + key, value.join(":@:").utf8() ); mDirty = true; } void KConfig::writeEntry( const QString &key, bool value) { mBoolMap.insert( mGroup + key, value ); mDirty = true; } void KConfig::writeEntry( const QString & e, const QColor & c ) { QStringList l; l.append( QString::number ( c.red() ) ); l.append( QString::number ( c.green() ) ); l.append( QString::number ( c.blue() ) ); writeEntry( e.utf8(), l ); } void KConfig::writeEntry( const QString & e, const QSize & s ) { QValueList<int> intlist; intlist << s.width() << s.height(); writeEntry( e, intlist ); } void KConfig::writeEntry( const QString & e , const QFont & f ) { QStringList font; font.append( f.family()); font.append( (!f.bold ()?"nonbold":"bold") ); font.append( QString::number ( f.pointSize () ) ); font.append( !f.italic ()?"nonitalic":"italic" ); writeEntry( e, font ); } void KConfig::writeEntry( const QString &key, const QDateTime &dt ) { mDateTimeMap.insert( mGroup + key, dt ); } void KConfig::load() { QFile f( mFileName ); if ( !f.open( IO_ReadOnly ) ) { //qDebug("KConfig: could not open file %s ",mFileName.latin1() ); return; } mBoolMap.clear(); mStringMap.clear(); QTextStream t( &f ); t.setEncoding( QTextStream::Latin1 ); QString line = t.readLine(); while ( !line.isNull() ) { QStringList tokens = QStringList::split( ",", line ); if ( tokens[0] == "bool" ) { bool value = false; if ( tokens[2] == "1" ) value = true; mBoolMap.insert( tokens[1], value ); } else if ( tokens[0] == "QString" ) { QString value = tokens[2]; mStringMap.insert( tokens[1], value ); } else if ( tokens[0] == "QDateTime" ) { #if 0 int year = tokens[2].toInt(); QDateTime dt( QDate( year, tokens[3].toInt(), tokens[4].toInt() ), QTime( tokens[5].toInt(), tokens[6].toInt(), tokens[7].toInt() ) ); mDateTimeMap.insert( tokens[1], dt ); #endif } line = t.readLine(); } } void KConfig::sync() { if ( !mDirty ) return; //qDebug("KConfig::sync() %s ",mFileName.latin1() ); //kdDebug() << "KConfig::sync(): " << mFileName << endl; //US I took the following code from a newer version of KDE // Create the containing dir if needed KURL path; path.setPath(mFileName); QString dir=path.directory(); |