# # # patch "src/util/Settings.cpp" # from [b97572b9af33d21346538a6765f9d82d6f1611de] # to [6f7890495fbe7859d349114be2cea5536c6044ee] # # patch "src/util/Settings.h" # from [cdb32058b97bf73a52fee50a9f1c0a1f411f114e] # to [824bd489f11a42d8bf1753a61edac64e52918ff1] # ============================================================ --- src/util/Settings.cpp b97572b9af33d21346538a6765f9d82d6f1611de +++ src/util/Settings.cpp 6f7890495fbe7859d349114be2cea5536c6044ee @@ -36,17 +36,17 @@ Settings * Settings::singleton() return instance; } -Settings::Settings() : QSettings() +Settings::Settings() : inner(0) { - stringDefaults.insert("AnnotationColorOldestRevision", "#FCFFC0"); - stringDefaults.insert("AnnotationColorNewestRevision", "#FF6609"); - stringDefaults.insert("AnnotationColorHighlight", "#EEEEEE"); - stringDefaults.insert("DiffColorAddedLines", "#90EE90"); - stringDefaults.insert("DiffColorRemovedLines", "#FFCC99"); - stringDefaults.insert("ChangesetBrowserMergeRevisions", "#32CD32"); - stringDefaults.insert("ChangesetBrowserOutOfBranchRevisions", "#AAAAAA"); + defaults.insert("AnnotationColorOldestRevision", "#FCFFC0"); + defaults.insert("AnnotationColorNewestRevision", "#FF6609"); + defaults.insert("AnnotationColorHighlight", "#EEEEEE"); + defaults.insert("DiffColorAddedLines", "#90EE90"); + defaults.insert("DiffColorRemovedLines", "#FFCC99"); + defaults.insert("ChangesetBrowserMergeRevisions", "#32CD32"); + defaults.insert("ChangesetBrowserOutOfBranchRevisions", "#AAAAAA"); - stringDefaults.insert("AskFileOpenExt", + defaults.insert("AskFileOpenExt", "exe,com,bat,pif,hta,js,jse,inf,lnk," // Windows "scr,wsc,wsf,wsh,vb,vbe,vbs,vbscript," // Windows, continued "sh,bsh,zsh,csh,ksh,py,pl,php,php3," // Unices @@ -54,21 +54,73 @@ Settings::Settings() : QSettings() "app,pkg,dmg,scpt" // Mac OS X ); - boolDefaults.insert("ConsoleLogEnabled", true); - boolDefaults.insert("FileLogEnabled", false); - boolDefaults.insert("CheckForUpdates", true); - boolDefaults.insert("DisableChangelogAutoCompletion", false); - boolDefaults.insert("FixUnwantedReverseDiffs", true); - boolDefaults.insert("SaveEncodingAsFileAttribute", true); - boolDefaults.insert("RelaxedVersionCheck", false); - boolDefaults.insert("AskFileOpen", true); - boolDefaults.insert("ReadWorkspaceIncrementally", false); - boolDefaults.insert("ReadUserRcFiles", false); - boolDefaults.insert("ChangesetBrowserTree", false); + defaults.insert("SkipGuitoneVersion", QString()); + defaults.insert("LogLevel", DebugLog::Info); + defaults.insert("MtnExePath", "mtn"); + + defaults.insert("ConsoleLogEnabled", true); + defaults.insert("FileLogEnabled", false); + defaults.insert("CheckForUpdates", true); + defaults.insert("DisableChangelogAutoCompletion", false); + defaults.insert("FixUnwantedReverseDiffs", true); + defaults.insert("SaveEncodingAsFileAttribute", true); + defaults.insert("RelaxedVersionCheck", false); + defaults.insert("AskFileOpen", true); + defaults.insert("ReadWorkspaceIncrementally", false); + defaults.insert("ReadUserRcFiles", false); + defaults.insert("ChangesetBrowserTree", false); } -Settings::~Settings() {} +Settings::~Settings() +{ + if (inner) delete inner; +} +QSettings * Settings::getInner() +{ + if (inner == 0 && QCoreApplication::instance() != 0) + { + inner = new QSettings(); + } + return inner; +} + +QVariant Settings::value(const QString & key) const +{ + I(defaults.contains(key)); + QVariant def = defaults.value(key); + return value(key, def); +} + +QVariant Settings::value(const QString & key, const QVariant & defaultValue) const +{ + QSettings * settings = const_cast(this)->getInner(); + if (settings) + return settings->value(key, defaultValue); + return defaultValue; +} + +void Settings::setValue(const QString & key, const QVariant & value) +{ + QSettings * settings = getInner(); + if (settings) + settings->setValue(key, value); +} + +void Settings::doClear() +{ + QSettings * settings = getInner(); + if (settings) + settings->clear(); +} + +void Settings::doSync() +{ + QSettings * settings = getInner(); + if (settings) + settings->sync(); +} + void Settings::setBool(const QString & name, bool value) { I(!name.isEmpty()); @@ -78,9 +130,7 @@ bool Settings::getBool(const QString & n bool Settings::getBool(const QString & name) { I(!name.isEmpty()); - Settings * settings = singleton(); - I(settings->boolDefaults.contains(name)); - return singleton()->value(name, settings->boolDefaults.value(name)).toBool(); + return singleton()->value(name).toBool(); } void Settings::setString(const QString & name, const QString & value) @@ -89,16 +139,10 @@ void Settings::setString(const QString & singleton()->setValue(name, value); } -QString Settings::getString(const QString & name, const QString & defaultValue) +QString Settings::getString(const QString & name) { I(!name.isEmpty()); - Settings * settings = singleton(); - QString value = defaultValue; - if (defaultValue.isNull() && settings->stringDefaults.contains(name)) - { - value = settings->stringDefaults.value(name); - } - return settings->value(name, value).toString(); + return singleton()->value(name).toString(); } void Settings::setWindowGeometry(const QString & windowClass, const QByteArray & data) @@ -110,22 +154,22 @@ QByteArray Settings::getWindowGeometry(c QByteArray Settings::getWindowGeometry(const QString & windowClass) { I(!windowClass.isEmpty()); - return singleton()->value(windowClass).toByteArray(); + return singleton()->value(windowClass, QByteArray()).toByteArray(); } void Settings::sync() { - singleton()->QSettings::sync(); + singleton()->doSync(); } void Settings::clear() { - singleton()->QSettings::clear(); + singleton()->doClear(); } QString Settings::getMtnBinaryPath() { - return singleton()->value("MtnExePath", "mtn").toString(); + return singleton()->value("MtnExePath").toString(); } void Settings::setMtnBinaryPath(const QString & path) @@ -135,8 +179,7 @@ int Settings::getLogLevel() int Settings::getLogLevel() { - // 4 is debug, see DebugLog.h - return singleton()->value("LogLevel", 4).toInt(); + return singleton()->value("LogLevel").toInt(); } void Settings::setLogLevel(int verbosity) @@ -164,7 +207,7 @@ void Settings::restoreHeaderViewState(QH void Settings::restoreHeaderViewState(QHeaderView * view, const QString & name) { I(!name.isEmpty()); - QString colConfig(singleton()->value(name).toString()); + QString colConfig(singleton()->value(name, QString()).toString()); QStringList cols = colConfig.split(",", QString::SkipEmptyParts); int colCount = cols.size(); @@ -186,7 +229,7 @@ QByteArray Settings::getSplitterState(co QByteArray Settings::getSplitterState(const QString & name) { I(!name.isEmpty()); - return singleton()->value(name).toByteArray(); + return singleton()->value(name, QByteArray()).toByteArray(); } void Settings::setSplitterState(const QByteArray & byteArray, const QString & name) @@ -205,7 +248,7 @@ QStringList Settings::getItemList(const QStringList Settings::getItemList(const QString & name) { I(!name.isEmpty()); - return singleton()->value(name).toStringList(); + return singleton()->value(name, QStringList()).toStringList(); } void Settings::addItemToList(const QString & name, const QString & item, int maxItems) @@ -247,7 +290,7 @@ QMap Settings::getIte QMap Settings::getItemMap(const QString & name) { I(!name.isEmpty()); - return singleton()->value(name).toMap(); + return singleton()->value(name, QMap()).toMap(); } QVariant Settings::getItemFromMap(const QString & name, const QString & key) ============================================================ --- src/util/Settings.h cdb32058b97bf73a52fee50a9f1c0a1f411f114e +++ src/util/Settings.h 824bd489f11a42d8bf1753a61edac64e52918ff1 @@ -23,7 +23,7 @@ #include #include -class Settings : public QSettings +class Settings { public: @@ -31,7 +31,7 @@ public: static bool getBool(const QString &); static void setString(const QString &, const QString &); - static QString getString(const QString &, const QString & defaultValue = QString()); + static QString getString(const QString &); static void setWindowGeometry(const QString &, const QByteArray &); static QByteArray getWindowGeometry(const QString &); @@ -68,8 +68,17 @@ private: static Settings * singleton(); static Settings * instance; - QMap stringDefaults; - QMap boolDefaults; + QVariant value(const QString &) const; + QVariant value(const QString &, const QVariant &) const; + void setValue(const QString &, const QVariant &); + + void doClear(); + void doSync(); + + QSettings * getInner(); + QSettings * inner; + + QMap defaults; }; #endif