Add UsctStateManager and add DmsState in GUI.

This commit is contained in:
sunwen
2024-05-13 18:08:18 +08:00
parent 2c2b20ee55
commit e228ec73b4
6 changed files with 131 additions and 12 deletions

View File

@@ -98,8 +98,9 @@ WarningMessageWidget::WarningMessageWidget(QWidget *parent):QWidget(parent)
clearBtn->setObjectName("WarningPanelBtn");
hl->addWidget(clearBtn);
connect(clearBtn, &QToolButton::clicked, this, &WarningMessageWidget::clearWarning);
connect(EventCenter::Default(),&EventCenter::WarningMessageRaise,this,&WarningMessageWidget::addWarningProxySlot,Qt::QueuedConnection);
connect(EventCenter::Default(),&EventCenter::ErrorStateUnactive,this,&WarningMessageWidget::unactiveErrorProxySlot,Qt::QueuedConnection);
connect(EventCenter::Default(),&EventCenter::WarningMessageRaise,this,&WarningMessageWidget::addWarningProxySlot);
connect(EventCenter::Default(),&EventCenter::ErrorStateUnactive,this,&WarningMessageWidget::unactiveErrorProxySlot);
connect(EventCenter::Default(),&EventCenter::ErrorStateActive,this,&WarningMessageWidget::activeErrorProxySlot);
connect(EventCenter::Default(), &EventCenter::ReloadLanguage, this, &WarningMessageWidget::reloadLanguage);
@@ -137,7 +138,6 @@ void WarningMessageWidget::addWarningProxySlot(QObject*, QObject* aData)
}
QString str = *((QString*)aData);
delete (QString*)aData;
activeError(601, "TestError");
addWarning(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"), str);
}
@@ -149,18 +149,19 @@ void WarningMessageWidget::activeErrorProxySlot(QObject*, QObject* aData)
return;
}
//TODO: real active error logic
QString str = "Test Error";
activeError(601, str);
QPair<int, QString> state = *(QPair<int, QString>*)aData;
activeError(state.first, state.second);
}
void WarningMessageWidget::unactiveErrorProxySlot(QObject*, QObject* aData)
{
//TODO: real unactive error logic
// if (!aData){
// qDebug()<<"unactiveErrorProxy with null aData";
// return;
// }
unactiveError(601);
if (!aData){
qDebug()<<"unactiveErrorProxy with null aData";
return;
};
int stateCode = *(int*)aData;
unactiveError(stateCode);
}
void WarningMessageWidget::reloadLanguage()
@@ -233,4 +234,3 @@ void WarningMessageWidget::showEvent(QShowEvent* aEvent)
showAnimation->start();
QWidget::showEvent(aEvent);
}

View File

@@ -0,0 +1,70 @@
#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)
{
bool stateTemp = mState[aStateCode];
mState[aStateCode] = aState;
if(stateTemp != aState)
{
bool UsctState = getUsctState();
EventCenter::Default()->triggerEvent(UsctStateUpdated, nullptr, (QObject*)&UsctState);
}
mState[aStateCode] = aState;
if(aState)
{
int msg = aStateCode;
EventCenter::Default()->triggerEvent(ErrorStateUnactive, nullptr, (QObject*)&msg);
}
{
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";
default: return "Unknow Error";
}
}

View File

@@ -0,0 +1,42 @@
#ifndef USCTSTATEMANAGER_H
#define USCTSTATEMANAGER_H
#include <QObject>
#include <QMap>
enum UsctState
{
DmsState = 0, //Dms是否有致命错误false代表存在致命错误
DmsConnectionState,
ReconState, //Recon是否有致命错误false代表存在致命错误
ReconMppsState,
ReconPacsState,
ReconConnectionState,
ReconEmptyScanState,
ReconDBState
};
class UsctStateManager : public QObject
{
Q_OBJECT
public:
static UsctStateManager* getInstance();
bool getUsctState();
void setState(int aStateCode, bool aState);
private:
QString getStateErrorMessage(int aStateCode);
private:
UsctStateManager(QObject* aParent = nullptr);
UsctStateManager(const UsctStateManager&);
UsctStateManager& operator=(const UsctStateManager&);
private:
QMap<int, bool> mState;
};
#endif // USCTSTATEMANAGER_H

View File

@@ -44,6 +44,7 @@ ADD_EVENT_VALUE(StartScanProcess)\
ADD_EVENT_VALUE(CurrentUserNameChanged)\
ADD_EVENT_VALUE(EmptyScanFinished)\
ADD_EVENT_VALUE(UserVerificationSuccess)\
ADD_EVENT_VALUE(UsctStateUpdated)\

View File

@@ -61,10 +61,17 @@ TopBarWidget::TopBarWidget(QWidget *parent, Qt::WindowFlags f) : QWidget(parent,
});
auto readyIcon = new QToolButton(this);
readyIcon->setIcon(QIcon(":/icons/dicom/echo_suc.png"));
readyIcon->setObjectName("ready");
connect(readyIcon, &QToolButton::clicked,[=](){
emit warnBtnClicked();
});
connect(EventCenter::Default(), &EventCenter::UsctStateUpdated,[readyIcon](QObject*, QObject* msg)
{
bool state = *(bool*)msg;
QIcon icon(state ? ":/icons/dicom/echo_suc.png" :":/icons/dicom/echo_fail.png" );
readyIcon->setIcon(icon);
});
auto lockIcon = new QLabel(this);
lockIcon->setText("");

View File

@@ -450,7 +450,6 @@ QToolButton#ready {
min-height: 28px;
max-height: 28px;
background: transparent;
qproperty-icon:url(":/icons/dicom/echo_suc.png");
qproperty-toolButtonStyle:ToolButtonTextBesideIcon;
qproperty-iconSize:26px 26px;
}