From 7540a78d765df67e437b2b12e3a5c2d5713f2866 Mon Sep 17 00:00:00 2001 From: sunwen Date: Wed, 9 Jul 2025 15:52:58 +0800 Subject: [PATCH] fix: Fix drainage do not dislpay complete dialog. --- src/device/DeviceManager.cpp | 22 +++++++++++++++++++--- src/device/DeviceManager.h | 4 +++- src/forms/scan/ScanFormWidget.cpp | 20 ++++++-------------- src/forms/scan/ScanFormWidget.h | 1 - 4 files changed, 28 insertions(+), 19 deletions(-) diff --git a/src/device/DeviceManager.cpp b/src/device/DeviceManager.cpp index 57154a8..6828167 100644 --- a/src/device/DeviceManager.cpp +++ b/src/device/DeviceManager.cpp @@ -147,6 +147,7 @@ void DeviceManager::initDevice() { this->processDrainageResult("{\"code\":-1,\"info\":\"454\"}"); }); + connect(EventCenter::Default(), &EventCenter::RequestAutoDrainage, this, &DeviceManager::startAutoDrainage); mWaterfloodAction = new DmsAsyncAction(USRV_CONTROL, ACT_CTL_WINJECT, this, "responseWaterflood(const QString&)", this); mWaterfloodAction->setTimeoutInterval(WATERPROCESS_TIMEOUT); connect(mWaterfloodAction, &DmsAsyncAction::timeout, [this]() @@ -443,6 +444,11 @@ void DeviceManager::prepareFinishScan(bool isNormalFinish, const QString& aReaso if(!mIsEmptyScan) { TRIGGER_EVENT(StopScanProcess, nullptr, nullptr); + if(mIsAutoDrainage) + { + mIsAutoDrainage = false; + exitWaterProcess(); + } } TRIGGER_EVENT(InvokeOperationEnd, nullptr, var); return; @@ -1183,24 +1189,33 @@ bool DeviceManager::getCEStatus() void DeviceManager::startDrainage() { + mIsAutoDrainage = false; if(!mDrainageControlAction->execute()) { QString msg = tr("Open drain vavle failed."); - emit startDrainageControlResult(false, msg); + emit startDrainageControlResult(false); + THROW_ERROR(msg); } } +void DeviceManager::startAutoDrainage() +{ + mIsAutoDrainage = true; + mDrainageControlAction->execute(); +} + void DeviceManager::processDrainageResult(const QString& aResponse) { QJsonObject jsonObj = toJsonObject(aResponse); if(jsonObj["code"].toInt() == 0 ) { - emit startDrainageControlResult(true); + emit startDrainageControlResult(true, mIsAutoDrainage); return; } QString msg = tr("Open drain vavle failed.") + tr("\nError: ") + jsonObj["info"].toString(); - emit startDrainageControlResult(false, msg); + emit startDrainageControlResult(false, mIsAutoDrainage); + THROW_ERROR(msg); } void DeviceManager::startWaterflood() @@ -1273,6 +1288,7 @@ void DeviceManager::processWaterProcessExitResult(const QString &aResponse) void DeviceManager::processWaterProcessFinishedResult(const QString &aResponse) { + mIsAutoDrainage = false; QJsonObject jsonObj = toJsonObject(aResponse); if(jsonObj["code"].toInt() == 0 ) { diff --git a/src/device/DeviceManager.h b/src/device/DeviceManager.h index cd3016c..1886652 100644 --- a/src/device/DeviceManager.h +++ b/src/device/DeviceManager.h @@ -105,6 +105,7 @@ private: bool startCEScan(); void initEmptyScanMeasurementID(); void startDrainage(); + void startAutoDrainage(); void startWaterflood(); void startWaterClean(); void exitWaterProcess(); @@ -184,7 +185,7 @@ signals: void initializeFinished(); void initializeProgress(const QString& aProgress); void startPreviewScanResult(bool aIsSucessful); - void startDrainageControlResult(bool aIsSucessful, const QString& aMessage = ""); + void startDrainageControlResult(bool aIsSucessful, bool aIsAutoDrainage = false); void startWaterfloodResult(bool aIsSucessful); void startWaterCleanResult(bool aIsSucessful); void exitWaterProcessResult(bool aIsSucessful); @@ -210,6 +211,7 @@ private: bool mIsInitializing = false; bool mIsAutoLocating = false; bool mIsFirstInTransferPorgress = false; + bool mIsAutoDrainage = false; QString mCurrentScanMeasurementID = ""; QString mCurrentEmptyMeasurementID = ""; diff --git a/src/forms/scan/ScanFormWidget.cpp b/src/forms/scan/ScanFormWidget.cpp index 60fa4bd..2cf6c92 100644 --- a/src/forms/scan/ScanFormWidget.cpp +++ b/src/forms/scan/ScanFormWidget.cpp @@ -149,10 +149,9 @@ void ScanFormWidget::initCommandWidget(QHBoxLayout *layout) } }); - connect(EventCenter::Default(), &EventCenter::RequestAutoDrainage, mDrainageButton, &QToolButton::click); connect(mDrainageButton, &QToolButton::clicked, [=](bool aStatus) { - if(!mIsAutoDrainage &&aStatus && DialogManager::Default()->requestAlertMessage(tr("Please confirm if drainage is required ?"), DialogButtonMode::OkAndCancel, tr("Confirm Drainage")) == QDialog::Rejected) + if(aStatus && DialogManager::Default()->requestAlertMessage(tr("Please confirm if drainage is required ?"), DialogButtonMode::OkAndCancel, tr("Confirm Drainage")) == QDialog::Rejected) { mDrainageButton->setChecked(!aStatus); return; @@ -195,17 +194,17 @@ void ScanFormWidget::initCommandWidget(QHBoxLayout *layout) } }); - connect(DeviceManager::Default(), &DeviceManager::startDrainageControlResult, [this](bool aIsSucessful, const QString& aMessage) + connect(DeviceManager::Default(), &DeviceManager::startDrainageControlResult, [this](bool aIsSucessful, bool aIsAutoDrainage) { + if(aIsAutoDrainage) + { + return; + } if(!aIsSucessful) { setWaterProcessModeEnable(true); mDrainageButton->setChecked(false); mDrainageButton->setText(tr("Drain")); - if(!mIsAutoDrainage) - { - EventCenter::Default()->triggerEvent(GUIEvents::GUIErrorRaise, nullptr, (QObject*)&aMessage); - } } else { @@ -284,11 +283,6 @@ void ScanFormWidget::initCommandWidget(QHBoxLayout *layout) } finishWaterPorcess(mWaterProcessMode); - - if(mIsAutoDrainage) - { - return; - } QString message; if(aIsSucessful) { @@ -390,10 +384,8 @@ void ScanFormWidget::initCommandWidget(QHBoxLayout *layout) connect(ScanProcessSequence::getInstance(), &ScanProcessSequence::fullScanDataExport, [this]() { mScanProcessLabel->setText(tr("Data exporting, patient can leave the holder")); - mIsAutoDrainage = false; if(ScanProcessSequence::getInstance()->getScanPositionSize() == 1 && JsonObject::Instance()->getAutoDrainage() == true) { - mIsAutoDrainage = true; mScanProcessLabel->setText(tr("Data exporting, patient can leave the holder, drainage in progress.")); EventCenter::Default()->triggerEvent(GUIEvents::RequestAutoDrainage, nullptr, nullptr); } diff --git a/src/forms/scan/ScanFormWidget.h b/src/forms/scan/ScanFormWidget.h index 60180d4..7be12c4 100644 --- a/src/forms/scan/ScanFormWidget.h +++ b/src/forms/scan/ScanFormWidget.h @@ -53,7 +53,6 @@ private: WaterProcessMode mWaterProcessMode; WaterCleanStep mWaterCleanStep; bool mIsWaterProcessing; - bool mIsAutoDrainage; void initCommandWidget(QHBoxLayout *layout); void initScanContent();