aboutsummaryrefslogtreecommitdiff
path: root/src/qt/clientmodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qt/clientmodel.cpp')
-rw-r--r--src/qt/clientmodel.cpp83
1 files changed, 83 insertions, 0 deletions
diff --git a/src/qt/clientmodel.cpp b/src/qt/clientmodel.cpp
new file mode 100644
index 0000000000..2ed3ce51df
--- /dev/null
+++ b/src/qt/clientmodel.cpp
@@ -0,0 +1,83 @@
+#include "clientmodel.h"
+#include "guiconstants.h"
+#include "optionsmodel.h"
+#include "addresstablemodel.h"
+#include "transactiontablemodel.h"
+
+#include "headers.h"
+
+#include <QTimer>
+#include <QDateTime>
+
+ClientModel::ClientModel(OptionsModel *optionsModel, QObject *parent) :
+ QObject(parent), optionsModel(optionsModel),
+ cachedNumConnections(0), cachedNumBlocks(0)
+{
+ // Until signal notifications is built into the bitcoin core,
+ // simply update everything after polling using a timer.
+ QTimer *timer = new QTimer(this);
+ connect(timer, SIGNAL(timeout()), this, SLOT(update()));
+ timer->start(MODEL_UPDATE_DELAY);
+
+ numBlocksAtStartup = -1;
+}
+
+int ClientModel::getNumConnections() const
+{
+ return vNodes.size();
+}
+
+int ClientModel::getNumBlocks() const
+{
+ return nBestHeight;
+}
+
+int ClientModel::getNumBlocksAtStartup()
+{
+ if (numBlocksAtStartup == -1) numBlocksAtStartup = getNumBlocks();
+ return numBlocksAtStartup;
+}
+
+QDateTime ClientModel::getLastBlockDate() const
+{
+ return QDateTime::fromTime_t(pindexBest->GetBlockTime());
+}
+
+void ClientModel::update()
+{
+ int newNumConnections = getNumConnections();
+ int newNumBlocks = getNumBlocks();
+
+ if(cachedNumConnections != newNumConnections)
+ emit numConnectionsChanged(newNumConnections);
+ if(cachedNumBlocks != newNumBlocks)
+ emit numBlocksChanged(newNumBlocks);
+
+ cachedNumConnections = newNumConnections;
+ cachedNumBlocks = newNumBlocks;
+}
+
+bool ClientModel::isTestNet() const
+{
+ return fTestNet;
+}
+
+bool ClientModel::inInitialBlockDownload() const
+{
+ return IsInitialBlockDownload();
+}
+
+int ClientModel::getNumBlocksOfPeers() const
+{
+ return GetNumBlocksOfPeers();
+}
+
+OptionsModel *ClientModel::getOptionsModel()
+{
+ return optionsModel;
+}
+
+QString ClientModel::formatFullVersion() const
+{
+ return QString::fromStdString(FormatFullVersion());
+}