Improve Tor support
[novacoin.git] / src / qt / optionsmodel.h
1 #ifndef OPTIONSMODEL_H
2 #define OPTIONSMODEL_H
3
4 #include <QAbstractListModel>
5
6 /** Interface from Qt to configuration data structure for Bitcoin client.
7    To Qt, the options are presented as a list with the different options
8    laid out vertically.
9    This can be changed to a tree once the settings become sufficiently
10    complex.
11  */
12 class OptionsModel : public QAbstractListModel
13 {
14     Q_OBJECT
15
16 public:
17     explicit OptionsModel(QObject *parent = 0);
18
19     enum OptionID {
20         StartAtStartup,    // bool
21         MinimizeToTray,    // bool
22         MapPortUPnP,       // bool
23         MinimizeOnClose,   // bool
24         ProxyUse,          // bool
25         ProxyIP,           // QString
26         ProxyPort,         // int
27         ProxySocksVersion, // int
28         TorUse,            // bool
29         TorIP,             // QString
30         TorPort,           // int
31         TorOnly,           // bool
32         TorName,           // QString
33         Fee,               // qint64
34         DisplayUnit,       // BitcoinUnits::Unit
35         DisplayAddresses,  // bool
36         ThirdPartyTxUrls,  // QString
37         DetachDatabases,   // bool
38         Language,          // QString
39         CoinControlFeatures, // bool
40         OptionIDRowCount,
41     };
42
43     void Init();
44
45     /* Migrate settings from wallet.dat after app initialization */
46     bool Upgrade(); /* returns true if settings upgraded */
47
48     int rowCount(const QModelIndex & parent = QModelIndex()) const;
49     QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const;
50     bool setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole);
51
52     /* Explicit getters */
53     qint64 getTransactionFee();
54     bool getMinimizeToTray();
55     bool getMinimizeOnClose();
56     int getDisplayUnit();
57     bool getDisplayAddresses();
58     bool getCoinControlFeatures();
59     QString getThirdPartyTxUrls() { return strThirdPartyTxUrls; }
60     QString getLanguage() { return language; }
61
62 private:
63     int nDisplayUnit;
64     bool bDisplayAddresses;
65     bool fMinimizeToTray;
66     bool fMinimizeOnClose;
67     bool fCoinControlFeatures;
68     QString language;
69     QString strThirdPartyTxUrls;
70
71 signals:
72     void displayUnitChanged(int unit);
73     void transactionFeeChanged(qint64);
74     void coinControlFeaturesChanged(bool);
75 };
76
77 #endif // OPTIONSMODEL_H