203 lines
5.6 KiB
C++
203 lines
5.6 KiB
C++
#include "GUIMessageDialog.h"
|
|
#include "ui_GUIMessageDialog.h"
|
|
|
|
#include <QHBoxLayout>
|
|
#include <QToolButton>
|
|
|
|
#include "event/EventCenter.h"
|
|
#include "log/LogManager.h"
|
|
|
|
GUIMessageDialog::GUIMessageDialog(QWidget *parent)
|
|
: QDialog(parent)
|
|
, mUI(new Ui::GUIMessageDialog)
|
|
, mBtnMain(new QToolButton(this))
|
|
, mBtnAppend(new QToolButton(this))
|
|
, mConfirmStopButton(new QToolButton(this))
|
|
, mConfirmCancleButton(new QToolButton(this))
|
|
, mFrameIndex(0)
|
|
, mTimerID(-1)
|
|
, mPending(false)
|
|
, mConfirmMessage()
|
|
{
|
|
mUI->setupUi(this);
|
|
this->setObjectName("MessageDialog");
|
|
this->setWindowFlags (Qt :: FramelessWindowHint | Qt :: Dialog);
|
|
initBaseLayout();
|
|
mUI->btnContainerWidget->setAttribute(Qt::WA_TranslucentBackground);
|
|
mUI->widget->setAttribute(Qt::WA_TranslucentBackground);
|
|
setAttribute(Qt::WA_TranslucentBackground);
|
|
initLoadingFrameString();
|
|
}
|
|
|
|
void GUIMessageDialog::initBaseLayout() {
|
|
mUI->lblMsg->setVisible(false);
|
|
mUI->lblProgressIcon->setVisible(false);
|
|
mBtnMain->setObjectName("dialogBtnStop");
|
|
mBtnMain->setVisible(false);
|
|
mBtnMain->setText(tr("Stop"));
|
|
mBtnAppend->setObjectName("dialogBtnOK");
|
|
mBtnAppend->setVisible(false);
|
|
mBtnAppend->setText(tr("OK"));
|
|
mConfirmStopButton->setObjectName("dialogBtnStop");
|
|
mConfirmStopButton->setVisible(false);
|
|
mConfirmStopButton->setText(tr("Stop"));
|
|
mConfirmCancleButton->setObjectName("dialogBtnOK");
|
|
mConfirmCancleButton->setVisible(false);
|
|
mConfirmCancleButton->setText(tr("Cancel"));
|
|
auto btnContainer = new QWidget(this);
|
|
auto hLayout = new QHBoxLayout(btnContainer);
|
|
hLayout->setMargin(0);
|
|
hLayout->addWidget(mBtnMain);
|
|
hLayout->addWidget(mBtnAppend);
|
|
hLayout->addWidget(mConfirmStopButton);
|
|
hLayout->addWidget(mConfirmCancleButton);
|
|
|
|
mUI->btnContainerWidget->layout()->addWidget(btnContainer);
|
|
}
|
|
|
|
void GUIMessageDialog::initLoadingFrameString(){
|
|
for (int i=1; i <= 6; i++)
|
|
{
|
|
QString str(" ");
|
|
for(int j=0;j<i;j++)
|
|
{
|
|
str[j]='.';
|
|
}
|
|
mFrame.append(str);
|
|
}
|
|
for (int i=1; i<=6;i++)
|
|
{
|
|
QString str("......");
|
|
for(int j=0;j<i;j++)
|
|
{
|
|
str[j]=' ';
|
|
}
|
|
mFrame.append(str);
|
|
}
|
|
}
|
|
|
|
GUIMessageDialog::~GUIMessageDialog()
|
|
{
|
|
delete mUI;
|
|
}
|
|
|
|
void GUIMessageDialog::timerEvent(QTimerEvent *event) {
|
|
if (mFrameIndex > 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, [=](){
|
|
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)
|
|
{
|
|
killTimer(mTimerID);
|
|
mTimerID = -1;
|
|
}
|
|
accept();
|
|
EventCenter::Default()->triggerEvent(GUIEvents::RequestFullScanStop, nullptr, nullptr);
|
|
LOG_USER_OPERATION("Stop Scan");
|
|
});
|
|
|
|
connect(mConfirmCancleButton, &QToolButton::clicked, [=]()
|
|
{
|
|
mConfirmStopButton->setVisible(false);
|
|
mConfirmCancleButton->setVisible(false);
|
|
mBtnMain->setVisible(true);
|
|
QString message = mUI->lblMsg->text().remove(mConfirmMessage);
|
|
mConfirmMessage.clear();
|
|
this->showMessage(message);
|
|
});
|
|
|
|
mTimerID = startTimer(100);
|
|
mBtnMain->setVisible(true);
|
|
|
|
}
|
|
|
|
void GUIMessageDialog::showMessage(const QString& msg) {
|
|
mUI->lblMsg->setVisible(true);
|
|
mUI->lblMsg->setText(mConfirmMessage + msg);
|
|
}
|
|
|
|
void GUIMessageDialog::showExitButton() {
|
|
mBtnMain->setVisible(false);
|
|
mBtnAppend->setVisible(true);
|
|
mConfirmStopButton->setVisible(false);
|
|
mConfirmCancleButton->setVisible(false);
|
|
mBtnAppend->setText(tr("OK"));
|
|
mConfirmMessage.clear();
|
|
disconnect(mBtnAppend, nullptr, nullptr, nullptr);
|
|
connect(mBtnAppend, &QToolButton::clicked, [=](){
|
|
if (mTimerID != -1){
|
|
killTimer(mTimerID);
|
|
mTimerID = -1;
|
|
}
|
|
accept();
|
|
LOG_USER_OPERATION(QString("Confirm %1").arg(mUI->lblMsg->text()));
|
|
});
|
|
}
|
|
|
|
void GUIMessageDialog::hideMessage() {
|
|
mUI->lblMsg->setVisible(false);
|
|
mUI->lblMsg->setText("");
|
|
}
|
|
|
|
void GUIMessageDialog::hideExitButton() {
|
|
mBtnAppend->setVisible(false);
|
|
disconnect(mBtnAppend, 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->setObjectName("dialogBtnOK");
|
|
mBtnAppend->setVisible(true);
|
|
mPending = true;
|
|
}
|
|
|
|
void GUIMessageDialog::stopPending() {
|
|
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();
|
|
}
|
|
;
|