Files
GUI/src/dialogs/GUIMessageDialog.cpp

202 lines
5.6 KiB
C++
Raw Normal View History

#include "GUIMessageDialog.h"
2022-07-13 10:51:27 +08:00
#include "ui_GUIMessageDialog.h"
#include <QHBoxLayout>
2022-07-13 10:51:27 +08:00
#include <QToolButton>
#include "event/EventCenter.h"
#include "log/UserOperationLog.h"
2022-06-13 11:21:44 +08:00
GUIMessageDialog::GUIMessageDialog(QWidget *parent)
: QDialog(parent)
, mUI(new Ui::GUIMessageDialog)
, mBtnMain(new QToolButton(this))
, mBtnAppend(new QToolButton(this))
2023-09-07 16:02:45 +08:00
, mConfirmStopButton(new QToolButton(this))
, mConfirmCancleButton(new QToolButton(this))
2022-06-13 11:21:44 +08:00
, mFrameIndex(0)
, mTimerID(-1)
, mPending(false)
2023-09-07 16:02:45 +08:00
, mConfirmMessage()
2021-10-13 17:39:37 +08:00
{
2022-06-13 11:21:44 +08:00
mUI->setupUi(this);
this->setObjectName("MessageDialog");
2021-10-13 17:39:37 +08:00
this->setWindowFlags (Qt :: FramelessWindowHint | Qt :: Dialog);
2022-06-13 11:21:44 +08:00
initBaseLayout();
mUI->btnContainerWidget->setAttribute(Qt::WA_TranslucentBackground);
mUI->widget->setAttribute(Qt::WA_TranslucentBackground);
setAttribute(Qt::WA_TranslucentBackground);
2022-06-13 11:21:44 +08:00
initLoadingFrameString();
}
void GUIMessageDialog::initBaseLayout() {
mUI->lblMsg->setVisible(false);
mUI->lblProgressIcon->setVisible(false);
mBtnMain->setObjectName("dialogBtnStop");
2022-06-13 11:21:44 +08:00
mBtnMain->setVisible(false);
2023-09-07 16:02:45 +08:00
mBtnMain->setText(tr("Stop"));
mBtnAppend->setObjectName("dialogBtnOK");
2022-06-13 11:21:44 +08:00
mBtnAppend->setVisible(false);
2023-09-07 16:02:45 +08:00
mBtnAppend->setText(tr("OK"));
mConfirmStopButton->setObjectName("dialogBtnStop");
mConfirmStopButton->setVisible(false);
mConfirmStopButton->setText(tr("Stop"));
mConfirmCancleButton->setObjectName("dialogBtnOK");
mConfirmCancleButton->setVisible(false);
mConfirmCancleButton->setText(tr("Cancle"));
2022-06-13 11:21:44 +08:00
auto btnContainer = new QWidget(this);
auto hLayout = new QHBoxLayout(btnContainer);
hLayout->setMargin(0);
hLayout->addWidget(mBtnMain);
hLayout->addWidget(mBtnAppend);
2023-09-07 16:02:45 +08:00
hLayout->addWidget(mConfirmStopButton);
hLayout->addWidget(mConfirmCancleButton);
2022-06-13 11:21:44 +08:00
mUI->btnContainerWidget->layout()->addWidget(btnContainer);
}
void GUIMessageDialog::initLoadingFrameString(){
for (int i=1; i <= 6; i++)
2021-10-13 17:39:37 +08:00
{
QString str(" ");
for(int j=0;j<i;j++)
{
str[j]='.';
}
2022-06-13 11:21:44 +08:00
mFrame.append(str);
2021-10-13 17:39:37 +08:00
}
for (int i=1; i<=6;i++)
{
QString str("......");
for(int j=0;j<i;j++)
{
str[j]=' ';
}
2022-06-13 11:21:44 +08:00
mFrame.append(str);
2021-10-13 17:39:37 +08:00
}
}
GUIMessageDialog::~GUIMessageDialog()
{
2022-06-13 11:21:44 +08:00
delete mUI;
2021-10-13 17:39:37 +08:00
}
void GUIMessageDialog::timerEvent(QTimerEvent *event) {
2022-06-13 11:21:44 +08:00
if (mFrameIndex > 11) mFrameIndex = mFrameIndex % 12;
mUI->lblProgressIcon->setText(mFrame[mFrameIndex++]);
2021-10-13 17:39:37 +08:00
this->update();
}
void GUIMessageDialog::stopLoading() {
2022-06-13 11:21:44 +08:00
if (mTimerID != -1){
killTimer(mTimerID);
mTimerID=-1;
}
2022-06-13 11:21:44 +08:00
disconnect(mBtnMain, nullptr, nullptr, nullptr);
mUI->lblProgressIcon->setVisible(false);
2021-10-13 17:39:37 +08:00
}
void GUIMessageDialog::startLoading() {
2022-06-13 11:21:44 +08:00
mUI->lblProgressIcon->setVisible(true);
disconnect(mBtnMain, nullptr, nullptr, nullptr);
connect(mBtnMain, &QToolButton::clicked, [=](){
2023-09-07 16:02:45 +08:00
mConfirmStopButton->setVisible(true);
mConfirmCancleButton->setVisible(true);
mBtnMain->setVisible(false);
mConfirmMessage = tr("Confirm stop the scan. \n");
this->showMessage(mUI->lblMsg->text());
});
connect(mConfirmStopButton, &QToolButton::clicked, [=]()
{
mConfirmMessage.clear();
if (mTimerID != -1)
{
2022-06-13 11:21:44 +08:00
killTimer(mTimerID);
mTimerID = -1;
2021-10-27 10:37:12 +08:00
}
accept();
2023-08-21 14:22:41 +08:00
EventCenter::Default()->triggerEvent(GUIEvents::RequestFullScanStop, nullptr, nullptr);
2023-09-05 16:32:38 +08:00
LOG_USER_OPERATION("Stop Scan");
2021-10-27 10:37:12 +08:00
});
2023-09-07 16:02:45 +08:00
connect(mConfirmCancleButton, &QToolButton::clicked, [=]()
{
mConfirmStopButton->setVisible(false);
mConfirmCancleButton->setVisible(false);
mBtnMain->setVisible(true);
mConfirmMessage.clear();
this->showMessage(mUI->lblMsg->text());
});
2022-06-13 11:21:44 +08:00
mTimerID = startTimer(100);
mBtnMain->setVisible(true);
2023-09-07 16:02:45 +08:00
2021-10-13 17:39:37 +08:00
}
2022-06-13 11:21:44 +08:00
void GUIMessageDialog::showMessage(const QString& msg) {
mUI->lblMsg->setVisible(true);
2023-09-07 16:02:45 +08:00
mUI->lblMsg->setText(mConfirmMessage + msg);
2021-10-13 17:39:37 +08:00
}
void GUIMessageDialog::showExitButton() {
mBtnMain->setVisible(false);
mBtnAppend->setVisible(true);
2023-09-07 16:02:45 +08:00
mConfirmStopButton->setVisible(false);
mConfirmCancleButton->setVisible(false);
mBtnAppend->setText(tr("OK"));
2023-09-07 16:02:45 +08:00
mConfirmMessage.clear();
disconnect(mBtnAppend, nullptr, nullptr, nullptr);
connect(mBtnAppend, &QToolButton::clicked, [=](){
2022-06-13 11:21:44 +08:00
if (mTimerID != -1){
killTimer(mTimerID);
mTimerID = -1;
}
2021-10-13 17:39:37 +08:00
accept();
2023-09-07 16:02:45 +08:00
LOG_USER_OPERATION(QString("Confirm %1").arg(mUI->lblMsg->text()));
2021-10-13 17:39:37 +08:00
});
}
void GUIMessageDialog::hideMessage() {
2022-06-13 11:21:44 +08:00
mUI->lblMsg->setVisible(false);
mUI->lblMsg->setText("");
}
void GUIMessageDialog::hideExitButton() {
mBtnAppend->setVisible(false);
disconnect(mBtnAppend, nullptr, nullptr, nullptr);
}
2022-01-11 13:05:05 +08:00
void GUIMessageDialog::setOpacity(double opacity) {
this->setWindowOpacity(opacity);
}
void GUIMessageDialog::startPending() {
2022-06-13 11:21:44 +08:00
disconnect(mBtnAppend, nullptr, nullptr, nullptr);
connect(mBtnAppend, &QToolButton::clicked, [=](){
EventCenter::Default()->triggerEvent(GUIEvents::RequestContinueScan, nullptr, nullptr);
stopPending();
});
2022-06-13 11:21:44 +08:00
mBtnAppend->setText("Next");
mBtnAppend->setObjectName("dialogBtnOK");
2022-06-13 11:21:44 +08:00
mBtnAppend->setVisible(true);
mPending = true;
}
void GUIMessageDialog::stopPending() {
2022-06-13 11:21:44 +08:00
disconnect(mBtnAppend, nullptr, nullptr, nullptr);
mBtnAppend->setVisible(false);
mPending = false;
}
void GUIMessageDialog::moveDialog(const QPoint& aPos)
{
mUI->innerWidget->move(aPos);
}
QPoint GUIMessageDialog::getDialogPos()
{
return mUI->innerWidget->pos();
}
2023-08-21 14:22:41 +08:00
;