Files
GUI/src/device/UsctStateManager.cpp

114 lines
3.2 KiB
C++
Raw Normal View History

#include "UsctStateManager.h"
#include "event/EventCenter.h"
UsctStateManager* UsctStateManager::getInstance()
{
static UsctStateManager instance;
return &instance;
}
UsctStateManager::UsctStateManager(QObject* aParent)
: QObject (aParent)
, mState()
{
mState.insert(DmsState, true);
mState.insert(DmsConnectionState, true);
mState.insert(ReconState, true);
mState.insert(ReconMppsState, true);
mState.insert(ReconPacsState, true);
mState.insert(ReconConnectionState, true);
mState.insert(ReconEmptyScanState, true);
mState.insert(ReconDBState, true);
}
void UsctStateManager::setState(int aStateCode, bool aState)
{
2024-05-29 14:29:58 +08:00
if(aState == mState[aStateCode])
{
2024-05-29 14:29:58 +08:00
return;
}
mState[aStateCode] = aState;
2024-05-29 14:29:58 +08:00
bool UsctState = getUsctState();
EventCenter::Default()->triggerEvent(UsctStateUpdated, nullptr, (QObject*)&UsctState);
if(aState)
{
int msg = aStateCode;
EventCenter::Default()->triggerEvent(ErrorStateUnactive, nullptr, (QObject*)&msg);
}
2024-05-29 14:29:58 +08:00
else
{
QPair<int, QString> msg(QPair<int, QString>(aStateCode, getStateErrorMessage(aStateCode)));
EventCenter::Default()->triggerEvent(ErrorStateActive, nullptr, (QObject*)&msg);
}
}
bool UsctStateManager::getUsctState()
{
bool result = true;
QMap<int, bool>::const_iterator it;
for (it = mState.constBegin(); it != mState.constEnd(); ++it)
{
result = result & it.value();
}
return result;
}
QString UsctStateManager::getStateErrorMessage(int aStateCode)
{
switch (aStateCode)
{
case DmsState : return "Dms Error";
case DmsConnectionState : return "Dms Connection Error";
case ReconState : return "Recon Fatal Error";
case ReconMppsState : return "Recon Mpps Connection Error";
case ReconPacsState : return "Recon Pacs Connection Error";
case ReconEmptyScanState : return "Recon Empty Scan Data Error";
case ReconDBState : return "Recon Database Connection Error";
2024-05-29 14:29:58 +08:00
case ReconConnectionState : return "Recon Connection Error";
default: return "Unknow Error";
}
}
2024-05-29 14:29:58 +08:00
void UsctStateManager::updateReconState(bool aIsConnected,int aState)
{
setState(ReconConnectionState, aIsConnected);
for (int i = 0; i < 5; ++i)
{
int mask = 1 << i;
bool result = true;
if (aState & mask)
{
result = false;
}
switch(i)
{
case ReconState: setState(ReconState, result); break;
case ReconDBState: setState(ReconDBState, result); break;
case ReconPacsState: setState(ReconPacsState, result); break;
case ReconMppsState: setState(ReconMppsState, result); break;
case ReconEmptyScanState: setState(ReconEmptyScanState, result);
if(!mIsEmptyScanUpdateing && !result)
{
mIsEmptyScanUpdateing = true;
EventCenter::Default()->triggerEvent(EmptyScanDataCorrupted, nullptr, nullptr);
}
break;
2024-05-29 14:29:58 +08:00
default: break;
}
}
}
bool UsctStateManager::getState(UsctState aStateCode)
{
return mState[aStateCode];
}
void UsctStateManager::setEmptyScanUpdateFlag(bool aIsUpdating)
{
mIsEmptyScanUpdateing = aIsUpdating;
}
2024-05-29 14:29:58 +08:00