mirror of
https://github.com/Retropex/bitcoin.git
synced 2025-05-28 13:02:38 +02:00

This fixes a crash bug when opening the options dialog. - Check the return value of split() to avoid segmentation faults due to out of bounds when the user manages to enter invalid proxy settings. This is reported resonably often. - Move the default proxy/port to a constant instead of hardcoding magic values. - Factor out some common code. - Revert #11448 because this proves a more robust replacement, it is no longer necessary and didn't generally solve the issue. No attempt is made to do full sanity checking on the proxy, so it can still be rejected by the core with an InitError message.
102 lines
3.5 KiB
C++
102 lines
3.5 KiB
C++
// Copyright (c) 2011-2016 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_QT_OPTIONSMODEL_H
|
|
#define BITCOIN_QT_OPTIONSMODEL_H
|
|
|
|
#include <amount.h>
|
|
|
|
#include <QAbstractListModel>
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
class QNetworkProxy;
|
|
QT_END_NAMESPACE
|
|
|
|
extern const char *DEFAULT_GUI_PROXY_HOST;
|
|
static constexpr unsigned short DEFAULT_GUI_PROXY_PORT = 9050;
|
|
|
|
/** Interface from Qt to configuration data structure for Bitcoin client.
|
|
To Qt, the options are presented as a list with the different options
|
|
laid out vertically.
|
|
This can be changed to a tree once the settings become sufficiently
|
|
complex.
|
|
*/
|
|
class OptionsModel : public QAbstractListModel
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit OptionsModel(QObject *parent = 0, bool resetSettings = false);
|
|
|
|
enum OptionID {
|
|
StartAtStartup, // bool
|
|
HideTrayIcon, // bool
|
|
MinimizeToTray, // bool
|
|
MapPortUPnP, // bool
|
|
MinimizeOnClose, // bool
|
|
ProxyUse, // bool
|
|
ProxyIP, // QString
|
|
ProxyPort, // int
|
|
ProxyUseTor, // bool
|
|
ProxyIPTor, // QString
|
|
ProxyPortTor, // int
|
|
DisplayUnit, // BitcoinUnits::Unit
|
|
ThirdPartyTxUrls, // QString
|
|
Language, // QString
|
|
CoinControlFeatures, // bool
|
|
ThreadsScriptVerif, // int
|
|
DatabaseCache, // int
|
|
SpendZeroConfChange, // bool
|
|
Listen, // bool
|
|
OptionIDRowCount,
|
|
};
|
|
|
|
void Init(bool resetSettings = false);
|
|
void Reset();
|
|
|
|
int rowCount(const QModelIndex & parent = QModelIndex()) const;
|
|
QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const;
|
|
bool setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole);
|
|
/** Updates current unit in memory, settings and emits displayUnitChanged(newUnit) signal */
|
|
void setDisplayUnit(const QVariant &value);
|
|
|
|
/* Explicit getters */
|
|
bool getHideTrayIcon() const { return fHideTrayIcon; }
|
|
bool getMinimizeToTray() const { return fMinimizeToTray; }
|
|
bool getMinimizeOnClose() const { return fMinimizeOnClose; }
|
|
int getDisplayUnit() const { return nDisplayUnit; }
|
|
QString getThirdPartyTxUrls() const { return strThirdPartyTxUrls; }
|
|
bool getProxySettings(QNetworkProxy& proxy) const;
|
|
bool getCoinControlFeatures() const { return fCoinControlFeatures; }
|
|
const QString& getOverriddenByCommandLine() { return strOverriddenByCommandLine; }
|
|
|
|
/* Restart flag helper */
|
|
void setRestartRequired(bool fRequired);
|
|
bool isRestartRequired() const;
|
|
|
|
private:
|
|
/* Qt-only settings */
|
|
bool fHideTrayIcon;
|
|
bool fMinimizeToTray;
|
|
bool fMinimizeOnClose;
|
|
QString language;
|
|
int nDisplayUnit;
|
|
QString strThirdPartyTxUrls;
|
|
bool fCoinControlFeatures;
|
|
/* settings that were overridden by command-line */
|
|
QString strOverriddenByCommandLine;
|
|
|
|
// Add option to list of GUI options overridden through command line/config file
|
|
void addOverriddenOption(const std::string &option);
|
|
|
|
// Check settings version and upgrade default values if required
|
|
void checkAndMigrate();
|
|
Q_SIGNALS:
|
|
void displayUnitChanged(int unit);
|
|
void coinControlFeaturesChanged(bool);
|
|
void hideTrayIconChanged(bool);
|
|
};
|
|
|
|
#endif // BITCOIN_QT_OPTIONSMODEL_H
|