text: // Copyright (c) 2011-2020 The Samcoin Core developers
  // Distributed under the MIT software license, see the accompanying
  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
  
  #ifndef SAMCOIN_QT_OPTIONSDIALOG_H
  #define SAMCOIN_QT_OPTIONSDIALOG_H
  
  #include <QDialog>
  #include <QValidator>
  
  class OptionsModel;
  class QValidatedLineEdit;
  
  QT_BEGIN_NAMESPACE
  class QDataWidgetMapper;
  QT_END_NAMESPACE
  
  namespace Ui {
  class OptionsDialog;
  }
  
  /** Proxy address widget validator, checks for a valid proxy address.
   */
  class ProxyAddressValidator : public QValidator
  {
      Q_OBJECT
  
  public:
      explicit ProxyAddressValidator(QObject *parent);
  
      State validate(QString &input, int &pos) const override;
  };
  
  /** Preferences dialog. */
  class OptionsDialog : public QDialog
  {
      Q_OBJECT
  
  public:
      explicit OptionsDialog(QWidget *parent, bool enableWallet);
      ~OptionsDialog();
  
      enum Tab {
          TAB_MAIN,
          TAB_NETWORK,
      };
  
      void setModel(OptionsModel *model);
      void setMapper();
      void setCurrentTab(OptionsDialog::Tab tab);
  
  private Q_SLOTS:
      /* set OK button state (enabled / disabled) */
      void setOkButtonState(bool fState);
      void on_resetButton_clicked();
      void on_openSamcoinConfButton_clicked();
      void on_okButton_clicked();
      void on_cancelButton_clicked();
  
      void on_showTrayIcon_stateChanged(int state);
  
      void togglePruneWarning(bool enabled);
      void showRestartWarning(bool fPersistent = false);
      void clearStatusLabel();
      void updateProxyValidationState();
      /* query the networks, for which the default proxy is used */
      void updateDefaultProxyNets();
  
  Q_SIGNALS:
      void proxyIpChecks(QValidatedLineEdit *pUiProxyIp, uint16_t nProxyPort);
  
  private:
      Ui::OptionsDialog *ui;
      OptionsModel *model;
      QDataWidgetMapper *mapper;
  };
  
  #endif // SAMCOIN_QT_OPTIONSDIALOG_H
  