1 // Copyright (c) 2011-2018 The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #ifndef BITCOIN_QT_OPTIONSDIALOG_H
6 #define BITCOIN_QT_OPTIONSDIALOG_H
7 
8 #include <QDialog>
9 #include <QValidator>
10 
11 class OptionsModel;
12 class QValidatedLineEdit;
13 
14 QT_BEGIN_NAMESPACE
15 class QDataWidgetMapper;
16 QT_END_NAMESPACE
17 
18 namespace Ui {
19 class OptionsDialog;
20 }
21 
22 /** Proxy address widget validator, checks for a valid proxy address.
23  */
24 class ProxyAddressValidator : public QValidator
25 {
26     Q_OBJECT
27 
28 public:
29     explicit ProxyAddressValidator(QObject *parent);
30 
31     State validate(QString &input, int &pos) const;
32 };
33 
34 /** Preferences dialog. */
35 class OptionsDialog : public QDialog
36 {
37     Q_OBJECT
38 
39 public:
40     explicit OptionsDialog(QWidget *parent, bool enableWallet);
41     ~OptionsDialog();
42 
43     enum Tab {
44         TAB_MAIN,
45         TAB_NETWORK,
46     };
47 
48     void setModel(OptionsModel *model);
49     void setMapper();
50     void setCurrentTab(OptionsDialog::Tab tab);
51 
52 private Q_SLOTS:
53     /* set OK button state (enabled / disabled) */
54     void setOkButtonState(bool fState);
55     void on_resetButton_clicked();
56     void on_openBitcoinConfButton_clicked();
57     void on_okButton_clicked();
58     void on_cancelButton_clicked();
59 
60     void on_hideTrayIcon_stateChanged(int fState);
61 
62     void togglePruneWarning(bool enabled);
63     void showRestartWarning(bool fPersistent = false);
64     void clearStatusLabel();
65     void updateProxyValidationState();
66     /* query the networks, for which the default proxy is used */
67     void updateDefaultProxyNets();
68 
69 Q_SIGNALS:
70     void proxyIpChecks(QValidatedLineEdit *pUiProxyIp, int nProxyPort);
71 
72 private:
73     Ui::OptionsDialog *ui;
74     OptionsModel *model;
75     QDataWidgetMapper *mapper;
76 };
77 
78 #endif // BITCOIN_QT_OPTIONSDIALOG_H
79