qBittorrent/src/base/preferences.h

379 lines
13 KiB
C
Raw Normal View History

2014-12-20 20:29:17 +03:00
/*
* Bittorrent Client using Qt4 and libtorrent.
* Copyright (C) 2006 Christophe Dumez
* Copyright (C) 2014 sledgehammer999
*
* 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
* Contact : hammered999@gmail.com
*/
#ifndef PREFERENCES_H
#define PREFERENCES_H
#include <QDateTime>
#include <QHostAddress>
2014-12-20 20:29:17 +03:00
#include <QList>
#include <QNetworkCookie>
#include <QReadWriteLock>
2015-10-27 11:45:11 +03:00
#include <QSize>
#include <QStringList>
#include <QTime>
2014-12-20 20:29:17 +03:00
#include <QTimer>
#include <QVariant>
#include "base/utils/net.h"
#include "types.h"
2015-04-19 18:17:47 +03:00
enum scheduler_days
{
EVERY_DAY,
WEEK_DAYS,
WEEK_ENDS,
MON,
TUE,
WED,
THU,
FRI,
SAT,
SUN
};
namespace TrayIcon
{
enum Style
{
NORMAL = 0,
MONO_DARK,
MONO_LIGHT
};
2014-12-20 20:29:17 +03:00
}
namespace DNS
{
enum Service
{
DYNDNS,
NOIP,
NONE = -1
};
2014-12-20 20:29:17 +03:00
}
class SettingsStorage;
class Preferences: public QObject
{
Q_OBJECT
Q_DISABLE_COPY(Preferences)
2014-12-20 20:29:17 +03:00
2015-04-19 18:17:47 +03:00
Preferences();
const QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const;
void setValue(const QString &key, const QVariant &value);
2014-12-20 20:29:17 +03:00
static Preferences *m_instance;
2015-04-19 18:17:47 +03:00
signals:
void changed();
2014-12-20 20:29:17 +03:00
public:
2015-04-19 18:17:47 +03:00
static void initInstance();
static void freeInstance();
static Preferences *instance();
2014-12-20 20:29:17 +03:00
// General options
QString getLocale() const;
void setLocale(const QString &locale);
bool deleteTorrentFilesAsDefault() const;
void setDeleteTorrentFilesAsDefault(bool del);
bool confirmOnExit() const;
void setConfirmOnExit(bool confirm);
bool speedInTitleBar() const;
void showSpeedInTitleBar(bool show);
bool useAlternatingRowColors() const;
void setAlternatingRowColors(bool b);
bool getHideZeroValues() const;
void setHideZeroValues(bool b);
int getHideZeroComboValues() const;
void setHideZeroComboValues(int n);
2015-10-30 16:03:44 +03:00
bool isStatusbarDisplayed() const;
void setStatusbarDisplayed(bool displayed);
2017-06-12 22:47:28 +03:00
bool isToolbarDisplayed() const;
void setToolbarDisplayed(bool displayed);
bool startMinimized() const;
void setStartMinimized(bool b);
bool isSplashScreenDisabled() const;
void setSplashScreenDisabled(bool b);
bool preventFromSuspend() const;
void setPreventFromSuspend(bool b);
2014-12-20 20:29:17 +03:00
#ifdef Q_OS_WIN
bool WinStartup() const;
void setWinStartup(bool b);
2014-12-20 20:29:17 +03:00
#endif
// Downloads
QString lastLocationPath() const;
void setLastLocationPath(const QString &path);
QVariantHash getScanDirs() const;
void setScanDirs(const QVariantHash &dirs);
QString getScanDirsLastPath() const;
void setScanDirsLastPath(const QString &path);
bool isMailNotificationEnabled() const;
void setMailNotificationEnabled(bool enabled);
QString getMailNotificationSender() const;
void setMailNotificationSender(const QString &mail);
QString getMailNotificationEmail() const;
void setMailNotificationEmail(const QString &mail);
QString getMailNotificationSMTP() const;
void setMailNotificationSMTP(const QString &smtp_server);
bool getMailNotificationSMTPSSL() const;
void setMailNotificationSMTPSSL(bool use);
bool getMailNotificationSMTPAuth() const;
void setMailNotificationSMTPAuth(bool use);
QString getMailNotificationSMTPUsername() const;
void setMailNotificationSMTPUsername(const QString &username);
QString getMailNotificationSMTPPassword() const;
void setMailNotificationSMTPPassword(const QString &password);
int getActionOnDblClOnTorrentDl() const;
void setActionOnDblClOnTorrentDl(int act);
int getActionOnDblClOnTorrentFn() const;
void setActionOnDblClOnTorrentFn(int act);
2014-12-20 20:29:17 +03:00
// Connection options
QTime getSchedulerStartTime() const;
void setSchedulerStartTime(const QTime &time);
QTime getSchedulerEndTime() const;
void setSchedulerEndTime(const QTime &time);
scheduler_days getSchedulerDays() const;
void setSchedulerDays(scheduler_days days);
2014-12-20 20:29:17 +03:00
// Search
bool isSearchEnabled() const;
void setSearchEnabled(bool enabled);
2014-12-20 20:29:17 +03:00
// HTTP Server
bool isWebUiEnabled() const;
void setWebUiEnabled(bool enabled);
QString getServerDomains() const;
void setServerDomains(const QString &str);
2017-10-12 05:28:31 +03:00
QString getWebUiAddress() const;
void setWebUiAddress(const QString &addr);
quint16 getWebUiPort() const;
void setWebUiPort(quint16 port);
bool useUPnPForWebUIPort() const;
void setUPnPForWebUIPort(bool enabled);
// Authentication
bool isWebUiLocalAuthEnabled() const;
void setWebUiLocalAuthEnabled(bool enabled);
bool isWebUiAuthSubnetWhitelistEnabled() const;
void setWebUiAuthSubnetWhitelistEnabled(bool enabled);
QList<Utils::Net::Subnet> getWebUiAuthSubnetWhitelist() const;
void setWebUiAuthSubnetWhitelist(QStringList subnets);
QString getWebUiUsername() const;
void setWebUiUsername(const QString &username);
QString getWebUiPassword() const;
void setWebUiPassword(const QString &new_password);
// HTTPS
bool isWebUiHttpsEnabled() const;
void setWebUiHttpsEnabled(bool enabled);
QByteArray getWebUiHttpsCertificate() const;
void setWebUiHttpsCertificate(const QByteArray &data);
QByteArray getWebUiHttpsKey() const;
void setWebUiHttpsKey(const QByteArray &data);
bool isAltWebUiEnabled() const;
void setAltWebUiEnabled(bool enabled);
QString getWebUiRootFolder() const;
void setWebUiRootFolder(const QString &path);
// Dynamic DNS
bool isDynDNSEnabled() const;
void setDynDNSEnabled(bool enabled);
DNS::Service getDynDNSService() const;
void setDynDNSService(int service);
QString getDynDomainName() const;
void setDynDomainName(const QString &name);
QString getDynDNSUsername() const;
void setDynDNSUsername(const QString &username);
QString getDynDNSPassword() const;
void setDynDNSPassword(const QString &password);
2014-12-20 20:29:17 +03:00
// Advanced settings
void setUILockPassword(const QString &clear_password);
void clearUILockPassword();
QString getUILockPasswordMD5() const;
bool isUILocked() const;
void setUILocked(bool locked);
bool isAutoRunEnabled() const;
void setAutoRunEnabled(bool enabled);
QString getAutoRunProgram() const;
void setAutoRunProgram(const QString &program);
bool shutdownWhenDownloadsComplete() const;
void setShutdownWhenDownloadsComplete(bool shutdown);
bool suspendWhenDownloadsComplete() const;
void setSuspendWhenDownloadsComplete(bool suspend);
bool hibernateWhenDownloadsComplete() const;
void setHibernateWhenDownloadsComplete(bool hibernate);
bool shutdownqBTWhenDownloadsComplete() const;
void setShutdownqBTWhenDownloadsComplete(bool shutdown);
bool dontConfirmAutoExit() const;
void setDontConfirmAutoExit(bool dontConfirmAutoExit);
bool recheckTorrentsOnCompletion() const;
void recheckTorrentsOnCompletion(bool recheck);
bool resolvePeerCountries() const;
void resolvePeerCountries(bool resolve);
bool resolvePeerHostNames() const;
void resolvePeerHostNames(bool resolve);
2014-12-20 20:29:17 +03:00
#if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC))
bool useSystemIconTheme() const;
void useSystemIconTheme(bool enabled);
2014-12-20 20:29:17 +03:00
#endif
bool recursiveDownloadDisabled() const;
void disableRecursiveDownload(bool disable = true);
2014-12-20 20:29:17 +03:00
#ifdef Q_OS_WIN
static QString getPythonPath();
bool neverCheckFileAssoc() const;
void setNeverCheckFileAssoc(bool check = true);
static bool isTorrentFileAssocSet();
static bool isMagnetLinkAssocSet();
static void setTorrentFileAssoc(bool set);
static void setMagnetLinkAssoc(bool set);
#endif
#ifdef Q_OS_MAC
static bool isTorrentFileAssocSet();
static bool isMagnetLinkAssocSet();
static void setTorrentFileAssoc();
static void setMagnetLinkAssoc();
2014-12-20 20:29:17 +03:00
#endif
int getTrackerPort() const;
void setTrackerPort(int port);
2014-12-20 20:29:17 +03:00
#if defined(Q_OS_WIN) || defined(Q_OS_MAC)
bool isUpdateCheckEnabled() const;
void setUpdateCheckEnabled(bool enabled);
2014-12-20 20:29:17 +03:00
#endif
bool confirmTorrentDeletion() const;
void setConfirmTorrentDeletion(bool enabled);
bool confirmTorrentRecheck() const;
void setConfirmTorrentRecheck(bool enabled);
bool confirmRemoveAllTags() const;
void setConfirmRemoveAllTags(bool enabled);
2017-06-12 22:47:28 +03:00
#ifndef Q_OS_MAC
bool systrayIntegration() const;
void setSystrayIntegration(bool enabled);
bool minimizeToTray() const;
void setMinimizeToTray(bool b);
bool closeToTray() const;
void setCloseToTray(bool b);
TrayIcon::Style trayIconStyle() const;
void setTrayIconStyle(TrayIcon::Style style);
2017-06-12 22:47:28 +03:00
#endif
2014-12-20 20:29:17 +03:00
// Stuff that don't appear in the Options GUI but are saved
// in the same file.
QDateTime getDNSLastUpd() const;
void setDNSLastUpd(const QDateTime &date);
QString getDNSLastIP() const;
void setDNSLastIP(const QString &ip);
bool getAcceptedLegal() const;
void setAcceptedLegal(const bool accepted);
QByteArray getMainGeometry() const;
void setMainGeometry(const QByteArray &geometry);
QByteArray getMainVSplitterState() const;
void setMainVSplitterState(const QByteArray &state);
QString getMainLastDir() const;
void setMainLastDir(const QString &path);
QSize getPrefSize() const;
void setPrefSize(const QSize &size);
QStringList getPrefHSplitterSizes() const;
void setPrefHSplitterSizes(const QStringList &sizes);
QByteArray getPeerListState() const;
void setPeerListState(const QByteArray &state);
QString getPropSplitterSizes() const;
void setPropSplitterSizes(const QString &sizes);
QByteArray getPropFileListState() const;
void setPropFileListState(const QByteArray &state);
int getPropCurTab() const;
void setPropCurTab(const int &tab);
bool getPropVisible() const;
void setPropVisible(const bool visible);
QByteArray getPropTrackerListState() const;
void setPropTrackerListState(const QByteArray &state);
QSize getRssGeometrySize() const;
2015-10-27 11:45:11 +03:00
void setRssGeometrySize(const QSize &geometry);
QByteArray getRssHSplitterSizes() const;
void setRssHSplitterSizes(const QByteArray &sizes);
QStringList getRssOpenFolders() const;
void setRssOpenFolders(const QStringList &folders);
2016-11-17 06:11:48 +03:00
QByteArray getRssSideSplitterState() const;
void setRssSideSplitterState(const QByteArray &state);
QByteArray getRssMainSplitterState() const;
void setRssMainSplitterState(const QByteArray &state);
QByteArray getSearchTabHeaderState() const;
void setSearchTabHeaderState(const QByteArray &state);
QStringList getSearchEngDisabled() const;
void setSearchEngDisabled(const QStringList &engines);
QString getTorImportLastContentDir() const;
void setTorImportLastContentDir(const QString &path);
QByteArray getTorImportGeometry() const;
void setTorImportGeometry(const QByteArray &geometry);
bool getStatusFilterState() const;
bool getCategoryFilterState() const;
bool getTagFilterState() const;
bool getTrackerFilterState() const;
int getTransSelFilter() const;
void setTransSelFilter(const int &index);
QByteArray getTransHeaderState() const;
void setTransHeaderState(const QByteArray &state);
int getToolbarTextPosition() const;
void setToolbarTextPosition(const int position);
2014-12-20 20:29:17 +03:00
// From old RssSettings class
2017-03-07 16:10:42 +03:00
bool isRSSWidgetEnabled() const;
void setRSSWidgetVisible(const bool enabled);
// Network
QList<QNetworkCookie> getNetworkCookies() const;
void setNetworkCookies(const QList<QNetworkCookie> &cookies);
2014-08-25 15:58:48 +04:00
// SpeedWidget
int getSpeedWidgetPeriod() const;
void setSpeedWidgetPeriod(const int period);
bool getSpeedWidgetGraphEnable(int id) const;
void setSpeedWidgetGraphEnable(int id, const bool enable);
void upgrade();
public slots:
void setStatusFilterState(bool checked);
void setCategoryFilterState(bool checked);
void setTagFilterState(bool checked);
void setTrackerFilterState(bool checked);
2015-04-19 18:17:47 +03:00
void apply();
2014-12-20 20:29:17 +03:00
};
#endif // PREFERENCES_H