commit 747826009ad4fc2072798b46a9cb072bc009dc0a Merge: 9789ba9 f2e38a6 Author: Tomás Touceda chiiph@torproject.org Date: Mon Jan 23 11:41:04 2012 -0300
Merge branch 'bug4576_remember' into alpha
Conflicts: src/vidalia/config/VidaliaSettings.cpp src/vidalia/config/VidaliaSettings.h
changes/bug4577 | 3 + src/vidalia/MainWindow.cpp | 9 +- src/vidalia/VMessageBox.cpp | 55 ++++- src/vidalia/VMessageBox.h | 11 +- src/vidalia/config/VidaliaSettings.cpp | 13 + src/vidalia/config/VidaliaSettings.cpp~ | 396 +++++++++++++++++++++++++++++++ src/vidalia/config/VidaliaSettings.h | 8 + src/vidalia/config/VidaliaSettings.h~ | 163 +++++++++++++ 8 files changed, 645 insertions(+), 13 deletions(-)
diff --cc src/vidalia/config/VidaliaSettings.cpp index ac15a63,48cd051..b13f98f --- a/src/vidalia/config/VidaliaSettings.cpp +++ b/src/vidalia/config/VidaliaSettings.cpp @@@ -88,7 -87,7 +88,8 @@@ VidaliaSettings::VidaliaSettings(
setDefault(SETTING_PLUGIN_PATH, vApp->dataDirectory()); setDefault(SETTING_ICON_PREF, Both); + setDefault(SETTING_SKIP_VERSION_CHECK, false); + setDefault(SETTING_REMEMBER_SHUTDOWN, false); }
/** Gets the currently preferred language code for Vidalia. */ @@@ -374,7 -373,13 +375,19 @@@ VidaliaSettings::fromString(QString ico }
bool +VidaliaSettings::skipVersionCheck() const +{ + return value(SETTING_SKIP_VERSION_CHECK).toBool(); +} ++ ++bool + VidaliaSettings::rememberShutdown() + { + return value(SETTING_REMEMBER_SHUTDOWN).toBool(); + } + + void + VidaliaSettings::setRememberShutdown(bool val) + { + setValue(SETTING_REMEMBER_SHUTDOWN, val); + } diff --cc src/vidalia/config/VidaliaSettings.cpp~ index 0000000,0000000..6e468fa new file mode 100644 --- /dev/null +++ b/src/vidalia/config/VidaliaSettings.cpp~ @@@ -1,0 -1,0 +1,396 @@@ ++/* ++** 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 --cc src/vidalia/config/VidaliaSettings.h index 99dfec9,3efbdb5..09360ab --- a/src/vidalia/config/VidaliaSettings.h +++ b/src/vidalia/config/VidaliaSettings.h @@@ -145,8 -147,11 +147,14 @@@ public QString toString(const IconPosition iconPref); IconPosition fromString(QString iconPref);
+ /** 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); };
#endif diff --cc src/vidalia/config/VidaliaSettings.h~ index 0000000,0000000..75c0b7a new file mode 100644 --- /dev/null +++ b/src/vidalia/config/VidaliaSettings.h~ @@@ -1,0 -1,0 +1,163 @@@ ++/* ++** 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 ++