feat: Add recon state in GUI.

This commit is contained in:
sunwen
2024-05-29 14:29:58 +08:00
parent a0feff11e2
commit 23a747bde4
6 changed files with 89 additions and 23 deletions

View File

@@ -119,8 +119,8 @@ void DeviceManager::initDevice()
controlDrainage(*(QString*)detail);
});
//AutoLocate
connect(EventCenter::Default(), &EventCenter::StartScanProcess, this, &DeviceManager::startAutoLocate);
connect(EventCenter::Default(), &EventCenter::StopScanProcess, this, &DeviceManager::stopAutoLocate);
connect(EventCenter::Default(), &EventCenter::StartScanProcess, this, &DeviceManager::startScanProcess);
connect(EventCenter::Default(), &EventCenter::StopScanProcess, this, &DeviceManager::stopScanProcess);
//Sync action
mGetDeviceStatusAction = new DmsSyncAction(USRV_SCAN, ACT_SCAN_STATUS, this, "responseGetDeviceStatus(const QString&)", this);
@@ -181,7 +181,9 @@ void DeviceManager::initDevice()
QTimer* reconConnectionTimer = new QTimer(this);
reconConnectionTimer->start(CHECK_RECON_CONNECTION_TIME);
ReconManager::getInstance()->moveToThread(mReconHttpThread);
connect(reconConnectionTimer, &QTimer::timeout, ReconManager::getInstance(), &ReconManager::checkReconConnection);
connect(ReconManager::getInstance(), &ReconManager::reconStateResponsed, UsctStateManager::getInstance(), &UsctStateManager::updateReconState);
connect(this, &DeviceManager::checkReconConnection, ReconManager::getInstance(), &ReconManager::checkReconConnection);
connect(reconConnectionTimer, &QTimer::timeout, this, &DeviceManager::prepareCheckReconConnection);
connect(this, &DeviceManager::createEmptyScanToRecon, ReconManager::getInstance(), &ReconManager::createEmptyScan);
connect(this, &DeviceManager::createScanToRecon, ReconManager::getInstance(), &ReconManager::createScan);
connect(ReconManager::getInstance(), &ReconManager::createScanResponsed, this, &DeviceManager::processReconCreateScan);
@@ -306,7 +308,6 @@ void DeviceManager::startScan(const QString& json, bool empty)
{
QString msg = "Start scan...";
TRIGGER_EVENT(GUIEvents::InvokeOperationStart, nullptr, (QObject*)&msg);
AppGlobalValues::setInProcessing(true);
mIsScanning = true;
mIsEmptyScan = empty;
QJsonObject patientInfo = QJsonDocument::fromJson(json.toUtf8()).object()["Patient Info"].toObject();
@@ -376,7 +377,6 @@ void DeviceManager::prepareFinishScan(bool isNormalFinish, const QString& aReaso
killTimer(mScanProgressTimer);
mScanProgressTimer = -1;
}
AppGlobalValues::setInProcessing(false);
mIsScanning = false;
QString message = aReason;
QObject* var = message.isEmpty() ? nullptr : (QObject*)&message;
@@ -1257,6 +1257,27 @@ void DeviceManager::updateReconConnectionState(bool aIsConnected)
EventCenter::Default()->triggerEvent(ReconConnectionUpdated, nullptr, (QObject*)&aIsConnected);
}
void DeviceManager::startScanProcess()
{
if( !UsctStateManager::getInstance()->getState(ReconConnectionState) ||
!UsctStateManager::getInstance()->getState(ReconState) ||
!UsctStateManager::getInstance()->getState(ReconDBState))
{
TRIGGER_EVENT(StopScanProcess, nullptr, nullptr);
QString errorMessage = tr("Recon error, can't start scan process");
THROW_ERROR(errorMessage);
return;
}
AppGlobalValues::setInProcessing(true);
startAutoLocate();
}
void DeviceManager::stopScanProcess()
{
AppGlobalValues::setInProcessing(false);
stopAutoLocate();
}
bool DeviceManager::startAutoLocate()
{
if(ScanProcessSequence::getInstance()->getScanPositionSize() == 0)
@@ -1275,10 +1296,6 @@ bool DeviceManager::startAutoLocate()
mGetAutoLocatePositionTimer = startTimer(1000);
return true;
}
else
{
stopAutoLocate();
}
}
TRIGGER_EVENT(StopScanProcess, nullptr, nullptr);
QString errorMessage = tr("Start auto locate failed");
@@ -1361,3 +1378,12 @@ void DeviceManager::checkDataQuality()
TRIGGER_EVENT(StopScanProcess, nullptr, nullptr);
return;
}
void DeviceManager::prepareCheckReconConnection()
{
if(AppGlobalValues::InProcessing().toBool())
{
return;
}
emit checkReconConnection();
}