@@ -37,6 +37,13 @@ class NodeModel : public QObject
3737 Q_PROPERTY (double verificationProgress READ verificationProgress NOTIFY verificationProgressChanged)
3838 Q_PROPERTY (bool pause READ pause WRITE setPause NOTIFY pauseChanged)
3939 Q_PROPERTY (bool faulted READ errorState WRITE setErrorState NOTIFY errorStateChanged)
40+ Q_PROPERTY (double snapshotProgress READ snapshotProgress WRITE setSnapshotProgress NOTIFY snapshotProgressChanged)
41+ Q_PROPERTY (bool snapshotLoading READ snapshotLoading NOTIFY snapshotLoadingChanged)
42+ Q_PROPERTY (bool isSnapshotLoaded READ isSnapshotLoaded NOTIFY snapshotLoaded)
43+ Q_PROPERTY (bool headersSynced READ headersSynced WRITE setHeadersSynced NOTIFY headersSyncedChanged)
44+ Q_PROPERTY (bool isIBDCompleted READ isIBDCompleted WRITE setIsIBDCompleted NOTIFY isIBDCompletedChanged)
45+ Q_PROPERTY (QString snapshotFilePath READ snapshotFilePath WRITE setSnapshotFilePath NOTIFY snapshotFilePathChanged)
46+ Q_PROPERTY (bool snapshotError READ snapshotError WRITE setSnapshotError NOTIFY snapshotErrorChanged)
4047
4148public:
4249 explicit NodeModel (interfaces::Node& node);
@@ -55,13 +62,28 @@ class NodeModel : public QObject
5562 void setPause (bool new_pause);
5663 bool errorState () const { return m_faulted; }
5764 void setErrorState (bool new_error);
65+ bool isSnapshotLoaded () const { return m_snapshot_loaded; }
66+ double snapshotProgress () const { return m_snapshot_progress; }
67+ void setSnapshotProgress (double new_progress);
68+ bool snapshotLoading () const { return m_snapshot_loading; }
69+ bool headersSynced () const { return m_headers_synced; }
70+ void setHeadersSynced (bool new_synced);
71+ bool isIBDCompleted () const { return m_is_ibd_completed; }
72+ void setIsIBDCompleted (bool new_completed);
73+ QString snapshotFilePath () const { return m_snapshot_file_path; }
74+ Q_INVOKABLE void setSnapshotFilePath (const QString& new_path);
75+ bool snapshotError () const { return m_snapshot_error; }
76+ Q_INVOKABLE void setSnapshotError (bool new_error);
5877
5978 Q_INVOKABLE float getTotalBytesReceived () const { return (float )m_node.getTotalBytesRecv (); }
6079 Q_INVOKABLE float getTotalBytesSent () const { return (float )m_node.getTotalBytesSent (); }
6180
6281 Q_INVOKABLE void startNodeInitializionThread ();
6382 Q_INVOKABLE void requestShutdown ();
6483
84+ Q_INVOKABLE void snapshotLoadThread (QString path_file);
85+ Q_INVOKABLE void checkAndLoadSnapshot ();
86+
6587 void startShutdownPolling ();
6688 void stopShutdownPolling ();
6789
@@ -83,6 +105,15 @@ public Q_SLOTS:
83105
84106 void setTimeRatioList (int new_time);
85107 void setTimeRatioListInitial ();
108+ void initializationFinished ();
109+ void snapshotLoaded (bool result);
110+ void snapshotProgressChanged ();
111+ void snapshotLoadingChanged ();
112+ void showProgress (const QString& title, int progress);
113+ void headersSyncedChanged ();
114+ void isIBDCompletedChanged ();
115+ void snapshotFilePathChanged ();
116+ void snapshotErrorChanged ();
86117
87118protected:
88119 void timerEvent (QTimerEvent* event) override ;
@@ -96,17 +127,25 @@ public Q_SLOTS:
96127 double m_verification_progress{0.0 };
97128 bool m_pause{false };
98129 bool m_faulted{false };
99-
130+ double m_snapshot_progress{ 0.0 };
100131 int m_shutdown_polling_timer_id{0 };
132+ int m_snapshot_timer_id{0 };
133+ bool m_snapshot_loading{false };
134+ bool m_snapshot_loaded{false };
135+ bool m_headers_synced{false };
136+ bool m_is_ibd_completed{false };
137+ QString m_snapshot_file_path;
138+ bool m_snapshot_error{false };
101139
102140 QVector<QPair<int , double >> m_block_process_time;
103141
104142 interfaces::Node& m_node;
105143 std::unique_ptr<interfaces::Handler> m_handler_notify_block_tip;
106144 std::unique_ptr<interfaces::Handler> m_handler_notify_num_peers_changed;
107-
145+ std::unique_ptr<interfaces::Handler> m_handler_snapshot_load_progress;
108146 void ConnectToBlockTipSignal ();
109147 void ConnectToNumConnectionsChangedSignal ();
148+ void ConnectToSnapshotLoadProgressSignal ();
110149};
111150
112151#endif // BITCOIN_QML_MODELS_NODEMODEL_H
0 commit comments