diff --git a/src/SelectFormWidget.cpp b/src/SelectFormWidget.cpp index babfb77..4dbce43 100644 --- a/src/SelectFormWidget.cpp +++ b/src/SelectFormWidget.cpp @@ -167,6 +167,19 @@ SelectFormWidget::SelectFormWidget(QWidget *parent) : if (currentRow<0)return; EventCenter::Default()->triggerEvent(GUIEvents::PatientSelected, nullptr,edit_patient->getPatientInformation()->Copy()); }); + connect(EventCenter::Default(),&EventCenter::ResponsePreview,[=](QObject* sender,QObject* data){ + btnSelect->setEnabled(false); + btnDelete->setEnabled(false); + btnEdit->setEnabled(false); + btnAdd->setEnabled(false); + }); + connect(EventCenter::Default(),&EventCenter::ResponseStop,[=](QObject* sender,QObject* data){ + btnSelect->setEnabled(true); + btnDelete->setEnabled(true); + btnEdit->setEnabled(true); + btnAdd->setEnabled(true); + }); + } SelectFormWidget::~SelectFormWidget() diff --git a/src/device/DeviceManager.cpp b/src/device/DeviceManager.cpp index 45867d5..7558831 100644 --- a/src/device/DeviceManager.cpp +++ b/src/device/DeviceManager.cpp @@ -6,6 +6,8 @@ #include "../event/EventCenter.h" #include #include +#include +#include #include #define TRIGGER_EVENT EventCenter::Default()->triggerEvent @@ -37,6 +39,7 @@ std::string getJsonFromPatInf(QObject* obj) void ErrorCallback(const char * msg) { + DeviceManager::Default()->setErrorOccurred(true); printf("Error Callback , message:%s\r\n", msg); QString m(msg); THROW_ERROR(m); @@ -48,10 +51,7 @@ void DeviceManager::initDevice() { InitLib(ErrorCallback); deviceInfTimerID = startTimer(1000); - // global error flag - connect(EventCenter::Default(),&EventCenter::GUIErrorRaise,[=](QObject* sender, QObject* detail){ - this->errorOccured = true; - }); + // empty scan connect(EventCenter::Default(),&EventCenter::RequestEmptyScan,[=](QObject* sender, QObject* detail){ std::string json= getJsonFromPatInf(detail); @@ -87,13 +87,21 @@ void DeviceManager::initDevice() { qDebug()<<"Error thrown!"; lastStatus = -1; previewing = false; + QString s("%1 %2"); + s = s.arg(QDateTime::currentDateTime().toString("yyyy/MM/dd HH:mm:ss"), msg); + TRIGGER_EVENT(GUIEvents::GlobalBannerMessage, nullptr,(QObject*)&msg); return; } lastStatus = -1; previewing = false; + QString s("%1 %2"); + s = s.arg(QDateTime::currentDateTime().toString("yyyy/MM/dd HH:mm:ss"),("Scan Stopped!")); + TRIGGER_EVENT(GUIEvents::GlobalBannerMessage, nullptr,(QObject*)&s); } + TRIGGER_EVENT(GUIEvents::InvokeOperationEnd, nullptr, nullptr); TRIGGER_EVENT(GUIEvents::ResponseStop, nullptr, nullptr); + }); // preview connect(EventCenter::Default(),&EventCenter::RequestPreviewScan,[=](){ @@ -113,6 +121,8 @@ void DeviceManager::initDevice() { // timerID = startTimer(500); TRIGGER_EVENT(GUIEvents::ResponsePreview, nullptr, nullptr); TRIGGER_EVENT(GUIEvents::InvokeOperationEnd, nullptr, nullptr); + QString s("Device Previewing!"); + TRIGGER_EVENT(GUIEvents::GlobalBannerMessage, nullptr, (QObject*)&s); return; } } @@ -154,7 +164,7 @@ void DeviceManager::timerEvent(QTimerEvent *event) { qDebug()<<"GetStatus"; StatusInfo inf = GetStatus(); qDebug() << "Scanning request status, status:" << getStatusString(inf.status); - if (errorOccured) + if (errorOccurred) { qDebug() << "Error occurred, exit progress timer" << inf.progress; goto exitTimer; @@ -172,6 +182,7 @@ void DeviceManager::timerEvent(QTimerEvent *event) { QVariant var(inf.progress); qDebug() << "Normal scan, invoke InvokeOperationProgress:" << inf.progress; TRIGGER_EVENT(GUIEvents::InvokeOperationProgress, nullptr, (QObject*)&var); + return; } else{ //未发生错误并且,之前状态是扫描,代表正常扫描完成 if (lastStatus == SCANNING) @@ -182,14 +193,18 @@ void DeviceManager::timerEvent(QTimerEvent *event) { TRIGGER_EVENT(GUIEvents::InvokeOperationEnd, nullptr, (QObject*)&var); lastStatus = -1; previewing = false; + QString s("%1 %2"); + s = s.arg(QDateTime::currentDateTime().toString("yyyy/MM/dd HH:mm:ss")).arg("Scan finished"); + TRIGGER_EVENT(GUIEvents::GlobalBannerMessage, nullptr,(QObject*)&s); } - return; } exitTimer: + qDebug() << "Scanning progress Timer exit"; killTimer(timerID); timerID=-1; lastStatus = -1; previewing = false; + TRIGGER_EVENT(GUIEvents::GlobalBannerMessage, nullptr,nullptr); return; } else{ QString temp = QString(GetDeviceInfo(MEAN_TEMPERATURE)); diff --git a/src/device/DeviceManager.h b/src/device/DeviceManager.h index 6f82a45..b677c04 100644 --- a/src/device/DeviceManager.h +++ b/src/device/DeviceManager.h @@ -16,6 +16,12 @@ public: return &manager; } void initDevice(); + void setErrorOccurred(bool v){ + errorOccurred = v; + } + bool getErrorOccurred(){ + return errorOccurred; + } protected: void timerEvent(QTimerEvent* event) override ; @@ -27,7 +33,7 @@ private: int lastStatus=-1; bool previewing = false; bool endLoop = false; - bool errorOccured = false; + bool errorOccurred = false; QThread* previewDataCaller; }; diff --git a/src/event/EventCenter.h b/src/event/EventCenter.h index 38018a9..b15635b 100644 --- a/src/event/EventCenter.h +++ b/src/event/EventCenter.h @@ -23,6 +23,7 @@ ADD_EVENT_VALUE(InvokeOperationStart)\ ADD_EVENT_VALUE(InvokeOperationProgress)\ ADD_EVENT_VALUE(InvokeOperationEnd)\ ADD_EVENT_VALUE(PromptDialogOpen)\ +ADD_EVENT_VALUE(GlobalBannerMessage)\ ADD_EVENT_VALUE(GUIErrorRaise) enum GUIEvents{ diff --git a/src/tabformwidget.cpp b/src/tabformwidget.cpp index cd4f1de..f03feab 100644 --- a/src/tabformwidget.cpp +++ b/src/tabformwidget.cpp @@ -48,7 +48,15 @@ TabFormWidget::TabFormWidget(QWidget* parent) : if (!msg) return; QString* s = (QString*)msg; lockIcon->setText(QString("%1%2").arg(*s).arg(tr("°C"))); - }); + }); + connect(EventCenter::Default(), &EventCenter::GlobalBannerMessage, [=](QObject*, QObject* msg) { + if (!msg) { + ui->systemMsgBar->setText(""); + return; + } + QString* s = (QString*)msg; + ui->systemMsgBar->setText(*s); + }); } TabFormWidget::~TabFormWidget()