@@ -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