move back to original directory structure
[novacoin.git] / src / qt / clientmodel.h
1 #ifndef CLIENTMODEL_H
2 #define CLIENTMODEL_H
3
4 #include <QObject>
5
6 class OptionsModel;
7 class AddressTableModel;
8 class TransactionTableModel;
9
10 class ClientModel : public QObject
11 {
12     Q_OBJECT
13 public:
14     explicit ClientModel(QObject *parent = 0);
15
16     enum StatusCode
17     {
18         OK,
19         InvalidAmount,
20         InvalidAddress,
21         AmountExceedsBalance,
22         AmountWithFeeExceedsBalance,
23         Aborted,
24         MiscError
25     };
26
27     OptionsModel *getOptionsModel();
28     AddressTableModel *getAddressTableModel();
29     TransactionTableModel *getTransactionTableModel();
30
31     qint64 getBalance();
32     QString getAddress();
33     int getNumConnections();
34     int getNumBlocks();
35     int getNumTransactions();
36
37     /* Set default address */
38     void setAddress(const QString &defaultAddress);
39     /* Send coins */
40     StatusCode sendCoins(const QString &payTo, qint64 payAmount);
41 private:
42     OptionsModel *optionsModel;
43     AddressTableModel *addressTableModel;
44     TransactionTableModel *transactionTableModel;
45
46 signals:
47     void balanceChanged(qint64 balance);
48     void addressChanged(const QString &address);
49     void numConnectionsChanged(int count);
50     void numBlocksChanged(int count);
51     void numTransactionsChanged(int count);
52     /* Asynchronous error notification */
53     void error(const QString &title, const QString &message);
54
55 public slots:
56
57 private slots:
58     void update();
59 };
60
61 #endif // CLIENTMODEL_H