core initialisation, client model binding
This commit is contained in:
parent
ad88e7626b
commit
18cab09a95
7 changed files with 144 additions and 13 deletions
|
@ -4,6 +4,7 @@ DEPENDPATH += .
|
|||
INCLUDEPATH += gui/include core/include cryptopp/include json/include
|
||||
unix:LIBS += -lssl -lboost_system -lboost_filesystem -lboost_program_options -lboost_thread -ldb_cxx
|
||||
macx:DEFINES += __WXMAC_OSX__ MSG_NOSIGNAL=0
|
||||
# WINDOWS defines, -DSSL, look at build system
|
||||
|
||||
# Input
|
||||
HEADERS += gui/include/bitcoingui.h \
|
||||
|
@ -51,7 +52,9 @@ HEADERS += gui/include/bitcoingui.h \
|
|||
json/include/json/json_spirit_reader.h \
|
||||
json/include/json/json_spirit_error_position.h \
|
||||
json/include/json/json_spirit.h \
|
||||
core/include/rpc.h
|
||||
core/include/rpc.h \
|
||||
gui/src/clientmodel.h \
|
||||
gui/include/clientmodel.h
|
||||
SOURCES += gui/src/bitcoin.cpp gui/src/bitcoingui.cpp \
|
||||
gui/src/transactiontablemodel.cpp \
|
||||
gui/src/addresstablemodel.cpp \
|
||||
|
@ -74,7 +77,8 @@ SOURCES += gui/src/bitcoin.cpp gui/src/bitcoingui.cpp \
|
|||
core/src/db.cpp \
|
||||
json/src/json_spirit_writer.cpp \
|
||||
json/src/json_spirit_value.cpp \
|
||||
json/src/json_spirit_reader.cpp
|
||||
json/src/json_spirit_reader.cpp \
|
||||
gui/src/clientmodel.cpp
|
||||
|
||||
RESOURCES += \
|
||||
gui/bitcoin.qrc
|
||||
|
|
|
@ -513,9 +513,11 @@ bool AppInit2(int argc, char* argv[])
|
|||
SetStartOnSystemStartup(true);
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
#ifndef GUI
|
||||
while (1)
|
||||
Sleep(5000);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return true;
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
/* Forward declarations */
|
||||
class TransactionTableModel;
|
||||
class ClientModel;
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QLabel;
|
||||
|
@ -17,6 +18,7 @@ class BitcoinGUI : public QMainWindow
|
|||
Q_OBJECT
|
||||
public:
|
||||
explicit BitcoinGUI(QWidget *parent = 0);
|
||||
void setModel(ClientModel *model);
|
||||
|
||||
/* Transaction table tab indices */
|
||||
enum {
|
||||
|
@ -27,6 +29,7 @@ public:
|
|||
} TabIndex;
|
||||
private:
|
||||
TransactionTableModel *transaction_model;
|
||||
ClientModel *model;
|
||||
|
||||
QLineEdit *address;
|
||||
QLabel *labelBalance;
|
||||
|
|
31
gui/include/clientmodel.h
Normal file
31
gui/include/clientmodel.h
Normal file
|
@ -0,0 +1,31 @@
|
|||
#ifndef CLIENTMODEL_H
|
||||
#define CLIENTMODEL_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class ClientModel : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ClientModel(QObject *parent = 0);
|
||||
|
||||
double getBalance();
|
||||
QString getAddress();
|
||||
int getNumConnections();
|
||||
int getNumBlocks();
|
||||
int getNumTransactions();
|
||||
|
||||
signals:
|
||||
void balanceChanged(double balance);
|
||||
void addressChanged(const QString &address);
|
||||
void numConnectionsChanged(int count);
|
||||
void numBlocksChanged(int count);
|
||||
void numTransactionsChanged(int count);
|
||||
|
||||
public slots:
|
||||
|
||||
private slots:
|
||||
void update();
|
||||
};
|
||||
|
||||
#endif // CLIENTMODEL_H
|
|
@ -2,7 +2,9 @@
|
|||
* W.J. van der Laan 2011
|
||||
*/
|
||||
#include "bitcoingui.h"
|
||||
#include "clientmodel.h"
|
||||
#include "util.h"
|
||||
#include "init.h"
|
||||
|
||||
#include <QApplication>
|
||||
|
||||
|
@ -10,19 +12,29 @@ int main(int argc, char *argv[])
|
|||
{
|
||||
QApplication app(argc, argv);
|
||||
|
||||
/* Testing on testnet */
|
||||
fTestNet = true;
|
||||
|
||||
try {
|
||||
if(AppInit2(argc, argv))
|
||||
{
|
||||
ClientModel model;
|
||||
BitcoinGUI window;
|
||||
window.setBalance(1234.567890);
|
||||
window.setNumConnections(4);
|
||||
window.setNumTransactions(4);
|
||||
window.setNumBlocks(33);
|
||||
window.setAddress("123456789");
|
||||
window.setModel(&model);
|
||||
|
||||
window.show();
|
||||
|
||||
/* Depending on settings: QApplication::setQuitOnLastWindowClosed(false); */
|
||||
int retval = app.exec();
|
||||
|
||||
return app.exec();
|
||||
Shutdown(NULL);
|
||||
|
||||
return retval;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
} catch (std::exception& e) {
|
||||
PrintException(&e, "Runaway exception");
|
||||
} catch (...) {
|
||||
PrintException(NULL, "Runaway exception");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include "sendcoinsdialog.h"
|
||||
#include "optionsdialog.h"
|
||||
#include "aboutdialog.h"
|
||||
#include "clientmodel.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QMainWindow>
|
||||
|
@ -139,6 +140,26 @@ void BitcoinGUI::createActions()
|
|||
connect(about, SIGNAL(triggered()), this, SLOT(aboutClicked()));
|
||||
}
|
||||
|
||||
void BitcoinGUI::setModel(ClientModel *model)
|
||||
{
|
||||
this->model = model;
|
||||
|
||||
setBalance(model->getBalance());
|
||||
connect(model, SIGNAL(balanceChanged(double)), this, SLOT(setBalance(double)));
|
||||
|
||||
setNumConnections(model->getNumConnections());
|
||||
connect(model, SIGNAL(numConnectionsChanged(int)), this, SLOT(setNumConnections(int)));
|
||||
|
||||
setNumTransactions(model->getNumTransactions());
|
||||
connect(model, SIGNAL(numTransactionsChanged(int)), this, SLOT(setNumTransactions(int)));
|
||||
|
||||
setNumBlocks(model->getNumBlocks());
|
||||
connect(model, SIGNAL(numBlocksChanged(int)), this, SLOT(setNumBlocks(int)));
|
||||
|
||||
setAddress(model->getAddress());
|
||||
connect(model, SIGNAL(addressChanged(QString)), this, SLOT(setAddress(QString)));
|
||||
}
|
||||
|
||||
void BitcoinGUI::createTrayIcon()
|
||||
{
|
||||
QMenu *trayIconMenu = new QMenu(this);
|
||||
|
|
58
gui/src/clientmodel.cpp
Normal file
58
gui/src/clientmodel.cpp
Normal file
|
@ -0,0 +1,58 @@
|
|||
#include "clientmodel.h"
|
||||
#include "main.h"
|
||||
|
||||
#include <QTimer>
|
||||
|
||||
/* milliseconds between model updates */
|
||||
const int MODEL_UPDATE_DELAY = 250;
|
||||
|
||||
ClientModel::ClientModel(QObject *parent) :
|
||||
QObject(parent)
|
||||
{
|
||||
/* Until we build signal notifications into the bitcoin core,
|
||||
simply update everything using a timer.
|
||||
*/
|
||||
QTimer *timer = new QTimer(this);
|
||||
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
|
||||
timer->start(MODEL_UPDATE_DELAY);
|
||||
}
|
||||
|
||||
double ClientModel::getBalance()
|
||||
{
|
||||
return GetBalance();
|
||||
}
|
||||
|
||||
QString ClientModel::getAddress()
|
||||
{
|
||||
std::vector<unsigned char> vchPubKey;
|
||||
if (CWalletDB("r").ReadDefaultKey(vchPubKey))
|
||||
{
|
||||
return QString::fromStdString(PubKeyToAddress(vchPubKey));
|
||||
} else {
|
||||
return QString();
|
||||
}
|
||||
}
|
||||
|
||||
int ClientModel::getNumConnections()
|
||||
{
|
||||
return vNodes.size();
|
||||
}
|
||||
|
||||
int ClientModel::getNumBlocks()
|
||||
{
|
||||
return nBestHeight;
|
||||
}
|
||||
|
||||
int ClientModel::getNumTransactions()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ClientModel::update()
|
||||
{
|
||||
emit balanceChanged(getBalance());
|
||||
emit addressChanged(getAddress());
|
||||
emit numConnectionsChanged(getNumConnections());
|
||||
emit numBlocksChanged(getNumBlocks());
|
||||
emit numTransactionsChanged(getNumTransactions());
|
||||
}
|
Loading…
Reference in a new issue