You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.5 KiB
96 lines
2.5 KiB
// Copyright (c) 2011-2013 The Bitcoin developers |
|
// Distributed under the MIT/X11 software license, see the accompanying |
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php. |
|
|
|
#ifndef CLIENTMODEL_H |
|
#define CLIENTMODEL_H |
|
|
|
#include <QObject> |
|
|
|
class AddressTableModel; |
|
class OptionsModel; |
|
class TransactionTableModel; |
|
|
|
class CWallet; |
|
|
|
QT_BEGIN_NAMESPACE |
|
class QDateTime; |
|
class QTimer; |
|
QT_END_NAMESPACE |
|
|
|
enum BlockSource { |
|
BLOCK_SOURCE_NONE, |
|
BLOCK_SOURCE_REINDEX, |
|
BLOCK_SOURCE_DISK, |
|
BLOCK_SOURCE_NETWORK |
|
}; |
|
|
|
/** Model for Bitcoin network client. */ |
|
class ClientModel : public QObject |
|
{ |
|
Q_OBJECT |
|
|
|
public: |
|
explicit ClientModel(OptionsModel *optionsModel, QObject *parent = 0); |
|
~ClientModel(); |
|
|
|
OptionsModel *getOptionsModel(); |
|
|
|
int getNumConnections() const; |
|
int getNumBlocks() const; |
|
int getNumBlocksAtStartup(); |
|
|
|
quint64 getTotalBytesRecv() const; |
|
quint64 getTotalBytesSent() const; |
|
|
|
double getVerificationProgress() const; |
|
QDateTime getLastBlockDate() const; |
|
|
|
//! Return true if client connected to testnet |
|
bool isTestNet() const; |
|
//! Return true if core is doing initial block download |
|
bool inInitialBlockDownload() const; |
|
//! Return true if core is importing blocks |
|
enum BlockSource getBlockSource() const; |
|
//! Return conservative estimate of total number of blocks, or 0 if unknown |
|
int getNumBlocksOfPeers() const; |
|
//! Return warnings to be displayed in status bar |
|
QString getStatusBarWarnings() const; |
|
|
|
QString formatFullVersion() const; |
|
QString formatBuildDate() const; |
|
bool isReleaseVersion() const; |
|
QString clientName() const; |
|
QString formatClientStartupTime() const; |
|
|
|
private: |
|
OptionsModel *optionsModel; |
|
|
|
int cachedNumBlocks; |
|
int cachedNumBlocksOfPeers; |
|
bool cachedReindexing; |
|
bool cachedImporting; |
|
|
|
int numBlocksAtStartup; |
|
|
|
QTimer *pollTimer; |
|
|
|
void subscribeToCoreSignals(); |
|
void unsubscribeFromCoreSignals(); |
|
|
|
signals: |
|
void numConnectionsChanged(int count); |
|
void numBlocksChanged(int count, int countOfPeers); |
|
void alertsChanged(const QString &warnings); |
|
void bytesChanged(quint64 totalBytesIn, quint64 totalBytesOut); |
|
|
|
//! Asynchronous message notification |
|
void message(const QString &title, const QString &message, unsigned int style); |
|
|
|
public slots: |
|
void updateTimer(); |
|
void updateNumConnections(int numConnections); |
|
void updateAlert(const QString &hash, int status); |
|
}; |
|
|
|
#endif // CLIENTMODEL_H
|
|
|