diff --git a/src/device/DeviceManager.cpp b/src/device/DeviceManager.cpp index 434d391..57154a8 100644 --- a/src/device/DeviceManager.cpp +++ b/src/device/DeviceManager.cpp @@ -115,7 +115,6 @@ void DeviceManager::initDevice() connect(EventCenter::Default(), &EventCenter::RequestShutdown, this, &DeviceManager::shutdownDms); //Drainage connect(EventCenter::Default(), &EventCenter::RequestDrainage, this, &DeviceManager::startDrainage); - connect(EventCenter::Default(), &EventCenter::RequestAutoDrainage, this, &DeviceManager::startAutoDrainage); connect(EventCenter::Default(), &EventCenter::RequestWaterflood, this, &DeviceManager::startWaterflood); connect(EventCenter::Default(), &EventCenter::RequestWaterClean, this, &DeviceManager::startWaterClean); connect(EventCenter::Default(), &EventCenter::RequestWaterModeExit, this, &DeviceManager::exitWaterProcess); @@ -1184,31 +1183,15 @@ bool DeviceManager::getCEStatus() void DeviceManager::startDrainage() { - mIsAutoDrainage = false; if(!mDrainageControlAction->execute()) { - emit startDrainageControlResult(false); QString msg = tr("Open drain vavle failed."); - THROW_ERROR(msg); + emit startDrainageControlResult(false, msg); } } -void DeviceManager::startAutoDrainage() -{ - if(!JsonObject::Instance()->getAutoDrainage()) - { - return; - } - mIsAutoDrainage = true; - mDrainageControlAction->execute(); -} - void DeviceManager::processDrainageResult(const QString& aResponse) { - if(mIsAutoDrainage) - { - return; - } QJsonObject jsonObj = toJsonObject(aResponse); if(jsonObj["code"].toInt() == 0 ) { @@ -1216,9 +1199,8 @@ void DeviceManager::processDrainageResult(const QString& aResponse) return; } - emit startDrainageControlResult(false); QString msg = tr("Open drain vavle failed.") + tr("\nError: ") + jsonObj["info"].toString(); - THROW_ERROR(msg); + emit startDrainageControlResult(false, msg); } void DeviceManager::startWaterflood() diff --git a/src/device/DeviceManager.h b/src/device/DeviceManager.h index 1b1ed61..cd3016c 100644 --- a/src/device/DeviceManager.h +++ b/src/device/DeviceManager.h @@ -105,7 +105,6 @@ private: bool startCEScan(); void initEmptyScanMeasurementID(); void startDrainage(); - void startAutoDrainage(); void startWaterflood(); void startWaterClean(); void exitWaterProcess(); @@ -185,7 +184,7 @@ signals: void initializeFinished(); void initializeProgress(const QString& aProgress); void startPreviewScanResult(bool aIsSucessful); - void startDrainageControlResult(bool aIsSucessful); + void startDrainageControlResult(bool aIsSucessful, const QString& aMessage = ""); void startWaterfloodResult(bool aIsSucessful); void startWaterCleanResult(bool aIsSucessful); void exitWaterProcessResult(bool aIsSucessful); @@ -211,7 +210,6 @@ 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 5f73b27..60fa4bd 100644 --- a/src/forms/scan/ScanFormWidget.cpp +++ b/src/forms/scan/ScanFormWidget.cpp @@ -149,9 +149,10 @@ void ScanFormWidget::initCommandWidget(QHBoxLayout *layout) } }); + connect(EventCenter::Default(), &EventCenter::RequestAutoDrainage, mDrainageButton, &QToolButton::click); connect(mDrainageButton, &QToolButton::clicked, [=](bool aStatus) { - if(aStatus && DialogManager::Default()->requestAlertMessage(tr("Please confirm if drainage is required ?"), DialogButtonMode::OkAndCancel, tr("Confirm Drainage")) == QDialog::Rejected) + if(!mIsAutoDrainage &&aStatus && DialogManager::Default()->requestAlertMessage(tr("Please confirm if drainage is required ?"), DialogButtonMode::OkAndCancel, tr("Confirm Drainage")) == QDialog::Rejected) { mDrainageButton->setChecked(!aStatus); return; @@ -194,13 +195,17 @@ void ScanFormWidget::initCommandWidget(QHBoxLayout *layout) } }); - connect(DeviceManager::Default(), &DeviceManager::startDrainageControlResult, [this](bool aIsSucessful) + connect(DeviceManager::Default(), &DeviceManager::startDrainageControlResult, [this](bool aIsSucessful, const QString& aMessage) { if(!aIsSucessful) { setWaterProcessModeEnable(true); mDrainageButton->setChecked(false); mDrainageButton->setText(tr("Drain")); + if(!mIsAutoDrainage) + { + EventCenter::Default()->triggerEvent(GUIEvents::GUIErrorRaise, nullptr, (QObject*)&aMessage); + } } else { @@ -277,7 +282,13 @@ void ScanFormWidget::initCommandWidget(QHBoxLayout *layout) { return; } + finishWaterPorcess(mWaterProcessMode); + + if(mIsAutoDrainage) + { + return; + } QString message; if(aIsSucessful) { @@ -379,8 +390,10 @@ void ScanFormWidget::initCommandWidget(QHBoxLayout *layout) connect(ScanProcessSequence::getInstance(), &ScanProcessSequence::fullScanDataExport, [this]() { mScanProcessLabel->setText(tr("Data exporting, patient can leave the holder")); - if(ScanProcessSequence::getInstance()->getScanPositionSize() == 1) + 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 7be12c4..60180d4 100644 --- a/src/forms/scan/ScanFormWidget.h +++ b/src/forms/scan/ScanFormWidget.h @@ -53,6 +53,7 @@ private: WaterProcessMode mWaterProcessMode; WaterCleanStep mWaterCleanStep; bool mIsWaterProcessing; + bool mIsAutoDrainage; void initCommandWidget(QHBoxLayout *layout); void initScanContent();