#include #include #include "settings.h" #include "file.h" using namespace std; ///////////////////////////////////////////////////////////////// // SimpleSettings ///////////////////////////////////////////////////////////////// SimpleSettings::SimpleSettings() { clear(); } SimpleSettings::~SimpleSettings() { } void SimpleSettings::clear() { keylist.clear(); valuelist.clear(); } void SimpleSettings::readSettings (const QString &path) { QString s; if (!loadStringFromDisk(path,s)) { qWarning ("SimpleSettings::readSettings() Couldn't read "+path); return; } QStringList lines; lines=QStringList::split (QRegExp("\n"),s,false); int i; QStringList::Iterator it=lines.begin(); while (it !=lines.end() ) { i=(*it).find("=",0); keylist.append((*it).left(i)); valuelist.append((*it).right((*it).length()-i-1)); it++; } } void SimpleSettings::writeSettings (const QString &path) { QString s; QStringList::Iterator itk=keylist.begin(); QStringList::Iterator itv=valuelist.begin(); // First search for value in settings saved in map while (itk !=keylist.end() ) { s+=*itk+"="+*itv+"\n"; itk++; itv++; } if (!saveStringToDisk(path,s)) qWarning ("SimpleSettings::writeSettings() Couldn't write "+path); } QString SimpleSettings::readEntry (const QString &key) { QStringList::Iterator itk=keylist.begin(); QStringList::Iterator itv=valuelist.begin(); // First search for value in settings saved in map while (itk !=keylist.end() ) { if (*itk == key) return *itv; itk++; itv++; } qWarning ("SimpleSettings::readEntry() Couldn't find key "+key); return ""; } void SimpleSettings::setEntry (const QString &key, const QString &value) { QStringList::Iterator itk=keylist.begin(); QStringList::Iterator itv=valuelist.begin(); if (!key.isEmpty() ) { // Search for existing entry first while (itk !=keylist.end() ) { if (*itk == key) { if (!value.isEmpty()) *itv=value; else *itv=""; *itv=value; return; } itk++; itv++; } // If no entry exists, append a new one keylist.append (key); valuelist.append (value); } } ///////////////////////////////////////////////////////////////// // Settings ///////////////////////////////////////////////////////////////// Settings::Settings() { clear(); } Settings::~Settings() { } void Settings::clear() { pathlist.clear(); keylist.clear(); valuelist.clear(); } void Settings::clearLocal(const QString &s) { QStringList::Iterator itp=pathlist.begin(); QStringList::Iterator itk=keylist.begin(); QStringList::Iterator itv=valuelist.begin(); while (itp !=pathlist.end() ) { if ((*itk).startsWith (s)) { itp=pathlist.remove (itp); itk=keylist.remove (itk); itv=valuelist.remove (itv); } else { itp++; itk++; itv++; } } } QString Settings::readLocalEntry ( const QString &fpath, const QString & key, const QString & def = QString::null ) { QStringList::Iterator itp=pathlist.begin(); QStringList::Iterator itk=keylist.begin(); QStringList::Iterator itv=valuelist.begin(); // First search for value in settings saved in map while (itp !=pathlist.end() ) { if (*itp == fpath && *itk == key) return *itv; itp++; itk++; itv++; } // Fall back to global vym settings bool ok; return readEntry (key,def, &ok); } void Settings::setLocalEntry (const QString &fpath, const QString &key, const QString &value) { QStringList::Iterator itp=pathlist.begin(); QStringList::Iterator itk=keylist.begin(); QStringList::Iterator itv=valuelist.begin(); if (!fpath.isEmpty() && !key.isEmpty() && !value.isEmpty() ) { // Search for existing entry first while (itp !=pathlist.end() ) { if (*itp == fpath && *itk == key) { *itv=value; return; } itp++; itk++; itv++; } // If no entry exists, append a new one pathlist.append (fpath); keylist.append (key); valuelist.append (value); } } QString Settings::getXMLData (const QString &fpath) { QString s; QStringList::Iterator itp=pathlist.begin(); QStringList::Iterator itk=keylist.begin(); QStringList::Iterator itv=valuelist.begin(); while (itp !=pathlist.end() ) { if (*itp == fpath ) if (!(*itv).isEmpty()) s+=singleElement ( "setting", attribut ("key",*itk) +attribut ("value",*itv) )+"\n"; itp++; itk++; itv++; } return s; }