From 74154436a5fff8a8dd27115395c83c6d41ebf4e9 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Sun, 23 Sep 2007 13:12:34 +0000 Subject: w32: implement "system proxy" settings. This uses the IE setting by reading its values from the registry. Make system proxy the default value if no configuration file is found. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14827 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/rbutilqt/configure.cpp | 40 +++++++++++++++++++++++++++++++++++----- rbutil/rbutilqt/rbutilqt.cpp | 32 +++++++++++++++++++++++++++++--- 2 files changed, 64 insertions(+), 8 deletions(-) diff --git a/rbutil/rbutilqt/configure.cpp b/rbutil/rbutilqt/configure.cpp index eaa68a2a1c..967e0111e9 100644 --- a/rbutil/rbutilqt/configure.cpp +++ b/rbutil/rbutilqt/configure.cpp @@ -25,6 +25,13 @@ #include "browsedirtree.h" #include +#if defined(Q_OS_WIN32) +#if defined(UNICODE) +#define _UNICODE +#endif +#include +#include +#endif #define DEFAULT_LANG "English (C)" @@ -37,8 +44,8 @@ Config::Config(QWidget *parent) : QDialog(parent) QRegExp validate("[0-9]*"); proxyValidator->setRegExp(validate); ui.proxyPort->setValidator(proxyValidator); -#ifndef __linux - ui.radioSystemProxy->setEnabled(false); // only on linux for now +#if !defined(Q_OS_LINUX) && !defined(Q_OS_WIN32) + ui.radioSystemProxy->setEnabled(false); // not on macox for now #endif // build language list and sort alphabetically QStringList langs = findLanguageFiles(); @@ -160,7 +167,7 @@ void Config::setUserSettings(QSettings *user) ui.proxyUser->setText(proxy.userName()); ui.proxyPass->setText(proxy.password()); - QString proxyType = userSettings->value("proxytype").toString(); + QString proxyType = userSettings->value("proxytype", "system").toString(); if(proxyType == "manual") ui.radioManualProxy->setChecked(true); else if(proxyType == "system") ui.radioSystemProxy->setChecked(true); else ui.radioNoProxy->setChecked(true); @@ -419,13 +426,36 @@ void Config::setSystemProxy(bool checked) proxy.setHost(ui.proxyHost->text()); proxy.setPort(ui.proxyPort->text().toInt()); // show system values in input box -#ifdef __linux - QUrl envproxy = QUrl(getenv("http_proxy")); + QUrl envproxy; +#if defined(Q_OS_LINUX) + envproxy = QUrl(getenv("http_proxy")); +#endif +#if defined(Q_OS_WIN32) + HKEY hk; + wchar_t proxyval[80]; + DWORD buflen = 80; + long ret; + + ret = RegOpenKeyEx(HKEY_CURRENT_USER, _TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"), + 0, KEY_QUERY_VALUE, &hk); + if(ret != ERROR_SUCCESS) return; + + ret = RegQueryValueEx(hk, _TEXT("ProxyServer"), NULL, NULL, (LPBYTE)proxyval, &buflen); + if(ret != ERROR_SUCCESS) return; + + RegCloseKey(hk); + envproxy = QUrl("http://" + QString::fromWCharArray(proxyval)); + qDebug() << envproxy; ui.proxyHost->setText(envproxy.host()); ui.proxyPort->setText(QString("%1").arg(envproxy.port())); ui.proxyUser->setText(envproxy.userName()); ui.proxyPass->setText(envproxy.password()); #endif + ui.proxyHost->setText(envproxy.host()); + ui.proxyPort->setText(QString("%1").arg(envproxy.port())); + ui.proxyUser->setText(envproxy.userName()); + ui.proxyPass->setText(envproxy.password()); + } else { ui.proxyHost->setText(proxy.host()); diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp index 37ae90323f..00c409fb7b 100644 --- a/rbutil/rbutilqt/rbutilqt.cpp +++ b/rbutil/rbutilqt/rbutilqt.cpp @@ -32,9 +32,17 @@ #include "uninstallwindow.h" #include "browseof.h" -#ifdef __linux +#if defined(Q_OS_LINUX) #include #endif +#if defined(Q_OS_WIN32) +#if defined(UNICODE) +#define _UNICODE +#endif +#include +#include +#include +#endif RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent) { @@ -935,11 +943,29 @@ void RbUtilQt::updateInfo() QUrl RbUtilQt::proxy() { - if(userSettings->value("proxytype") == "manual") + if(userSettings->value("proxytype", "system").toString() == "manual") return QUrl(userSettings->value("proxy").toString()); -#ifdef __linux +#if defined(Q_OS_LINUX) else if(userSettings->value("proxytype") == "system") return QUrl(getenv("http_proxy")); +#endif +#if defined(Q_OS_WIN32) + HKEY hk; + wchar_t proxyval[80]; + DWORD buflen = 80; + long ret; + + ret = RegOpenKeyEx(HKEY_CURRENT_USER, _TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"), + 0, KEY_QUERY_VALUE, &hk); + if(ret != ERROR_SUCCESS) return QUrl(""); + + ret = RegQueryValueEx(hk, _TEXT("ProxyServer"), NULL, NULL, (LPBYTE)proxyval, &buflen); + if(ret != ERROR_SUCCESS) return QUrl(""); + + RegCloseKey(hk); + qDebug() << QString::fromWCharArray(proxyval); + return QUrl("http://" + QString::fromWCharArray(proxyval)); + #endif return QUrl(""); } -- cgit v1.2.3