#include "log/UserOperationLog.h" #include "GUIMessageDialog.h" #include "ui_guimessagedialog.h" #include "event/EventCenter.h" #include #include GUIMessageDialog::GUIMessageDialog(QWidget *parent) : QDialog(parent) , mUI(new Ui::GUIMessageDialog) , mBtnMain(new QToolButton(this)) , mBtnAppend(new QToolButton(this)) , mFrameIndex(0) , mTimerID(-1) , mPending(false) { mUI->setupUi(this); this->setObjectName("MessageDialog"); this->setWindowFlags (Qt :: FramelessWindowHint | Qt :: Dialog); this->showFullScreen (); initBaseLayout(); this->setWindowOpacity(0.6); initLoadingFrameString(); } void GUIMessageDialog::initBaseLayout() { mUI->lblMsg->setVisible(false); mUI->lblProgressIcon->setVisible(false); mBtnMain->setObjectName("dialogBtn"); mBtnMain->setVisible(false); mBtnMain->setText("OK"); mBtnAppend->setObjectName("dialogBtn"); mBtnAppend->setVisible(false); mBtnAppend->setText("Stop"); auto btnContainer = new QWidget(this); auto hLayout = new QHBoxLayout(btnContainer); hLayout->setMargin(0); hLayout->addWidget(mBtnMain); hLayout->addWidget(mBtnAppend); mUI->btnContainerWidget->layout()->addWidget(btnContainer); } void GUIMessageDialog::initLoadingFrameString(){ for (int i=1; i <= 6; i++) { QString str(" "); for(int j=0;j 11) mFrameIndex = mFrameIndex % 12; mUI->lblProgressIcon->setText(mFrame[mFrameIndex++]); this->update(); } void GUIMessageDialog::stopLoading() { if (mTimerID != -1){ killTimer(mTimerID); mTimerID=-1; } disconnect(mBtnMain, nullptr, nullptr, nullptr); mUI->lblProgressIcon->setVisible(false); } void GUIMessageDialog::startLoading() { mUI->lblProgressIcon->setVisible(true); disconnect(mBtnMain, nullptr, nullptr, nullptr); connect(mBtnMain, &QToolButton::clicked, [=](){ if (mTimerID != -1){ killTimer(mTimerID); mTimerID = -1; } accept(); EventCenter::Default()->triggerEvent(GUIEvents::RequestStop, nullptr, nullptr); LOG_USER_OPERATION(Stop); }); mTimerID = startTimer(100); mBtnMain->setText("Stop"); mBtnMain->setVisible(true); } void GUIMessageDialog::showMessage(const QString& msg) { mUI->lblMsg->setVisible(true); mUI->lblMsg->setText(msg); } void GUIMessageDialog::showExitButton() { mBtnMain->setText("OK"); mBtnMain->setVisible(true); disconnect(mBtnMain, nullptr, nullptr, nullptr); connect(mBtnMain, &QToolButton::clicked, [=](){ if (mTimerID != -1){ killTimer(mTimerID); mTimerID = -1; } accept(); LOG_USER_OPERATION(ConfirmError); }); } void GUIMessageDialog::hideMessage() { mUI->lblMsg->setVisible(false); mUI->lblMsg->setText(""); } void GUIMessageDialog::hideExitButton() { mBtnMain->setVisible(false); disconnect(mBtnMain, nullptr, nullptr, nullptr); } void GUIMessageDialog::setOpacity(double opacity) { this->setWindowOpacity(opacity); } void GUIMessageDialog::startPending() { disconnect(mBtnAppend, nullptr, nullptr, nullptr); connect(mBtnAppend, &QToolButton::clicked, [=](){ EventCenter::Default()->triggerEvent(GUIEvents::RequestContinueScan, nullptr, nullptr); stopPending(); }); mBtnAppend->setText("Next"); mBtnAppend->setVisible(true); mPending = true; } void GUIMessageDialog::stopPending() { disconnect(mBtnAppend, nullptr, nullptr, nullptr); mBtnAppend->setVisible(false); mPending = false; }