00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include <vidalia.h>
00018
00019 #include "vsettings.h"
00020
00021
00022 #define SETTINGS_FILE (Vidalia::dataDirectory() + "/vidalia.conf")
00023
00024
00025
00026 VSettings::VSettings(const QString settingsGroup)
00027 : QSettings(SETTINGS_FILE, QSettings::IniFormat)
00028 {
00029 if (!settingsGroup.isEmpty())
00030 beginGroup(settingsGroup);
00031 }
00032
00033
00034
00035
00036
00037 QVariant
00038 VSettings::value(const QString &key, const QVariant &defaultVal) const
00039 {
00040 return QSettings::value(key, defaultVal.isNull() ? defaultValue(key)
00041 : defaultVal);
00042 }
00043
00044
00045 void
00046 VSettings::setValue(const QString &key, const QVariant &val)
00047 {
00048 if (val == defaultValue(key))
00049 QSettings::remove(key);
00050 else if (val != value(key))
00051 QSettings::setValue(key, val);
00052 }
00053
00054
00055 void
00056 VSettings::setDefault(const QString &key, const QVariant &val)
00057 {
00058 _defaults.insert(key, val);
00059 }
00060
00061
00062
00063 QVariant
00064 VSettings::defaultValue(const QString &key) const
00065 {
00066 if (_defaults.contains(key))
00067 return _defaults.value(key);
00068 return QVariant();
00069 }
00070
00071
00072 void
00073 VSettings::reset()
00074 {
00075
00076 QSettings settings(SETTINGS_FILE, QSettings::IniFormat);
00077 settings.clear();
00078 }
00079
00080
00081 QMap<QString, QVariant>
00082 VSettings::allSettings() const
00083 {
00084 QMap<QString, QVariant> settings;
00085 foreach (QString key, allKeys()) {
00086 settings.insert(key, value(key));
00087 }
00088 return settings;
00089 }
00090