Skip to content

Commit

Permalink
BUGFIX: Use an INI file instead of the registry on Windows (More reli…
Browse files Browse the repository at this point in the history
…able)
  • Loading branch information
Christophe Dumez committed Jul 16, 2010
1 parent fb8d52e commit a1157c7
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 7 deletions.
1 change: 1 addition & 0 deletions Changelog
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
- BUGFIX: Hide seeding torrents files priorities in Web UI
- BUGFIX: The user can disable permanently recursive torrent download
- 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 number of torrents in transfers tab label
- COSMETIC: Simplified program preferences
Expand Down
6 changes: 0 additions & 6 deletions src/preferences.h
Original file line number Diff line number Diff line change
Expand Up @@ -1081,8 +1081,6 @@ class Preferences {
const QString version = versions.takeLast();
qDebug("Detected possible Python v%s location", qPrintable(version));
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")) {
qDebug("Found python.exe at %s", qPrintable(path));
return path;
Expand Down Expand Up @@ -1117,8 +1115,6 @@ class Preferences {
}
qDebug("Checking shell command");
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));
QRegExp exe_reg("\"([^\"]+)\".*");
if(exe_reg.indexIn(shell_command) < 0)
Expand All @@ -1129,8 +1125,6 @@ class Preferences {
return false;
// Check magnet link assoc
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)
return false;
assoc_exe = exe_reg.cap(1);
Expand Down
73 changes: 73 additions & 0 deletions src/qinisettings.h
Original file line number Diff line number Diff line change
@@ -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
6 changes: 5 additions & 1 deletion src/src.pro
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ DEFINES += VERSION_MINOR=3
DEFINES += VERSION_BUGFIX=0

win32 {
# Don't use the system registry on Windows
DEFINES += QSettings QIniSettings

# Adapt these paths on Windows
INCLUDEPATH += $$quote(C:/qbittorrent/msvc/boost_1_42_0)
INCLUDEPATH += $$quote(C:/qbittorrent/msvc/libtorrent-rasterbar-0.14.10/include)
Expand Down Expand Up @@ -287,7 +290,8 @@ HEADERS += misc.h \
filesystemwatcher.h \
preferences.h \
bandwidthscheduler.h \
scannedfoldersmodel.h
scannedfoldersmodel.h \
qinisettings.h

contains(DEFINES, DISABLE_GUI) {
HEADERS += headlessloader.h
Expand Down

0 comments on commit a1157c7

Please sign in to comment.