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_OVERVIEWPAGE_H
6 #define BITCOIN_QT_OVERVIEWPAGE_H
7 
8 #include <interfaces/wallet.h>
9 
10 #include <QWidget>
11 #include <memory>
12 
13 class ClientModel;
14 class TransactionFilterProxy;
15 class TxViewDelegate;
16 class PlatformStyle;
17 class WalletModel;
18 
19 namespace Ui {
20     class OverviewPage;
21 }
22 
23 QT_BEGIN_NAMESPACE
24 class QModelIndex;
25 QT_END_NAMESPACE
26 
27 /** Overview ("home") page widget */
28 class OverviewPage : public QWidget
29 {
30     Q_OBJECT
31 
32 public:
33     explicit OverviewPage(const PlatformStyle *platformStyle, QWidget *parent = nullptr);
34     ~OverviewPage();
35 
36     void setClientModel(ClientModel *clientModel);
37     void setWalletModel(WalletModel *walletModel);
38     void showOutOfSyncWarning(bool fShow);
39 
40 public Q_SLOTS:
41     void setBalance(const interfaces::WalletBalances& balances);
42     void setPrivacy(bool privacy);
43 
44 Q_SIGNALS:
45     void transactionClicked(const QModelIndex &index);
46     void outOfSyncWarningClicked();
47 
48 private:
49     Ui::OverviewPage *ui;
50     ClientModel *clientModel;
51     WalletModel *walletModel;
52     interfaces::WalletBalances m_balances;
53     bool m_privacy{false};
54 
55     TxViewDelegate *txdelegate;
56     std::unique_ptr<TransactionFilterProxy> filter;
57 
58 private Q_SLOTS:
59     void updateDisplayUnit();
60     void handleTransactionClicked(const QModelIndex &index);
61     void updateAlerts(const QString &warnings);
62     void updateWatchOnlyLabels(bool showWatchOnly);
63     void handleOutOfSyncWarningClicks();
64 };
65 
66 #endif // BITCOIN_QT_OVERVIEWPAGE_H
67