[Qt] allow to execute a callback during splashscreen progress
This commit is contained in:
@@ -131,6 +131,7 @@ SplashScreen::SplashScreen(Qt::WindowFlags f, const NetworkStyle *networkStyle)
|
||||
move(QApplication::desktop()->screenGeometry().center() - r.center());
|
||||
|
||||
subscribeToCoreSignals();
|
||||
installEventFilter(this);
|
||||
}
|
||||
|
||||
SplashScreen::~SplashScreen()
|
||||
@@ -138,6 +139,16 @@ SplashScreen::~SplashScreen()
|
||||
unsubscribeFromCoreSignals();
|
||||
}
|
||||
|
||||
bool SplashScreen::eventFilter(QObject * obj, QEvent * ev) {
|
||||
if (ev->type() == QEvent::KeyPress) {
|
||||
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(ev);
|
||||
if(keyEvent->text()[0] == 'q' && breakAction != nullptr) {
|
||||
breakAction();
|
||||
}
|
||||
}
|
||||
return QObject::eventFilter(obj, ev);
|
||||
}
|
||||
|
||||
void SplashScreen::slotFinish(QWidget *mainWin)
|
||||
{
|
||||
Q_UNUSED(mainWin);
|
||||
@@ -164,6 +175,18 @@ static void ShowProgress(SplashScreen *splash, const std::string &title, int nPr
|
||||
InitMessage(splash, title + strprintf("%d", nProgress) + "%");
|
||||
}
|
||||
|
||||
void SplashScreen::setBreakAction(const std::function<void(void)> &action)
|
||||
{
|
||||
breakAction = action;
|
||||
}
|
||||
|
||||
static void SetProgressBreakAction(SplashScreen *splash, const std::function<void(void)> &action)
|
||||
{
|
||||
QMetaObject::invokeMethod(splash, "setBreakAction",
|
||||
Qt::QueuedConnection,
|
||||
Q_ARG(std::function<void(void)>, action));
|
||||
}
|
||||
|
||||
#ifdef ENABLE_WALLET
|
||||
void SplashScreen::ConnectWallet(CWallet* wallet)
|
||||
{
|
||||
@@ -177,6 +200,7 @@ void SplashScreen::subscribeToCoreSignals()
|
||||
// Connect signals to client
|
||||
uiInterface.InitMessage.connect(boost::bind(InitMessage, this, _1));
|
||||
uiInterface.ShowProgress.connect(boost::bind(ShowProgress, this, _1, _2));
|
||||
uiInterface.SetProgressBreakAction.connect(boost::bind(SetProgressBreakAction, this, _1));
|
||||
#ifdef ENABLE_WALLET
|
||||
uiInterface.LoadWallet.connect(boost::bind(&SplashScreen::ConnectWallet, this, _1));
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user