[vidalia/alpha] Add non hardcoded defaults handling

commit cdc250c8159a25a9b4a7bb3e386c87f9fc6b4ca7 Author: Tomás Touceda <chiiph@torproject.org> Date: Mon Mar 5 19:38:05 2012 -0300 Add non hardcoded defaults handling Also removes temporary files that shouldn't have been there in the first place. --- src/vidalia/config/VSettings.cpp | 11 +- src/vidalia/config/VSettings.h | 7 +- src/vidalia/config/VidaliaSettings.cpp~ | 396 ------------------------------- src/vidalia/config/VidaliaSettings.h~ | 163 ------------- 4 files changed, 16 insertions(+), 561 deletions(-) diff --git a/src/vidalia/config/VSettings.cpp b/src/vidalia/config/VSettings.cpp index ca8cdd4..020485b 100644 --- a/src/vidalia/config/VSettings.cpp +++ b/src/vidalia/config/VSettings.cpp @@ -20,16 +20,25 @@ /** The file in which all settings will read and written. */ #define SETTINGS_FILE (Vidalia::dataDirectory() + "/vidalia.conf") +#define SETTINGS_DEFAULTS_FILE (Vidalia::dataDirectory() + "/vidalia.defaults.conf") /** Constructor */ VSettings::VSettings(const QString settingsGroup) : QSettings(SETTINGS_FILE, QSettings::IniFormat) { + _defaultSettings = new QSettings(SETTINGS_DEFAULTS_FILE, + QSettings::IniFormat); + if (!settingsGroup.isEmpty()) beginGroup(settingsGroup); } +VSettings::~VSettings() +{ + delete _defaultSettings; +} + /** Returns the location of Vidalia's configuration settings file. */ QString VSettings::settingsFile() @@ -70,7 +79,7 @@ VSettings::setValue(const QString &key, const QVariant &val) void VSettings::setDefault(const QString &key, const QVariant &val) { - _defaults.insert(key, val); + _defaults.insert(key, _defaultSettings->value(key, val)); } /** Returns the default setting value associated with <b>key</b>. If diff --git a/src/vidalia/config/VSettings.h b/src/vidalia/config/VSettings.h index 50357fc..539f9a8 100644 --- a/src/vidalia/config/VSettings.h +++ b/src/vidalia/config/VSettings.h @@ -29,7 +29,9 @@ public: * set a prefix that will be prepended to keys specified to VSettings in * value() and setValue(). */ VSettings(const QString group = QString()); - + /** Default destructor */ + ~VSettings(); + /** Returns the location of Vidalia's configuration settings file. */ static QString settingsFile(); /** Returns true if Vidalia's configuration settings file already exists. */ @@ -67,6 +69,9 @@ private: /** Stores values that last as long as Vidalia lives as a process */ QMap<QString, QVariant> _volatileSettings; + + /** Defaults stored in a settings file */ + QSettings *_defaultSettings; }; #endif diff --git a/src/vidalia/config/VidaliaSettings.cpp~ b/src/vidalia/config/VidaliaSettings.cpp~ deleted file mode 100644 index 6e468fa..0000000 --- a/src/vidalia/config/VidaliaSettings.cpp~ +++ /dev/null @@ -1,396 +0,0 @@ -/* -** This file is part of Vidalia, and is subject to the license terms in the -** LICENSE file, found in the top level directory of this distribution. If you -** did not receive the LICENSE file with this file, you may obtain it from the -** Vidalia source package distributed by the Vidalia Project at -** http://www.torproject.org/projects/vidalia.html. No part of Vidalia, -** including this file, may be copied, modified, propagated, or distributed -** except according to the terms described in the LICENSE file. -*/ - -/* -** \file VidaliaSettings.cpp -** \brief General Vidalia settings, such as language and interface style -*/ - -#include "VidaliaSettings.h" -#include "LanguageSupport.h" -#include "Vidalia.h" -#if defined(Q_WS_WIN) -#include "win32.h" -#endif - -#include <QDir> -#include <QCoreApplication> -#include <QStyleFactory> - -#define SETTING_LANGUAGE "LanguageCode" -#define SETTING_STYLE "InterfaceStyle" -#define SETTING_RUN_TOR_AT_START "RunTorAtStart" -#define SETTING_DATA_DIRECTORY "DataDirectory" -#define SETTING_SHOW_MAINWINDOW_AT_START "ShowMainWindowAtStart" -#define SETTING_BROWSER_EXECUTABLE "BrowserExecutable" -#define SETTING_BROWSER_DIRECTORY "BrowserDirectory" -#define SETTING_IM_EXECUTABLE "IMExecutable" -#define SETTING_RUN_PROXY_AT_START "RunProxyAtStart" -#define SETTING_PROXY_EXECUTABLE "ProxyExecutable" -#define SETTING_PROXY_EXECUTABLE_ARGUMENTS "ProxyExecutableArguments" -#define SETTING_CHECK_FOR_UPDATES "CheckForUpdates" -#define SETTING_LAST_UPDATE_CHECK "LastUpdateCheck" -#define SETTING_USE_LOCAL_GEOIP_DATABASE "UseLocalGeoIpDatabase" -#define SETTING_LOCAL_GEOIP_DATABASE "LocalGeoIpDatabase" -#define SETTING_PLUGIN_PATH "PluginPath" -#define SETTING_SKIP_VERSION_CHECK "SkipVersionCheck" - -#if defined(Q_OS_WIN32) -#define STARTUP_REG_KEY "Software\\Microsoft\\Windows\\CurrentVersion\\Run" -#define VIDALIA_REG_KEY "Vidalia" -#endif - -#define SETTING_ICON_PREF "IconPref" - -/** Default Constructor */ -VidaliaSettings::VidaliaSettings() -{ -#if defined(Q_WS_MAC) - setDefault(SETTING_STYLE, "macintosh (aqua)"); -#else - static QStringList styles = QStyleFactory::keys(); -#if defined(Q_WS_WIN) - if (styles.contains("windowsvista", Qt::CaseInsensitive)) - setDefault(SETTING_STYLE, "windowsvista"); - else -#endif - { - if (styles.contains("cleanlooks", Qt::CaseInsensitive)) - setDefault(SETTING_STYLE, "cleanlooks"); - else - setDefault(SETTING_STYLE, "plastique"); - } -#endif - - setDefault(SETTING_LANGUAGE, LanguageSupport::defaultLanguageCode()); - setDefault(SETTING_RUN_TOR_AT_START, true); - setDefault(SETTING_SHOW_MAINWINDOW_AT_START, true); - setDefault(SETTING_BROWSER_EXECUTABLE, ""); - setDefault(SETTING_IM_EXECUTABLE, ""); - setDefault(SETTING_RUN_PROXY_AT_START, false); - setDefault(SETTING_PROXY_EXECUTABLE, ""); - setDefault(SETTING_PROXY_EXECUTABLE_ARGUMENTS, QString()); -#if defined(Q_WS_WIN) - setDefault(SETTING_CHECK_FOR_UPDATES, true); -#else - setDefault(SETTING_CHECK_FOR_UPDATES, false); -#endif - setDefault(SETTING_LAST_UPDATE_CHECK, QDateTime()); - setDefault(SETTING_USE_LOCAL_GEOIP_DATABASE, false); - setDefault(SETTING_LOCAL_GEOIP_DATABASE, ""); - - setDefault(SETTING_PLUGIN_PATH, vApp->dataDirectory()); - setDefault(SETTING_ICON_PREF, Both); -<<<<<<< HEAD - setDefault(SETTING_SKIP_VERSION_CHECK, false); -======= - setDefault(SETTING_REMEMBER_SHUTDOWN, false); ->>>>>>> bug4577_remember -} - -/** Gets the currently preferred language code for Vidalia. */ -QString -VidaliaSettings::getLanguageCode() -{ - return value(SETTING_LANGUAGE).toString(); -} - -/** Sets the preferred language code. */ -void -VidaliaSettings::setLanguageCode(QString languageCode) -{ - setValue(SETTING_LANGUAGE, languageCode); -} - -/** Gets the interface style key (e.g., "windows", "motif", etc.) */ -QString -VidaliaSettings::getInterfaceStyle() -{ - return value(SETTING_STYLE).toString(); -} - -/** Sets the interface style key. */ -void -VidaliaSettings::setInterfaceStyle(QString styleKey) -{ - setValue(SETTING_STYLE, styleKey); -} - -/** Returns true if Tor is to be run when Vidalia starts. */ -bool -VidaliaSettings::runTorAtStart() -{ - return value(SETTING_RUN_TOR_AT_START).toBool(); -} - -/** If <b>run</b> is set to true, then Tor will be run when Vidalia starts. */ -void -VidaliaSettings::setRunTorAtStart(bool run) -{ - setValue(SETTING_RUN_TOR_AT_START, run); -} - -/** Returns true if Vidalia's main window should be visible when the - * application starts. */ -bool -VidaliaSettings::showMainWindowAtStart() -{ - return value(SETTING_SHOW_MAINWINDOW_AT_START).toBool(); -} - -/** Sets whether to show Vidalia's main window when the application starts. */ -void -VidaliaSettings::setShowMainWindowAtStart(bool show) -{ - setValue(SETTING_SHOW_MAINWINDOW_AT_START, show); -} - - -/** Returns true if Vidalia is set to run on system boot. */ -bool -VidaliaSettings::runVidaliaOnBoot() -{ -#if defined(Q_WS_WIN) - if (!win32_registry_get_key_value(STARTUP_REG_KEY, VIDALIA_REG_KEY).isEmpty()) { - return true; - } else { - return false; - } -#else - /* Platforms other than windows aren't supported yet */ - return false; -#endif -} - -/** If <b>run</b> is set to true, then Vidalia will run on system boot. */ -void -VidaliaSettings::setRunVidaliaOnBoot(bool run) -{ -#if defined(Q_WS_WIN) - if (run) { - win32_registry_set_key_value(STARTUP_REG_KEY, VIDALIA_REG_KEY, - QString("\"" + - QDir::convertSeparators(QCoreApplication::applicationFilePath())) + - "\""); - } else { - win32_registry_remove_key(STARTUP_REG_KEY, VIDALIA_REG_KEY); - } -#else - /* Platforms othe rthan windows aren't supported yet */ - Q_UNUSED(run); - return; -#endif -} - -/** If browserDirectory is empty, returns a fully-qualified path to - * the web browser, including the executable name. If browserDirectory - * is set, then returns the basename of the configured web browser */ -QString -VidaliaSettings::getBrowserExecutable() const -{ - return QDir::convertSeparators(value(SETTING_BROWSER_EXECUTABLE).toString()); -} - -/** Sets the location and name of the web browser executable to the given string. - * If set to the empty string, the browser will not be started. */ -void -VidaliaSettings::setBrowserExecutable(const QString &browserExecutable) -{ - setValue(SETTING_BROWSER_EXECUTABLE, browserExecutable); -} - -/** Returns a fully-qualified path to the web browser directory */ -QString -VidaliaSettings::getBrowserDirectory() const -{ - return QDir::convertSeparators(value(SETTING_BROWSER_DIRECTORY).toString()); -} - -/** Sets the location and name of the web browser directory to the given string. - * If set to the empty string, the browser will not be started. */ -void -VidaliaSettings::setBrowserDirectory(const QString &browserDirectory) -{ - setValue(SETTING_BROWSER_DIRECTORY, browserDirectory); -} - -/** Returns a fully-qualified path to the IM client, including the - * executable name. */ -QString -VidaliaSettings::getIMExecutable() const -{ - return QDir::convertSeparators(value(SETTING_IM_EXECUTABLE).toString()); -} - -/** Sets the location and name of the IM client executable to the given string. - * If set to the empty string, the client will not be started. */ -void -VidaliaSettings::setIMExecutable(const QString &IMExecutable) -{ - setValue(SETTING_IM_EXECUTABLE, IMExecutable); -} - -/** Returns true if Vidalia should start a proxy application when it - * starts. */ -bool -VidaliaSettings::runProxyAtStart() -{ - return value(SETTING_RUN_PROXY_AT_START).toBool(); -} - -/** Set whether to run a proxy application when Vidalia starts. */ -void -VidaliaSettings::setRunProxyAtStart(bool run) -{ - setValue(SETTING_RUN_PROXY_AT_START, run); -} - -/** Returns a fully-qualified path to the proxy server, including the - * executable name. */ -QString -VidaliaSettings::getProxyExecutable() const -{ - return QDir::convertSeparators(value(SETTING_PROXY_EXECUTABLE).toString()); -} - -/** Sets the location and name of the proxy server executable to the given - * string. If set to the empty string, the proxy will not be started. */ -void -VidaliaSettings::setProxyExecutable(const QString &proxyExecutable) -{ - setValue(SETTING_PROXY_EXECUTABLE, proxyExecutable); -} - -/** Returns a string containing additional command line arguments to be passed - * to ProxyExecutable */ -QString -VidaliaSettings::getProxyExecutableArguments() const -{ - return value(SETTING_PROXY_EXECUTABLE_ARGUMENTS).toString(); -} - -/** Sets the additional arguments to be passed to Proxy Executable */ -void -VidaliaSettings::setProxyExecutableArguments(const QString - &proxyExecutableArguments) -{ - setValue(SETTING_PROXY_EXECUTABLE_ARGUMENTS, proxyExecutableArguments); -} - -bool -VidaliaSettings::isAutoUpdateEnabled() const -{ - return value(SETTING_CHECK_FOR_UPDATES).toBool(); -} - -void -VidaliaSettings::setAutoUpdateEnabled(bool enabled) -{ - setValue(SETTING_CHECK_FOR_UPDATES, enabled); -} - -QDateTime -VidaliaSettings::lastCheckedForUpdates() const -{ - return value(SETTING_LAST_UPDATE_CHECK).toDateTime(); -} - -void -VidaliaSettings::setLastCheckedForUpdates(const QDateTime &checkedAt) -{ - setValue(SETTING_LAST_UPDATE_CHECK, checkedAt); -} - -bool -VidaliaSettings::useLocalGeoIpDatabase() const -{ - return value(SETTING_USE_LOCAL_GEOIP_DATABASE).toBool(); -} - -void -VidaliaSettings::setUseLocalGeoIpDatabase(bool enabled) -{ - setValue(SETTING_USE_LOCAL_GEOIP_DATABASE, enabled); -} - -QString -VidaliaSettings::localGeoIpDatabase() const -{ - return QDir::convertSeparators(value(SETTING_LOCAL_GEOIP_DATABASE).toString()); -} - -void -VidaliaSettings::setLocalGeoIpDatabase(const QString &databaseFile) -{ - setValue(SETTING_LOCAL_GEOIP_DATABASE, databaseFile); -} - -QString -VidaliaSettings::pluginPath() const -{ - return QDir::convertSeparators(value(SETTING_PLUGIN_PATH).toString()); -} - -void -VidaliaSettings::setPluginPath(const QString &path) -{ - setValue(SETTING_PLUGIN_PATH, path); -} - -/** Get the icon preference */ -VidaliaSettings::IconPosition -VidaliaSettings::getIconPref() -{ - return fromString(value(SETTING_ICON_PREF).toString()); -} - -/** Set the icon preference */ -void -VidaliaSettings::setIconPref(const IconPosition iconPref) -{ - setValue(SETTING_ICON_PREF, toString(iconPref)); -} - -QString -VidaliaSettings::toString(const IconPosition iconPref) -{ - switch(iconPref) { - case Dock: return "Dock"; - case Tray: return "Tray"; - default: return "Both"; - } -} - -VidaliaSettings::IconPosition -VidaliaSettings::fromString(QString iconPref) -{ - if(iconPref == "Dock") return Dock; - if(iconPref == "Tray") return Tray; - - return Both; -} - -bool -<<<<<<< HEAD -VidaliaSettings::skipVersionCheck() const -{ - return value(SETTING_SKIP_VERSION_CHECK).toBool(); -======= -VidaliaSettings::rememberShutdown() -{ - return value(SETTING_REMEMBER_SHUTDOWN).toBool(); -} - -void -VidaliaSettings::setRememberShutdown(bool val) -{ - setValue(SETTING_REMEMBER_SHUTDOWN, val); ->>>>>>> bug4577_remember -} diff --git a/src/vidalia/config/VidaliaSettings.h~ b/src/vidalia/config/VidaliaSettings.h~ deleted file mode 100644 index 75c0b7a..0000000 --- a/src/vidalia/config/VidaliaSettings.h~ +++ /dev/null @@ -1,163 +0,0 @@ -/* -** This file is part of Vidalia, and is subject to the license terms in the -** LICENSE file, found in the top level directory of this distribution. If you -** did not receive the LICENSE file with this file, you may obtain it from the -** Vidalia source package distributed by the Vidalia Project at -** http://www.torproject.org/projects/vidalia.html. No part of Vidalia, -** including this file, may be copied, modified, propagated, or distributed -** except according to the terms described in the LICENSE file. -*/ - -/* -** \file VidaliaSettings.h -** \brief General Vidalia settings, such as language and interface style -*/ - -#ifndef _VIDALIASETTINGS_H -#define _VIDALIASETTINGS_H - -#include "VSettings.h" - -#include <QDateTime> - -/** Public setting keys */ -#define SETTING_REMEMBER_SHUTDOWN "RememberShutdown" - -/** Handles saving and restoring Vidalia's settings, such as the - * location of Tor, the control port, etc. - * - * NOTE: Qt 4.1 documentation states that constructing a QSettings object is - * "very fast", so we shouldn't need to create a global instance of this - * class. - */ -class VidaliaSettings : public VSettings -{ - Q_OBJECT - -public: - enum IconPosition { - Tray, - Dock, - Both, - }; - - /** Default constructor. */ - VidaliaSettings(); - - /** Gets the currently preferred language code for Vidalia. */ - QString getLanguageCode(); - /** Saves the preferred language code. */ - void setLanguageCode(QString languageCode); - - /** Gets the interface style key (e.g., "windows", "motif", etc.) */ - QString getInterfaceStyle(); - /** Sets the interface style key. */ - void setInterfaceStyle(QString styleKey); - - /** Returns true if Vidalia should start Tor when it starts. */ - bool runTorAtStart(); - /** Set whether to run Tor when Vidalia starts. */ - void setRunTorAtStart(bool run); - - /** Returns true if Vidalia's main window should be visible when the - * application starts. */ - bool showMainWindowAtStart(); - /** Sets whether to show Vidalia's main window when the application starts. */ - void setShowMainWindowAtStart(bool show); - - /** Returns true if Vidalia should start on system boot. */ - bool runVidaliaOnBoot(); - /** Set whether to run Vidalia on system boot. */ - void setRunVidaliaOnBoot(bool run); - - /** If browserDirectory is empty, returns a fully-qualified path to - * the web browser, including the executable name. If browserDirectory - * is set, then returns the basename of the configured web browser */ - QString getBrowserExecutable() const; - /** Sets the location and name of the web browser executable to the given - * string. If set to the empty string, the browser will not be started. */ - void setBrowserExecutable(const QString &browserExecutable); - - /** Returns a fully-qualified path to the web browser directory */ - QString getBrowserDirectory() const; - /** Sets the location and name of the web browser directory to the given string. - * If set to the empty string, the browser will not be started. */ - void setBrowserDirectory(const QString &browserDirectory); - - /** Returns a fully-qualified path to the IM client, including the - * executable name. */ - QString getIMExecutable() const; - /** Sets the location and name of the IM client executable to the given - * string. If set to the empty string, the client will not be started. */ - void setIMExecutable(const QString &IMExecutable); - - /** Returns true if Vidalia should start a proxy application when it - * starts. */ - bool runProxyAtStart(); - /** Set whether to run a proxy application when Vidalia starts. */ - void setRunProxyAtStart(bool run); - - /** Returns a fully-qualified path to the proxy server, including the - * executable name. */ - QString getProxyExecutable() const; - /** Sets the location and name of the proxy server executable to the given - * string. If set to the empty string, the proxy will not be started. */ - void setProxyExecutable(const QString &proxyExecutable); - - /** Returns a list containing additional command line arguments to be - * passed to ProxyExecutable */ - QString getProxyExecutableArguments() const; - /** Sets the additional arguments to be passed to Proxy Executable */ - void setProxyExecutableArguments(const QString &proxyExecutableArguments); - - /** Returns true if Vidalia should automatically check for software updates. - */ - bool isAutoUpdateEnabled() const; - /** Sets to <b>enabled</b> whether Vidalia should automatically check for - * software updates or not. */ - void setAutoUpdateEnabled(bool enabled); - - /** Returns the time at which Vidalia last checked for software updates. */ - QDateTime lastCheckedForUpdates() const; - /** Sets to <b>checkedAt</b> the time at which Vidalia last checked for - * available software updates. */ - void setLastCheckedForUpdates(const QDateTime &checkedAt); - - /** Returns true if Vidalia is currently configured to use a local GeoIP - * database. */ - bool useLocalGeoIpDatabase() const; - /** Enables or disables use of a local GeoIP database. */ - void setUseLocalGeoIpDatabase(bool enabled); - - /** Returns the file, if set, to be used as the local GeoIP database. */ - QString localGeoIpDatabase() const; - /** Sets the file to use as a local GeoIP database. */ - void setLocalGeoIpDatabase(const QString &databaseFile); - - /** Returns the path where the plugins live */ - QString pluginPath() const; - /** Sets the path where the plugins live */ - void setPluginPath(const QString &path); - - /** Get the icon preference */ - IconPosition getIconPref(); - - /** Set the icon preference */ - void setIconPref(const IconPosition iconPref); - QString toString(const IconPosition iconPref); - IconPosition fromString(QString iconPref); - -<<<<<<< HEAD - /** Returns true if Vidalia should skip the version check for tor */ - bool skipVersionCheck() const; -======= - /** Returns true if Vidalia should not ask if the user wants to shutdown - * tor gracefully */ - bool rememberShutdown(); - /** Sets RememberShutdown to val */ - void setRememberShutdown(bool val); ->>>>>>> bug4577_remember -}; - -#endif -
participants (1)
-
chiiph@torproject.org