text: // Copyright (c) 2011-2016 The Bitcoin Core developers
  // Copyright (c) 2017-2019 The Raven Core developers
  // Copyright (c) 2019 The Alphacon Core developers
  // Distributed under the MIT software license, see the accompanying
  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
  
  #ifndef ALPHACON_QT_OVERVIEWPAGE_H
  #define ALPHACON_QT_OVERVIEWPAGE_H
  
  #include "amount.h"
  
  #include <QSortFilterProxyModel>
  #include <QWidget>
  #include <QMenu>
  #include <memory>
  
  class ClientModel;
  class TransactionFilterProxy;
  class TxViewDelegate;
  class PlatformStyle;
  class WalletModel;
  class TokenFilterProxy;
  
  class TokenViewDelegate;
  
  namespace Ui {
      class OverviewPage;
  }
  
  QT_BEGIN_NAMESPACE
  class QModelIndex;
  QT_END_NAMESPACE
  
  /** Overview ("home") page widget */
  class OverviewPage : public QWidget
  {
      Q_OBJECT
  
  public:
      explicit OverviewPage(const PlatformStyle *platformStyle, QWidget *parent = 0);
      ~OverviewPage();
  
      void setClientModel(ClientModel *clientModel);
      void setWalletModel(WalletModel *walletModel);
      void showOutOfSyncWarning(bool fShow);
      void showTokens();
  
  public Q_SLOTS:
      void setBalance(const CAmount& balance, const CAmount& unconfirmedBalance, const CAmount& immatureBalance, const CAmount& stake,
                      const CAmount& watchOnlyBalance, const CAmount& watchUnconfBalance, const CAmount& watchImmatureBalance, const CAmount& watchOnlyStake);
  
  Q_SIGNALS:
      void transactionClicked(const QModelIndex &index);
      void tokenSendClicked(const QModelIndex &index);
      void tokenIssueSubClicked(const QModelIndex &index);
      void tokenIssueUniqueClicked(const QModelIndex &index);
      void tokenReissueClicked(const QModelIndex &index);
      void outOfSyncWarningClicked();
  
  private:
      Ui::OverviewPage *ui;
      ClientModel *clientModel;
      WalletModel *walletModel;
      CAmount currentBalance;
      CAmount currentUnconfirmedBalance;
      CAmount currentImmatureBalance;
      CAmount currentStake;
      CAmount currentWatchOnlyBalance;
      CAmount currentWatchUnconfBalance;
      CAmount currentWatchImmatureBalance;
      CAmount currentWatchOnlyStake;
  
      TxViewDelegate *txdelegate;
      std::unique_ptr<TransactionFilterProxy> filter;
      std::unique_ptr<TokenFilterProxy> tokenFilter;
  
      TokenViewDelegate *tokendelegate;
      QMenu *contextMenu;
      QAction *sendAction;
      QAction *issueSub;
      QAction *issueUnique;
      QAction *reissue;
  
  
  private Q_SLOTS:
      void updateDisplayUnit();
      void handleTransactionClicked(const QModelIndex &index);
      void handleTokenClicked(const QModelIndex &index);
      void updateAlerts(const QString &warnings);
      void updateWatchOnlyLabels(bool showWatchOnly);
      void handleOutOfSyncWarningClicks();
      void tokenSearchChanged();
  };
  
  #endif // ALPHACON_QT_OVERVIEWPAGE_H
  