BUGFIX: Use an INI file instead of the registry on Windows (More reliable)

This commit is contained in:
Christophe Dumez 2010-07-16 14:39:19 +00:00
parent fb8d52e6e0
commit a1157c78b2
4 changed files with 79 additions and 7 deletions

View file

@ -18,6 +18,7 @@
- BUGFIX: Hide seeding torrents files priorities in Web UI - BUGFIX: Hide seeding torrents files priorities in Web UI
- BUGFIX: The user can disable permanently recursive torrent download - BUGFIX: The user can disable permanently recursive torrent download
- BUGFIX: Peer Exchange status is now correctly reported - BUGFIX: Peer Exchange status is now correctly reported
- BUGFIX: Use an INI file instead of the registry on Windows (More reliable)
- COSMETIC: Display peers country name in tooltip - COSMETIC: Display peers country name in tooltip
- COSMETIC: Display number of torrents in transfers tab label - COSMETIC: Display number of torrents in transfers tab label
- COSMETIC: Simplified program preferences - COSMETIC: Simplified program preferences

View file

@ -1081,8 +1081,6 @@ public:
const QString version = versions.takeLast(); const QString version = versions.takeLast();
qDebug("Detected possible Python v%s location", qPrintable(version)); qDebug("Detected possible Python v%s location", qPrintable(version));
QString path = reg_python.value(version+"\\InstallPath\\Default", "").toString().replace("/", "\\"); QString path = reg_python.value(version+"\\InstallPath\\Default", "").toString().replace("/", "\\");
if(path.isEmpty())
path = reg_python.value(version+"/InstallPath/Default", "").toString().replace("/", "\\");
if(!path.isEmpty() && QDir(path).exists("python.exe")) { if(!path.isEmpty() && QDir(path).exists("python.exe")) {
qDebug("Found python.exe at %s", qPrintable(path)); qDebug("Found python.exe at %s", qPrintable(path));
return path; return path;
@ -1117,8 +1115,6 @@ public:
} }
qDebug("Checking shell command"); qDebug("Checking shell command");
QString shell_command = settings.value("qBittorrent\\shell\\open\\command\\Default", "").toString(); QString shell_command = settings.value("qBittorrent\\shell\\open\\command\\Default", "").toString();
if(shell_command.isEmpty())
shell_command = settings.value("qBittorrent/shell/open/command/Default", "").toString();
qDebug("Shell command is: %s", qPrintable(shell_command)); qDebug("Shell command is: %s", qPrintable(shell_command));
QRegExp exe_reg("\"([^\"]+)\".*"); QRegExp exe_reg("\"([^\"]+)\".*");
if(exe_reg.indexIn(shell_command) < 0) if(exe_reg.indexIn(shell_command) < 0)
@ -1129,8 +1125,6 @@ public:
return false; return false;
// Check magnet link assoc // Check magnet link assoc
shell_command = settings.value("Magnet\\shell\\open\\command\\Default", "").toString(); shell_command = settings.value("Magnet\\shell\\open\\command\\Default", "").toString();
if(shell_command.isEmpty())
shell_command = settings.value("Magnet/shell/open/command/Default", "").toString();
if(exe_reg.indexIn(shell_command) < 0) if(exe_reg.indexIn(shell_command) < 0)
return false; return false;
assoc_exe = exe_reg.cap(1); assoc_exe = exe_reg.cap(1);

73
src/qinisettings.h Normal file
View file

@ -0,0 +1,73 @@
/*
* Bittorrent Client using Qt4 and libtorrent.
* Copyright (C) 2006 Christophe Dumez
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* In addition, as a special exception, the copyright holders give permission to
* link this program with the OpenSSL project's "OpenSSL" library (or with
* modified versions of it that use the same license as the "OpenSSL" library),
* and distribute the linked executables. You must obey the GNU General Public
* License in all respects for all of the code used other than "OpenSSL". If you
* modify file(s), you may extend this exception to your version of the file(s),
* but you are not obligated to do so. If you do not wish to do so, delete this
* exception statement from your version.
*
* Contact : chris@qbittorrent.org
*/
#ifndef QINISETTINGS_H
#define QINISETTINGS_H
#include <QSettings>
class QIniSettings : public QSettings {
public:
QIniSettings(const QString &organization, const QString &application = QString(), QObject *parent = 0 ):
#ifdef Q_WS_WIN
QSettings(QSettings::IniFormat, QSettings::UserScope, organization, application, parent)
#else
QSettings(organization, application, parent)
#endif
{
}
#ifdef Q_WS_WIN
QVariant value(const QString & key, const QVariant &defaultValue = QVariant()) const {
QVariant ret = QSettings::value(key);
if(format() == QSettings::NativeFormat && ret.isNull()) {
// Fallback on Windows, use \ in key instead of /
if(key.contains("/")) {
ret = QSettings::value(key.replace("/", "\\"));
} else {
if(key.contains("\\")) {
ret = QSettings::value(key.replace("\\", "/"));
}
}
}
if(ret.isNull())
return defaultValue;
return ret;
}
void setValue(const QString &key, const QVariant &val) {
key = key.replace("/", "\\");
QSettings::setValue(key, val);
}
#endif
};
#endif // QINISETTINGS_H

View file

@ -21,6 +21,9 @@ DEFINES += VERSION_MINOR=3
DEFINES += VERSION_BUGFIX=0 DEFINES += VERSION_BUGFIX=0
win32 { win32 {
# Don't use the system registry on Windows
DEFINES += QSettings QIniSettings
# Adapt these paths on Windows # Adapt these paths on Windows
INCLUDEPATH += $$quote(C:/qbittorrent/msvc/boost_1_42_0) INCLUDEPATH += $$quote(C:/qbittorrent/msvc/boost_1_42_0)
INCLUDEPATH += $$quote(C:/qbittorrent/msvc/libtorrent-rasterbar-0.14.10/include) INCLUDEPATH += $$quote(C:/qbittorrent/msvc/libtorrent-rasterbar-0.14.10/include)
@ -287,7 +290,8 @@ HEADERS += misc.h \
filesystemwatcher.h \ filesystemwatcher.h \
preferences.h \ preferences.h \
bandwidthscheduler.h \ bandwidthscheduler.h \
scannedfoldersmodel.h scannedfoldersmodel.h \
qinisettings.h
contains(DEFINES, DISABLE_GUI) { contains(DEFINES, DISABLE_GUI) {
HEADERS += headlessloader.h HEADERS += headlessloader.h