Skip to content

Commit e7b9a09

Browse files
committed
qml: Connect NodeModel to the NotifyBlockTip core signal
1 parent 87c8d50 commit e7b9a09

File tree

5 files changed

+32
-2
lines changed

5 files changed

+32
-2
lines changed

src/qml/bitcoin.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ int QmlGuiMain(int argc, char* argv[])
128128
InitExecutor init_executor{*node};
129129
QObject::connect(&node_model, &NodeModel::requestedInitialize, &init_executor, &InitExecutor::initialize);
130130
QObject::connect(&node_model, &NodeModel::requestedShutdown, &init_executor, &InitExecutor::shutdown);
131-
// QObject::connect(&init_executor, &InitExecutor::initializeResult, &node_model, &NodeModel::initializeResult);
131+
QObject::connect(&init_executor, &InitExecutor::initializeResult, &node_model, &NodeModel::initializeResult);
132132
QObject::connect(&init_executor, &InitExecutor::shutdownResult, qGuiApp, &QGuiApplication::quit, Qt::QueuedConnection);
133133
// QObject::connect(&init_executor, &InitExecutor::runawayException, &node_model, &NodeModel::handleRunawayException);
134134

src/qml/nodemodel.cpp

+17
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
#include <qml/nodemodel.h>
66

77
#include <interfaces/node.h>
8+
#include <validation.h>
89

910
NodeModel::NodeModel(interfaces::Node& node)
1011
: m_node{node}
1112
{
13+
ConnectToBlockTipSignal();
1214
}
1315

1416
void NodeModel::setBlockTipHeight(int new_height)
@@ -28,3 +30,18 @@ void NodeModel::startNodeShutdown()
2830
{
2931
Q_EMIT requestedShutdown();
3032
}
33+
34+
void NodeModel::initializeResult([[maybe_unused]] bool success, interfaces::BlockAndHeaderTipInfo tip_info)
35+
{
36+
// TODO: Handle the `success` parameter,
37+
setBlockTipHeight(tip_info.block_height);
38+
}
39+
40+
void NodeModel::ConnectToBlockTipSignal()
41+
{
42+
assert(!m_handler_notify_block_tip);
43+
m_handler_notify_block_tip = m_node.handleNotifyBlockTip(
44+
[this](SynchronizationState state, interfaces::BlockTip tip, double verification_progress) {
45+
setBlockTipHeight(tip.block_height);
46+
});
47+
}

src/qml/nodemodel.h

+11
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55
#ifndef BITCOIN_QML_NODEMODEL_H
66
#define BITCOIN_QML_NODEMODEL_H
77

8+
#include <interfaces/handler.h>
9+
#include <interfaces/node.h>
10+
11+
#include <memory>
12+
813
#include <QObject>
914

1015
namespace interfaces {
@@ -26,6 +31,9 @@ class NodeModel : public QObject
2631
Q_INVOKABLE void startNodeInitializionThread();
2732
void startNodeShutdown();
2833

34+
public Q_SLOTS:
35+
void initializeResult(bool success, interfaces::BlockAndHeaderTipInfo tip_info);
36+
2937
Q_SIGNALS:
3038
void blockTipHeightChanged();
3139
void requestedInitialize();
@@ -36,6 +44,9 @@ class NodeModel : public QObject
3644
int m_block_tip_height{0};
3745

3846
interfaces::Node& m_node;
47+
std::unique_ptr<interfaces::Handler> m_handler_notify_block_tip;
48+
49+
void ConnectToBlockTipSignal();
3950
};
4051

4152
#endif // BITCOIN_QML_NODEMODEL_H

src/qt/bitcoin.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ static void RegisterMetaTypes()
8585

8686
qRegisterMetaType<std::function<void()>>("std::function<void()>");
8787
qRegisterMetaType<QMessageBox::Icon>("QMessageBox::Icon");
88-
qRegisterMetaType<interfaces::BlockAndHeaderTipInfo>("interfaces::BlockAndHeaderTipInfo");
8988
}
9089

9190
static QString GetLangTerritory()

src/qt/main.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <qt/bitcoin.h>
1313
#endif // USE_QML
1414

15+
#include <interfaces/node.h>
1516
#include <logging.h>
1617
#include <noui.h>
1718
#include <util/system.h>
@@ -62,6 +63,8 @@ void DebugMessageHandler(QtMsgType type, const QMessageLogContext& context, cons
6263

6364
int main(int argc, char* argv[])
6465
{
66+
qRegisterMetaType<interfaces::BlockAndHeaderTipInfo>("interfaces::BlockAndHeaderTipInfo");
67+
6568
#ifdef WIN32
6669
util::WinCmdLineArgs win_args;
6770
std::tie(argc, argv) = win_args.get();

0 commit comments

Comments
 (0)