#include "headers.h"
#include <QTimer>
+#include <QDateTime>
-ClientModel::ClientModel(CWallet *wallet, QObject *parent) :
- QObject(parent), wallet(wallet), optionsModel(0)
+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.
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(MODEL_UPDATE_DELAY);
- optionsModel = new OptionsModel(wallet, this);
+ numBlocksAtStartup = -1;
}
int ClientModel::getNumConnections() 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()
{
- // Plainly emit all signals for now. To be more efficient this should check
- // whether the values actually changed first, although it'd be even better if these
- // were events coming in from the bitcoin core.
- emit numConnectionsChanged(getNumConnections());
- emit numBlocksChanged(getNumBlocks());
+ 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 IsInitialBlockDownload();
}
-int ClientModel::getTotalBlocksEstimate() const
+int ClientModel::getNumBlocksOfPeers() const
+{
+ return GetNumBlocksOfPeers();
+}
+
+QString ClientModel::getStatusBarWarnings() const
{
- return GetTotalBlocksEstimate();
+ return QString::fromStdString(GetWarnings("statusbar"));
}
OptionsModel *ClientModel::getOptionsModel()