131 lines
3.6 KiB
C++
131 lines
3.6 KiB
C++
|
|
//
|
||
|
|
// Created by Krad on 2022/7/19.
|
||
|
|
//
|
||
|
|
|
||
|
|
#include "DialogManager.h"
|
||
|
|
|
||
|
|
#include <QApplication>
|
||
|
|
#include <QWidget>
|
||
|
|
|
||
|
|
#include "event/EventCenter.h"
|
||
|
|
#include "dialogs/GUIMessageDialog.h"
|
||
|
|
#include "appvals/AppGlobalValues.h"
|
||
|
|
|
||
|
|
void DialogManager::init() {
|
||
|
|
connect(EventCenter::Default(), &EventCenter::DeviceErrorRaise,this,&DialogManager::raiseDeviceError);
|
||
|
|
connect(EventCenter::Default(), &EventCenter::InvokeOperationStart,this,&DialogManager::invokeOperationStart);
|
||
|
|
connect(EventCenter::Default(), &EventCenter::InvokeOperationProgress,this,&DialogManager::invokeOperationProgress);
|
||
|
|
connect(EventCenter::Default(), &EventCenter::InvokeOperationPending,this,&DialogManager::invokeOperationPending);
|
||
|
|
connect(EventCenter::Default(), &EventCenter::InvokeOperationEnd,this,&DialogManager::invokeOperationEnd);
|
||
|
|
}
|
||
|
|
|
||
|
|
QWidget *DialogManager::getTopWidget() {
|
||
|
|
if (!topWidgetStore.isEmpty()) return topWidgetStore.top();
|
||
|
|
return QApplication::activeWindow();
|
||
|
|
}
|
||
|
|
|
||
|
|
void DialogManager::raiseDeviceError(QObject *parent, QObject *msg) {
|
||
|
|
if (!this->getTopWidget()->isVisible()) return;
|
||
|
|
//new dialog
|
||
|
|
auto dialog = new GUIMessageDialog(this->getTopWidget());
|
||
|
|
if (msg)
|
||
|
|
{
|
||
|
|
QString* str = (QString*)msg;
|
||
|
|
dialog->showMessage(*str);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
dialog->showMessage("Something went error!");
|
||
|
|
}
|
||
|
|
dialog->stopLoading();
|
||
|
|
dialog->showExitButton();
|
||
|
|
if (dialog->isHidden())
|
||
|
|
{
|
||
|
|
topWidgetStore.push(dialog);
|
||
|
|
dialog->setWindowModality(Qt::NonModal);
|
||
|
|
dialog->exec();
|
||
|
|
topWidgetStore.pop();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void DialogManager::invokeOperationStart(QObject *parent, QObject *msg) {
|
||
|
|
if (mMessageDialog)
|
||
|
|
{
|
||
|
|
mMessageDialog->hide();
|
||
|
|
delete mMessageDialog;
|
||
|
|
}
|
||
|
|
mMessageDialog = new GUIMessageDialog(this->getTopWidget());
|
||
|
|
if (msg)
|
||
|
|
{
|
||
|
|
QString* str = (QString*)msg;
|
||
|
|
mMessageDialog->showMessage(*str);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
mMessageDialog->hideMessage();
|
||
|
|
}
|
||
|
|
mMessageDialog->hideExitButton();
|
||
|
|
mMessageDialog->startLoading();
|
||
|
|
AppGlobalValues::setInProcessing(true);
|
||
|
|
if (mMessageDialog->isHidden())
|
||
|
|
{
|
||
|
|
mMessageDialog->open();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void DialogManager::invokeOperationProgress(QObject *parent, QObject *msg) {
|
||
|
|
if (!mMessageDialog) mMessageDialog = new GUIMessageDialog(this->getTopWidget());
|
||
|
|
if (msg)
|
||
|
|
{
|
||
|
|
QVariant* var = (QVariant*)msg;
|
||
|
|
if (mMessageDialog->Pending())
|
||
|
|
{
|
||
|
|
mMessageDialog->stopPending();
|
||
|
|
}
|
||
|
|
mMessageDialog->showMessage(var->toString());
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
mMessageDialog->hideMessage();
|
||
|
|
}
|
||
|
|
if (mMessageDialog->isHidden())
|
||
|
|
{
|
||
|
|
mMessageDialog->show();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void DialogManager::invokeOperationPending(QObject *parent, QObject *msg) {
|
||
|
|
if (!mMessageDialog) return;
|
||
|
|
if (!mMessageDialog->Pending())
|
||
|
|
{
|
||
|
|
mMessageDialog->startPending();
|
||
|
|
QVariant* var = (QVariant*)msg;
|
||
|
|
mMessageDialog->showMessage(var->toString());
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void DialogManager::invokeOperationEnd(QObject *parent, QObject *msg) {
|
||
|
|
if (!mMessageDialog)
|
||
|
|
{
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if (!mMessageDialog->isHidden())
|
||
|
|
{
|
||
|
|
if (msg && ((QVariant*)msg)->toBool())
|
||
|
|
{
|
||
|
|
mMessageDialog->stopLoading();
|
||
|
|
mMessageDialog->showMessage("Scan completed!");
|
||
|
|
mMessageDialog->showExitButton();
|
||
|
|
mMessageDialog->setWindowModality(Qt::WindowModal);
|
||
|
|
mMessageDialog->exec();
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
mMessageDialog->accept();
|
||
|
|
}
|
||
|
|
delete mMessageDialog;
|
||
|
|
mMessageDialog = nullptr;
|
||
|
|
AppGlobalValues::setInProcessing(false);
|
||
|
|
}
|
||
|
|
}
|