PIVX Core  5.6.99
P2P Digital Currency
loadingdialog.h
Go to the documentation of this file.
1 // Copyright (c) 2019-2021 The PIVX Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #ifndef PIVX_QT_LOADINGDIALOG_H
6 #define PIVX_QT_LOADINGDIALOG_H
7 
8 #include "prunnable.h"
9 #include "qt/walletmodel.h"
10 #include <QDialog>
11 #include <QPointer>
12 #include <QThread>
13 #include <QTimer>
14 #include <iostream>
15 
16 namespace Ui {
17 class LoadingDialog;
18 }
19 
20 class Worker : public QObject {
21  Q_OBJECT
22 public:
25  runnable = nullptr;
26  }
27  virtual void clean() {};
28  void setType(int _type) { type = _type; }
29 public Q_SLOTS:
30  void process();
31 Q_SIGNALS:
32  void finished();
33  void error(QString err, int type);
34 
35 private:
37  int type;
38 };
39 
40 /*
41  * Worker that keeps track of the wallet unlock context
42  */
43 class WalletWorker : public Worker {
44  Q_OBJECT
45 public:
46  WalletWorker(Runnable* runnable, int type, std::unique_ptr<WalletModel::UnlockContext> _pctx):
48  pctx(std::move(_pctx))
49  {}
50  void clean() override
51  {
52  if (pctx) pctx.reset();
53  }
54  void setContext(std::unique_ptr<WalletModel::UnlockContext> _pctx)
55  {
56  clean();
57  pctx = std::move(_pctx);
58  }
59 private:
60  std::unique_ptr<WalletModel::UnlockContext> pctx{nullptr};
61 };
62 
63 class LoadingDialog : public QDialog
64 {
65  Q_OBJECT
66 
67 public:
68  explicit LoadingDialog(QWidget *parent = nullptr, QString loadingMsg = "");
70 
71  void execute(Runnable *runnable, int type, std::unique_ptr<WalletModel::UnlockContext> pctx = nullptr);
72 
73 public Q_SLOTS:
74  void finished();
75  void loadingTextChange();
76 
77 private:
78  Ui::LoadingDialog *ui;
79  QTimer *loadingTimer = nullptr;
80  int loading = 0;
81 };
82 
83 #endif // PIVX_QT_LOADINGDIALOG_H
LoadingDialog(QWidget *parent=nullptr, QString loadingMsg="")
void loadingTextChange()
Ui::LoadingDialog * ui
Definition: loadingdialog.h:78
void execute(Runnable *runnable, int type, std::unique_ptr< WalletModel::UnlockContext > pctx=nullptr)
QTimer * loadingTimer
Definition: loadingdialog.h:79
void setContext(std::unique_ptr< WalletModel::UnlockContext > _pctx)
Definition: loadingdialog.h:54
void clean() override
Definition: loadingdialog.h:50
std::unique_ptr< WalletModel::UnlockContext > pctx
Definition: loadingdialog.h:60
WalletWorker(Runnable *runnable, int type, std::unique_ptr< WalletModel::UnlockContext > _pctx)
Definition: loadingdialog.h:46
Worker(Runnable *runnable, int type)
Definition: loadingdialog.h:23
virtual void clean()
Definition: loadingdialog.h:27
void error(QString err, int type)
Runnable * runnable
Definition: loadingdialog.h:36
void process()
void setType(int _type)
Definition: loadingdialog.h:28
int type
Definition: loadingdialog.h:37
void finished()
Definition: uint256.h:212