Change UI logic, add message prompt, add scan logic and preivewing rendering logic.

This commit is contained in:
Krad
2021-10-14 14:39:52 +08:00
parent fca70376cc
commit 533c15d57c
5 changed files with 133 additions and 44 deletions

View File

@@ -6,50 +6,54 @@
#include "../event/EventCenter.h"
#include <QVariant>
#define triggerEvent EventCenter::Default()->triggerEvent
#define TRIGGER_EVENT EventCenter::Default()->triggerEvent
const char * getJsonFromPatInf(QObject* obj)
#define THROW_ERROR(errormsg)\
TRIGGER_EVENT(GUIEvents::GUIErrorRaise, nullptr, (QObject*)&errormsg);
std::string getJsonFromPatInf(QObject* obj)
{
return nullptr;
return ((QString*)obj)->toStdString();
}
void DeviceManager::initDevice() {
// empty scan
connect(EventCenter::Default(),&EventCenter::RequestEmptyScan,[=](){
const char * json = "";
processScan(json);
connect(EventCenter::Default(),&EventCenter::RequestEmptyScan,[=](QObject* sender, QObject* detail){
std::string json= getJsonFromPatInf(detail);
printf("%s\r\n",json.c_str());
processScan(json.c_str());
});
// Patient scan
connect(EventCenter::Default(),&EventCenter::RequestPatientScan,[=](QObject* sender, QObject* detail){
const char * json = getJsonFromPatInf(detail);
if (json)
std::string json= getJsonFromPatInf(detail);
printf("%s\r\n",json.c_str());
if (!json.empty())
{
processScan(json);
processScan(json.c_str());
}
});
// stop
connect(EventCenter::Default(),&EventCenter::RequestStop,[=](){
triggerEvent(GUIEvents::InvokeOperationStart, nullptr, nullptr);
connect(EventCenter::Default(),&EventCenter::RequestStop,[=]() {
TRIGGER_EVENT(GUIEvents::InvokeOperationStart, nullptr, nullptr);
StatusInfo inf = GetStatus();
if (inf.status==SCANING)
{
if (inf.status == SCANING) {
//ScanControl fail
if(ScanControl(STOP))
{
triggerEvent(GUIEvents::GUIErrorRaise, nullptr, nullptr);
if (ScanControl(STOP)) {
QString msg("Stop operation fail!");
THROW_ERROR(msg);
lastStatus = -1;
previewing = false;
return;
}
lastStatus = -1;
previewing = false;
triggerEvent(GUIEvents::InvokeOperationEnd, nullptr, nullptr);
triggerEvent(GUIEvents::ResponseStop, nullptr, nullptr);
}
TRIGGER_EVENT(GUIEvents::InvokeOperationEnd, nullptr, nullptr);
TRIGGER_EVENT(GUIEvents::ResponseStop, nullptr, nullptr);
});
// preview
connect(EventCenter::Default(),&EventCenter::RequestPreviewScan,[=](){
triggerEvent(GUIEvents::InvokeOperationStart, nullptr, nullptr);
TRIGGER_EVENT(GUIEvents::InvokeOperationStart, nullptr, nullptr);
StatusInfo inf = GetStatus();
if (inf.status==READY)
{
@@ -59,12 +63,13 @@ void DeviceManager::initDevice() {
lastStatus = SCANING;
previewing = true;
timerID = startTimer(500);
triggerEvent(GUIEvents::ResponsePreview, nullptr, nullptr);
triggerEvent(GUIEvents::InvokeOperationEnd, nullptr, nullptr);
TRIGGER_EVENT(GUIEvents::ResponsePreview, nullptr, nullptr);
TRIGGER_EVENT(GUIEvents::InvokeOperationEnd, nullptr, nullptr);
return;
}
}
triggerEvent(GUIEvents::GUIErrorRaise, nullptr, nullptr);
QString msg(inf.status!=READY?"Can't start preview,Device is not ready!":"Start preview operation fail!");
THROW_ERROR(msg);
});
}
@@ -77,20 +82,21 @@ void DeviceManager::timerEvent(QTimerEvent *event) {
if(!previewing)
{
QVariant var(inf.progress);
triggerEvent(GUIEvents::InvokeOperationProgress, nullptr, (QObject*)&var);
TRIGGER_EVENT(GUIEvents::InvokeOperationProgress, nullptr, (QObject*)&var);
}
//preview scan
else{
const char * data = GetPreviewData();
QByteArray* bytes = new QByteArray(data);
triggerEvent(GUIEvents::ResponsePreviewData, nullptr, (QObject*)bytes);
QByteArray bytes =QByteArray::fromRawData(data,40000);
TRIGGER_EVENT(GUIEvents::ResponsePreviewData, nullptr, (QObject*)(&bytes));
delete [] data;
}
} else{
if (lastStatus == SCANING && !errorOccured)
{
QVariant var(true);
triggerEvent(GUIEvents::InvokeOperationEnd, nullptr, (QObject*)&var);
TRIGGER_EVENT(GUIEvents::InvokeOperationEnd, nullptr, (QObject*)&var);
lastStatus = -1;
previewing = false;
}
@@ -106,10 +112,12 @@ void DeviceManager::timerEvent(QTimerEvent *event) {
}
void DeviceManager::processScan(const char *json) {
triggerEvent(GUIEvents::InvokeOperationStart, nullptr, nullptr);
static QString msg = "Start scan...";
TRIGGER_EVENT(GUIEvents::InvokeOperationStart, nullptr, (QObject*)&msg);
int ret = SetScanInf(json);
if (ret){
triggerEvent(GUIEvents::GUIErrorRaise, nullptr, nullptr);
QString errmsg("Transfer patient information fail!");
THROW_ERROR(errmsg);
return;
}
StatusInfo inf = GetStatus();
@@ -122,5 +130,6 @@ void DeviceManager::processScan(const char *json) {
return;
}
}
triggerEvent(GUIEvents::GUIErrorRaise, nullptr, nullptr);
QString errmsg("Start scan operation fail!");
THROW_ERROR(errmsg);
}