From 000e45abd5f8a251a78bee73159185e8724598da Mon Sep 17 00:00:00 2001 From: Krad Date: Wed, 1 Jun 2022 10:01:25 +0800 Subject: [PATCH] Add Scan complete notify. --- src/device/DeviceManager.cpp | 6 +++-- src/forms/settings/systemsettingform.cpp | 30 +++++++++++++++++------- src/json/jsonobject.cpp | 23 ++++++++++++------ src/json/jsonobject.h | 3 +++ src/windows/mainwindow.cpp | 23 +++++++++++++----- 5 files changed, 62 insertions(+), 23 deletions(-) diff --git a/src/device/DeviceManager.cpp b/src/device/DeviceManager.cpp index fdd53a9..d3a7061 100644 --- a/src/device/DeviceManager.cpp +++ b/src/device/DeviceManager.cpp @@ -112,6 +112,7 @@ void DeviceManager::initDevice() { QString s("%1 %2"); s = s.arg(QDateTime::currentDateTime().toString("yyyy/MM/dd HH:mm:ss"), ("Scan Stopped!")); TRIGGER_EVENT(GUIEvents::GlobalBannerMessage, nullptr, (QObject*)&s); + // preview end TRIGGER_EVENT(GUIEvents::InvokeOperationEnd, nullptr, nullptr); TRIGGER_EVENT(GUIEvents::ResponseStop, nullptr, nullptr); AppGlobalValues::setInProcessing(false); @@ -135,6 +136,7 @@ void DeviceManager::initDevice() { previewing = true; // timerID = startTimer(500); TRIGGER_EVENT(GUIEvents::ResponsePreview, nullptr, nullptr); + // end scan without prompt TRIGGER_EVENT(GUIEvents::InvokeOperationEnd, nullptr, nullptr); QString s("Device Previewing!"); TRIGGER_EVENT(GUIEvents::GlobalBannerMessage, nullptr, (QObject*)&s); @@ -278,9 +280,9 @@ void DeviceManager::exitScanTimer() { void DeviceManager::prepareFinishScan() { qDebug() << "Scan finished"; - QVariant var(true); + QVariant var(JsonObject::Instance()->getCompleteNotify()); qDebug() << "InvokeOperationEnd"; - + // stop normal scan with prompt TRIGGER_EVENT(InvokeOperationEnd, nullptr, (QObject *) &var); AppGlobalValues::setInProcessing(false); // log, no need diff --git a/src/forms/settings/systemsettingform.cpp b/src/forms/settings/systemsettingform.cpp index 4527666..02fafe3 100644 --- a/src/forms/settings/systemsettingform.cpp +++ b/src/forms/settings/systemsettingform.cpp @@ -51,17 +51,28 @@ systemSettingForm::systemSettingForm(QWidget* parent) : ui->btnFlt->setObjectName("BigBtn"); QGridLayout* gridLayout = (QGridLayout*)ui->block10->layout(); - auto btn_needConfirm = new ImageSwitch(this); - auto lbl_needConfirm = new QLabel(this); - lbl_needConfirm->setText("Scan Confirm"); - gridLayout->addWidget(btn_needConfirm, 4, 2, 1, 1); - gridLayout->addWidget(lbl_needConfirm, 4, 0, 1, 1); - btn_needConfirm->setChecked(JsonObject::Instance()->getScanConfirm()); + auto btn_scanConfirm = new ImageSwitch(this); + auto lbl_scanConfirm = new QLabel(this); + lbl_scanConfirm->setText("Scan Confirm"); + gridLayout->addWidget(btn_scanConfirm, 4, 2, 1, 1); + gridLayout->addWidget(lbl_scanConfirm, 4, 0, 1, 1); + btn_scanConfirm->setChecked(JsonObject::Instance()->getScanConfirm()); QFrame* line5 = new QFrame(this); line5->setFrameShape(QFrame::HLine); line5->setFrameShadow(QFrame::Sunken); gridLayout->addWidget(line5,5,0); + auto btn_scanComplete = new ImageSwitch(this); + auto lbl_scanComplete = new QLabel(this); + lbl_scanComplete->setText("Complete Notify"); + gridLayout->addWidget(btn_scanComplete, 6, 2, 1, 1); + gridLayout->addWidget(lbl_scanComplete, 6, 0, 1, 1); + btn_scanComplete->setChecked(JsonObject::Instance()->getCompleteNotify()); + QFrame* line6 = new QFrame(this); + line6->setFrameShape(QFrame::HLine); + line6->setFrameShadow(QFrame::Sunken); + gridLayout->addWidget(line6,7,0); + ////test begin //flag_disksize = true; //m_disksize = 75.0; @@ -100,8 +111,11 @@ systemSettingForm::systemSettingForm(QWidget* parent) : //// } }); - connect(btn_needConfirm, &ImageSwitch::clicked, [=]() { - JsonObject::Instance()->setScanConfirm(btn_needConfirm->getChecked()); + connect(btn_scanConfirm, &ImageSwitch::clicked, [=]() { + JsonObject::Instance()->setScanConfirm(btn_scanConfirm->getChecked()); + }); + connect(btn_scanComplete, &ImageSwitch::clicked, [=]() { + JsonObject::Instance()->setCompleteNotify(btn_scanComplete->getChecked()); }); connect(ui->btn_network, &QToolButton::clicked, [=]() { GetAdminPsw dialog(this); diff --git a/src/json/jsonobject.cpp b/src/json/jsonobject.cpp index 82855a0..0509805 100644 --- a/src/json/jsonobject.cpp +++ b/src/json/jsonobject.cpp @@ -437,13 +437,6 @@ void JsonObject::autoDHCP(bool ena) setJsonString("address", "dhcp", str.toStdString().c_str()); } -bool JsonObject::getScanConfirm() { - return getBool("general","ScanConfirm"); -} -void JsonObject::setScanConfirm(bool val) { - setBool("general","ScanConfirm", val, true); -} - IpAddr JsonObject::getDefaultIpAddr() { IpAddr obj; @@ -530,4 +523,20 @@ const char *JsonObject::getEmptyScanID() { return getJsonString("deviceparam","EmptyScanID"); } +bool JsonObject::getScanConfirm() { + return getBool("general","ScanConfirm"); +} + +void JsonObject::setScanConfirm(bool val) { + setBool("general","ScanConfirm", val, true); +} + +bool JsonObject::getCompleteNotify() { + return getBool("general","CompleteNotify"); +} + +void JsonObject::setCompleteNotify(bool val) { + setBool("general","CompleteNotify", val, true); +} + diff --git a/src/json/jsonobject.h b/src/json/jsonobject.h index b06c99f..18d149b 100644 --- a/src/json/jsonobject.h +++ b/src/json/jsonobject.h @@ -90,6 +90,9 @@ public: bool getScanConfirm(); void setScanConfirm(bool val); + bool getCompleteNotify(); + void setCompleteNotify(bool val); + const char* getEmptyScanID(); void setEmptyScanID(const char* id); diff --git a/src/windows/mainwindow.cpp b/src/windows/mainwindow.cpp index 312b8b9..a49349a 100644 --- a/src/windows/mainwindow.cpp +++ b/src/windows/mainwindow.cpp @@ -143,13 +143,24 @@ MainWindow::MainWindow(QWidget* parent) : msgDialog->showMessage(var->toString()); } }); - connect(EventCenter::Default(), &EventCenter::InvokeOperationEnd, [=]() { + connect(EventCenter::Default(), &EventCenter::InvokeOperationEnd, [=](QObject*, QObject* v) { if (!msgDialog) return; - if (!msgDialog->isHidden())msgDialog->accept(); - delete msgDialog; - msgDialog = nullptr; - AppGlobalValues::setInProcessing(false); - }); + if (!msgDialog->isHidden()){ + if (v && ((QVariant*)v)->toBool()) { + msgDialog->stopLoading(); + msgDialog->showMessage("Scan completed!"); + msgDialog->showExitButton(); + msgDialog->setWindowModality(Qt::WindowModal); + msgDialog->exec(); + } + else{ + msgDialog->accept(); + } + delete msgDialog; + msgDialog = nullptr; + AppGlobalValues::setInProcessing(false); + } + }); connect(EventCenter::Default(), &EventCenter::RequestLogin, [=](QObject*, QObject* msg) { this->requestLogin(); });