1 #ifndef CALLCONTRACT_H
2 #define CALLCONTRACT_H
3 
4 #include <QWidget>
5 
6 class PlatformStyle;
7 class WalletModel;
8 class ClientModel;
9 class ContractTableModel;
10 class ExecRPCCommand;
11 class ABIFunctionField;
12 class ContractABI;
13 class TabBarInfo;
14 
15 namespace Ui {
16 class CallContract;
17 }
18 
19 class CallContract : public QWidget
20 {
21     Q_OBJECT
22 
23 public:
24     explicit CallContract(const PlatformStyle *platformStyle, QWidget *parent = 0);
25     ~CallContract();
26 
27     void setClientModel(ClientModel *clientModel);
28     void setModel(WalletModel *model);
29     bool isValidContractAddress();
30     bool isValidInterfaceABI();
31     bool isDataValid();
32     void setContractAddress(const QString &address);
33 
34 Q_SIGNALS:
35 
36 public Q_SLOTS:
37     void on_clearAllClicked();
38     void on_callContractClicked();
39     void on_updateCallContractButton();
40     void on_newContractABI();
41     void on_saveInfoClicked();
42     void on_loadInfoClicked();
43     void on_pasteAddressClicked();
44     void on_contractAddressChanged();
45 
46 private:
47     QString toDataHex(int func, QString& errorMessage);
48 
49 private:
50     Ui::CallContract *ui;
51     WalletModel* m_model;
52     ClientModel* m_clientModel;
53     ContractTableModel* m_contractModel;
54     ExecRPCCommand* m_execRPCCommand;
55     ABIFunctionField* m_ABIFunctionField;
56     ContractABI* m_contractABI;
57     TabBarInfo* m_tabInfo;
58     const PlatformStyle* m_platformStyle;
59     int m_results;
60 };
61 
62 #endif // CALLCONTRACT_H
63