-rw-r--r-- | library/config.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/library/config.cpp b/library/config.cpp index 0bfb476..664ca34 100644 --- a/library/config.cpp +++ b/library/config.cpp @@ -278,303 +278,303 @@ void Config::writeEntry( const QString &key, const QStringList &lst, const QChar QString s; QStringList::ConstIterator it = lst.begin(); for ( ; it != lst.end(); ++it ) s += *it + sep; writeEntry( key, s ); } /*! Removes the \a key entry from the current group. Does nothing if there is no such entry. */ void Config::removeEntry( const QString &key ) { if ( git == groups.end() ) { qWarning( "no group set" ); return; } ( *git ).remove( key ); changed = TRUE; } /*! \fn bool Config::operator == ( const Config & other ) const Tests for equality with \a other. Config objects are equal if they refer to the same filename. */ /*! \fn bool Config::operator != ( const Config & other ) const Tests for inequality with \a other. Config objects are equal if they refer to the same filename. */ /*! \fn QString Config::readEntry( const QString &key, const QString &deflt ) const Reads a string entry stored with \a key, defaulting to \a deflt if there is no entry. */ /*! \internal For compatibility, non-const version. */ QString Config::readEntry( const QString &key, const QString &deflt ) { QString res = readEntryDirect( key+"["+lang+"]" ); if ( !res.isNull() ) return res; if ( !glang.isEmpty() ) { res = readEntryDirect( key+"["+glang+"]" ); if ( !res.isNull() ) return res; } return readEntryDirect( key, deflt ); } /*! \fn QString Config::readEntryCrypt( const QString &key, const QString &deflt ) const Reads an encrypted string entry stored with \a key, defaulting to \a deflt if there is no entry. */ /*! \internal For compatibility, non-const version. */ QString Config::readEntryCrypt( const QString &key, const QString &deflt ) { QString res = readEntryDirect( key+"["+lang+"]" ); if ( res.isNull() && glang.isEmpty() ) res = readEntryDirect( key+"["+glang+"]" ); if ( res.isNull() ) res = readEntryDirect( key, QString::null ); if ( res.isNull() ) return deflt; return decipher(res); } /*! \fn QString Config::readEntryDirect( const QString &key, const QString &deflt ) const \internal */ /*! \internal For compatibility, non-const version. */ QString Config::readEntryDirect( const QString &key, const QString &deflt ) { if ( git == groups.end() ) { //qWarning( "no group set" ); return deflt; } ConfigGroup::ConstIterator it = ( *git ).find( key ); if ( it != ( *git ).end() ) return *it; else return deflt; } /*! \fn int Config::readNumEntry( const QString &key, int deflt ) const Reads a numeric entry stored with \a key, defaulting to \a deflt if there is no entry. */ /*! \internal For compatibility, non-const version. */ int Config::readNumEntry( const QString &key, int deflt ) { QString s = readEntry( key ); if ( s.isEmpty() ) return deflt; else return s.toInt(); } /*! \fn bool Config::readBoolEntry( const QString &key, bool deflt ) const Reads a bool entry stored with \a key, defaulting to \a deflt if there is no entry. */ /*! \internal For compatibility, non-const version. */ bool Config::readBoolEntry( const QString &key, bool deflt ) { QString s = readEntry( key ); if ( s.isEmpty() ) return deflt; else return (bool)s.toInt(); } /*! \fn QStringList Config::readListEntry( const QString &key, const QChar &sep ) const Reads a string list entry stored with \a key, and with \a sep as the separator. */ /*! \internal For compatibility, non-const version. */ QStringList Config::readListEntry( const QString &key, const QChar &sep ) { QString s = readEntry( key ); if ( s.isEmpty() ) return QStringList(); else return QStringList::split( sep, s ); } /*! Removes all entries from the current group. */ void Config::clearGroup() { if ( git == groups.end() ) { qWarning( "no group set" ); return; } if ( !(*git).isEmpty() ) { ( *git ).clear(); changed = TRUE; } } /*! \internal */ void Config::write( const QString &fn ) { QString strNewFile; if ( !fn.isEmpty() ) filename = fn; strNewFile = filename + ".new"; QFile f( strNewFile ); if ( !f.open( IO_WriteOnly|IO_Raw ) ) { qWarning( "could not open for writing `%s'", strNewFile.latin1() ); git = groups.end(); return; } QString str; QCString cstr; QMap< QString, ConfigGroup >::Iterator g_it = groups.begin(); for ( ; g_it != groups.end(); ++g_it ) { - str += "[" + g_it.key() + "]\n"; - ConfigGroup::Iterator e_it = ( *g_it ).begin(); - for ( ; e_it != ( *g_it ).end(); ++e_it ) - str += e_it.key() + " = " + *e_it + "\n"; + str += "[" + g_it.key() + "]\n"; + ConfigGroup::Iterator e_it = ( *g_it ).begin(); + for ( ; e_it != ( *g_it ).end(); ++e_it ) + str += e_it.key() + " = " + *e_it + "\n"; } cstr = str.utf8(); int total_length; total_length = f.writeBlock( cstr.data(), cstr.length() ); if ( total_length != int(cstr.length()) ) { QMessageBox::critical( 0, QObject::tr("Out of Space"), QObject::tr("There was a problem creating\nConfiguration Information \nfor this program.\n\nPlease free up some space and\ntry again.") ); f.close(); QFile::remove( strNewFile ); return; } f.close(); // now rename the file... if ( rename( strNewFile, filename ) < 0 ) { qWarning( "problem renaming the file %s to %s", strNewFile.latin1(), filename.latin1() ); QFile::remove( strNewFile ); } } /*! Returns whether the Config is in a valid state. */ bool Config::isValid() const { return groups.end() != git; } /*! \internal */ void Config::read() { changed = FALSE; if ( !QFileInfo( filename ).exists() ) { git = groups.end(); return; } QFile f( filename ); if ( !f.open( IO_ReadOnly ) ) { git = groups.end(); return; } // hack to avoid problems if big files are passed to test // if they are valid configs ( like passing a mp3 ... ) // I just hope that there are no conf files > 100000 byte // not the best solution, find something else later if ( f.getch()!='[' ||f.size() > 100000 ) { git = groups.end(); return; } f.ungetch('['); QTextStream s( &f ); #if QT_VERSION <= 230 && defined(QT_NO_CODECS) // The below should work, but doesn't in Qt 2.3.0 s.setCodec( QTextCodec::codecForMib( 106 ) ); #else s.setEncoding( QTextStream::UnicodeUTF8 ); #endif QStringList list = QStringList::split('\n', s.read() ); f.close(); for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { if ( !parse( *it ) ) { git = groups.end(); return; } } } /*! \internal */ bool Config::parse( const QString &l ) { QString line = l.stripWhiteSpace(); if ( line [0] == QChar ( '#' )) - return true; // ignore comments + return true; // ignore comments if ( line[ 0 ] == QChar( '[' ) ) { QString gname = line; gname = gname.remove( 0, 1 ); if ( gname[ (int)gname.length() - 1 ] == QChar( ']' ) ) gname = gname.remove( gname.length() - 1, 1 ); git = groups.insert( gname, ConfigGroup() ); } else if ( !line.isEmpty() ) { if ( git == groups.end() ) return FALSE; int eq = line.find( '=' ); if ( eq == -1 ) return FALSE; QString key = line.left(eq).stripWhiteSpace(); QString value = line.mid(eq+1).stripWhiteSpace(); ( *git ).insert( key, value ); } return TRUE; } |