Refactor ScanFormWidget
This commit is contained in:
@@ -5,11 +5,9 @@
|
|||||||
#include "ScanFormWidget.h"
|
#include "ScanFormWidget.h"
|
||||||
#include "ui_tabformwidget.h"
|
#include "ui_tabformwidget.h"
|
||||||
|
|
||||||
#include <QHBoxLayout>
|
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
#include <QButtonGroup>
|
#include <QButtonGroup>
|
||||||
#include <QImage>
|
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <qdebug.h>
|
#include <qdebug.h>
|
||||||
@@ -32,7 +30,7 @@ namespace{
|
|||||||
const float HALF_ROI_WIDTH = 100.0f;
|
const float HALF_ROI_WIDTH = 100.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
ScanFormWidget::ScanFormWidget(QWidget* parent)
|
ScanFormWidget::ScanFormWidget(QWidget* parent)
|
||||||
: TabFormWidget(parent)
|
: TabFormWidget(parent)
|
||||||
, mPatInf(new PatientInformationForm(this))
|
, mPatInf(new PatientInformationForm(this))
|
||||||
, mLblProtocol(new QLabel(this))
|
, mLblProtocol(new QLabel(this))
|
||||||
@@ -60,7 +58,7 @@ ScanFormWidget::ScanFormWidget(QWidget* parent)
|
|||||||
"QLabel#lbl_e{font-size:20px;}"
|
"QLabel#lbl_e{font-size:20px;}"
|
||||||
"";
|
"";
|
||||||
this->setStyleSheet(this->styleSheet().append(style));
|
this->setStyleSheet(this->styleSheet().append(style));
|
||||||
QHBoxLayout* layout = new QHBoxLayout();
|
auto layout = new QHBoxLayout();
|
||||||
ui->commandWidget->setLayout(layout);
|
ui->commandWidget->setLayout(layout);
|
||||||
|
|
||||||
initProtocolUI(layout);
|
initProtocolUI(layout);
|
||||||
@@ -68,30 +66,7 @@ ScanFormWidget::ScanFormWidget(QWidget* parent)
|
|||||||
addVerticalLine(layout);
|
addVerticalLine(layout);
|
||||||
initScanControlBar(layout);
|
initScanControlBar(layout);
|
||||||
initScanContent();
|
initScanContent();
|
||||||
//Events---------------------------------------------------------------
|
initEvents();
|
||||||
connect(EventCenter::Default(), &EventCenter::PatientSelected, [=](QObject* sender, QObject* data) {
|
|
||||||
if (mUnInited)
|
|
||||||
{
|
|
||||||
mBtnScan->setEnabled(true);
|
|
||||||
mBtnRefresh->setEnabled(true);
|
|
||||||
mBtnPreview->setEnabled(true);
|
|
||||||
mBtnStop->setEnabled(true);
|
|
||||||
mUnInited = false;
|
|
||||||
}
|
|
||||||
mPatInf->setPatientInformation((PatientInformation*)data);
|
|
||||||
});
|
|
||||||
connect(EventCenter::Default(), &EventCenter::ResponseStop, [=](QObject* sender, QObject* data) {
|
|
||||||
setPreviewing(false);
|
|
||||||
});
|
|
||||||
connect(EventCenter::Default(), &EventCenter::ResponsePreview, this,&ScanFormWidget::renderLoading);
|
|
||||||
connect(EventCenter::Default(), &EventCenter::ResponsePreviewData, this,&ScanFormWidget::renderPreviewData);
|
|
||||||
connect(EventCenter::Default(), &EventCenter::PatientSelected, [=](QObject* sender, QObject* data) {
|
|
||||||
mPatInf->setPatientInformation((PatientInformation*)data);
|
|
||||||
});
|
|
||||||
connect(EventCenter::Default(), &EventCenter::ReloadLanguage, this, &ScanFormWidget::reloadLanguage);
|
|
||||||
connect(EventCenter::Default(), &EventCenter::DeviceErrorRaise, [=](QObject* parent, QObject* msg){
|
|
||||||
setPreviewing(false);
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,12 +76,12 @@ void ScanFormWidget::initProtocolUI(QHBoxLayout *layout) {
|
|||||||
mLblProtocol->setObjectName("lbl_protocol");
|
mLblProtocol->setObjectName("lbl_protocol");
|
||||||
layout->addWidget(mLblProtocol);
|
layout->addWidget(mLblProtocol);
|
||||||
addVerticalLine(layout);
|
addVerticalLine(layout);
|
||||||
INIT_TOOL_BTN(Left, ":/icons/left.png");
|
INIT_TOOL_BTN(Left, ":/icons/left.png")
|
||||||
INIT_TOOL_BTN(Right, ":/icons/right.png");
|
INIT_TOOL_BTN(Right, ":/icons/right.png")
|
||||||
mBtnLeft->setText(tr("LEFT"));
|
mBtnLeft->setText(tr("LEFT"));
|
||||||
mBtnRight->setText(tr("RIGHT"));
|
mBtnRight->setText(tr("RIGHT"));
|
||||||
|
|
||||||
QButtonGroup* group = new QButtonGroup(this);
|
auto group = new QButtonGroup(this);
|
||||||
mBtnLeft->setCheckable(true);
|
mBtnLeft->setCheckable(true);
|
||||||
mBtnLeft->setChecked(true);
|
mBtnLeft->setChecked(true);
|
||||||
mBtnRight->setCheckable(true);
|
mBtnRight->setCheckable(true);
|
||||||
@@ -116,22 +91,22 @@ void ScanFormWidget::initProtocolUI(QHBoxLayout *layout) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScanFormWidget::initScanContent() {
|
void ScanFormWidget::initScanContent() {
|
||||||
QHBoxLayout* contentLayout = new QHBoxLayout();
|
auto contentLayout = new QHBoxLayout();
|
||||||
ui->contentWidget->setLayout(contentLayout);
|
ui->contentWidget->setLayout(contentLayout);
|
||||||
|
|
||||||
contentLayout->addWidget(mPatInf);
|
contentLayout->addWidget(mPatInf);
|
||||||
QWidget* param_widget = new QWidget(this);
|
auto param_widget = new QWidget(this);
|
||||||
QWidget* broadcast_widget = new QWidget(this);
|
auto broadcast_widget = new QWidget(this);
|
||||||
broadcast_widget->setObjectName("broadcast_widget");
|
broadcast_widget->setObjectName("broadcast_widget");
|
||||||
mViewer->setObjectName("viewer");
|
mViewer->setObjectName("viewer");
|
||||||
mViewer->setFixedSize(800, 800);
|
mViewer->setFixedSize(800, 800);
|
||||||
mViewer->setText("");
|
mViewer->setText("");
|
||||||
QHBoxLayout* viewerLayout = new QHBoxLayout(mViewer);
|
auto viewerLayout = new QHBoxLayout(mViewer);
|
||||||
broadcast_widget->setLayout(viewerLayout);
|
broadcast_widget->setLayout(viewerLayout);
|
||||||
viewerLayout->addWidget(mViewer);
|
viewerLayout->addWidget(mViewer);
|
||||||
contentLayout->addWidget(broadcast_widget);
|
contentLayout->addWidget(broadcast_widget);
|
||||||
param_widget->setObjectName("param_widget");
|
param_widget->setObjectName("param_widget");
|
||||||
QVBoxLayout* paramLayout = new QVBoxLayout(param_widget);
|
auto paramLayout = new QVBoxLayout(param_widget);
|
||||||
mLblPreview->setText(tr("Preview Parameters"));
|
mLblPreview->setText(tr("Preview Parameters"));
|
||||||
mLblPreview->setObjectName("lbl_title");
|
mLblPreview->setObjectName("lbl_title");
|
||||||
paramLayout->addWidget(mLblPreview);
|
paramLayout->addWidget(mLblPreview);
|
||||||
@@ -139,7 +114,7 @@ void ScanFormWidget::initScanContent() {
|
|||||||
mLblE->setObjectName("lbl_e");
|
mLblE->setObjectName("lbl_e");
|
||||||
mLblE->setText(tr("some settings\n\nparameters\n"));
|
mLblE->setText(tr("some settings\n\nparameters\n"));
|
||||||
paramLayout->addWidget(mLblE);
|
paramLayout->addWidget(mLblE);
|
||||||
QLabel* lbl_end = new QLabel(this);
|
auto lbl_end = new QLabel(this);
|
||||||
lbl_end->setObjectName("lbl_end");
|
lbl_end->setObjectName("lbl_end");
|
||||||
paramLayout->addWidget(lbl_end);
|
paramLayout->addWidget(lbl_end);
|
||||||
mLblParams->setText(tr("Scan Parameters"));
|
mLblParams->setText(tr("Scan Parameters"));
|
||||||
@@ -149,7 +124,7 @@ void ScanFormWidget::initScanContent() {
|
|||||||
mLblE2->setObjectName("lbl_e");
|
mLblE2->setObjectName("lbl_e");
|
||||||
mLblE2->setText(tr("some settings\n\nparameters\n"));
|
mLblE2->setText(tr("some settings\n\nparameters\n"));
|
||||||
paramLayout->addWidget(mLblE2);
|
paramLayout->addWidget(mLblE2);
|
||||||
QLabel* lbl_end2 = new QLabel(this);
|
auto lbl_end2 = new QLabel(this);
|
||||||
lbl_end2->setObjectName("lbl_end");
|
lbl_end2->setObjectName("lbl_end");
|
||||||
paramLayout->addWidget(lbl_end2);
|
paramLayout->addWidget(lbl_end2);
|
||||||
paramLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding));
|
paramLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding));
|
||||||
@@ -157,11 +132,11 @@ void ScanFormWidget::initScanContent() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScanFormWidget::initScanControlBar(QHBoxLayout *layout){
|
void ScanFormWidget::initScanControlBar(QHBoxLayout *layout){
|
||||||
INIT_TOOL_BTN(Refresh, ":/icons/scan_e.png");
|
INIT_TOOL_BTN(Refresh, ":/icons/scan_e.png")
|
||||||
INIT_TOOL_BTN(Preview, ":/icons/rec.png");
|
INIT_TOOL_BTN(Preview, ":/icons/rec.png")
|
||||||
|
|
||||||
INIT_TOOL_BTN(Stop, ":/icons/stop.png");
|
INIT_TOOL_BTN(Stop, ":/icons/stop.png")
|
||||||
INIT_TOOL_BTN(Scan, ":/icons/scan.png");
|
INIT_TOOL_BTN(Scan, ":/icons/scan.png")
|
||||||
|
|
||||||
mBtnRefresh->setText(tr("Refresh"));
|
mBtnRefresh->setText(tr("Refresh"));
|
||||||
mBtnPreview->setText(tr("Preview"));
|
mBtnPreview->setText(tr("Preview"));
|
||||||
@@ -174,16 +149,16 @@ void ScanFormWidget::initScanControlBar(QHBoxLayout *layout){
|
|||||||
mBtnStop->setEnabled(false);
|
mBtnStop->setEnabled(false);
|
||||||
connect(mBtnRefresh, &QToolButton::clicked, [=]() {
|
connect(mBtnRefresh, &QToolButton::clicked, [=]() {
|
||||||
QString patientInf(mPatInf->getCurrentPatientJsonString(true));
|
QString patientInf(mPatInf->getCurrentPatientJsonString(true));
|
||||||
LOG_USER_OPERATION(StartRefresh);
|
LOG_USER_OPERATION(StartRefresh)
|
||||||
EventCenter::Default()->triggerEvent(RequestEmptyScan, nullptr, (QObject*)(&patientInf));
|
EventCenter::Default()->triggerEvent(RequestEmptyScan, nullptr, (QObject*)(&patientInf));
|
||||||
});
|
});
|
||||||
connect(mBtnPreview, &QToolButton::clicked, [=]() {
|
connect(mBtnPreview, &QToolButton::clicked, [=]() {
|
||||||
LOG_USER_OPERATION(StartPreview);
|
LOG_USER_OPERATION(StartPreview)
|
||||||
EventCenter::Default()->triggerEvent(RequestPreviewScan, nullptr, nullptr);
|
EventCenter::Default()->triggerEvent(RequestPreviewScan, nullptr, nullptr);
|
||||||
});
|
});
|
||||||
connect(mBtnScan, &QToolButton::clicked, [=]() {
|
connect(mBtnScan, &QToolButton::clicked, [=]() {
|
||||||
QString patientInf(mPatInf->getCurrentPatientJsonString(false));
|
QString patientInf(mPatInf->getCurrentPatientJsonString(false));
|
||||||
LOG_USER_OPERATION(StartScan);
|
LOG_USER_OPERATION(StartScan)
|
||||||
if (!JsonObject::Instance()->getEmptyScanID()){
|
if (!JsonObject::Instance()->getEmptyScanID()){
|
||||||
QString msg(tr("No refresh data exists, please do Refresh operation first."));
|
QString msg(tr("No refresh data exists, please do Refresh operation first."));
|
||||||
EventCenter::Default()->triggerEvent(DeviceErrorRaise, nullptr, (QObject*)(&msg));
|
EventCenter::Default()->triggerEvent(DeviceErrorRaise, nullptr, (QObject*)(&msg));
|
||||||
@@ -192,7 +167,7 @@ void ScanFormWidget::initScanControlBar(QHBoxLayout *layout){
|
|||||||
EventCenter::Default()->triggerEvent(RequestPatientScan, nullptr, (QObject*)(&patientInf));
|
EventCenter::Default()->triggerEvent(RequestPatientScan, nullptr, (QObject*)(&patientInf));
|
||||||
});
|
});
|
||||||
connect(mBtnStop, &QToolButton::clicked, [=]() {
|
connect(mBtnStop, &QToolButton::clicked, [=]() {
|
||||||
LOG_USER_OPERATION(Stop);
|
LOG_USER_OPERATION(Stop)
|
||||||
EventCenter::Default()->triggerEvent(RequestStop, nullptr, nullptr);
|
EventCenter::Default()->triggerEvent(RequestStop, nullptr, nullptr);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -214,9 +189,8 @@ void ScanFormWidget::setPreviewing(bool val) {
|
|||||||
void ScanFormWidget::renderLoading() {
|
void ScanFormWidget::renderLoading() {
|
||||||
setPreviewing(true);
|
setPreviewing(true);
|
||||||
uchar c_data[PREVIEW_ROW][PREVIEW_COL];
|
uchar c_data[PREVIEW_ROW][PREVIEW_COL];
|
||||||
uchar* data_ptr = c_data[0];
|
|
||||||
for (int i = 0; i < PREVIEW_ROW; i++) {
|
for (int i = 0; i < PREVIEW_ROW; i++) {
|
||||||
data_ptr = c_data[i];
|
uchar* data_ptr = c_data[i];
|
||||||
memset(data_ptr, 0, PREVIEW_COL);
|
memset(data_ptr, 0, PREVIEW_COL);
|
||||||
}
|
}
|
||||||
QImage img(c_data[0], PREVIEW_COL, PREVIEW_ROW, QImage::Format_Grayscale8);
|
QImage img(c_data[0], PREVIEW_COL, PREVIEW_ROW, QImage::Format_Grayscale8);
|
||||||
@@ -238,16 +212,14 @@ void ScanFormWidget::renderLoading() {
|
|||||||
|
|
||||||
void ScanFormWidget::renderPreviewData(const QObject *data) {
|
void ScanFormWidget::renderPreviewData(const QObject *data) {
|
||||||
if (!data)return;
|
if (!data)return;
|
||||||
QByteArray* array = (QByteArray*)data;
|
auto array = (QByteArray*)data;
|
||||||
uchar* raw_dataptr = (uchar*)array->data();
|
auto raw_dataptr = (uchar*)array->data();
|
||||||
uchar c_data[PREVIEW_ROW][PREVIEW_COL];
|
uchar c_data[PREVIEW_ROW][PREVIEW_COL];
|
||||||
uchar* data_ptr = c_data[0];
|
|
||||||
for (int i = 0; i < PREVIEW_ROW; i++) {
|
for (int i = 0; i < PREVIEW_ROW; i++) {
|
||||||
data_ptr = c_data[i];
|
uchar* data_ptr = c_data[i];
|
||||||
memcpy(data_ptr, raw_dataptr, PREVIEW_COL);
|
memcpy(data_ptr, raw_dataptr, PREVIEW_COL);
|
||||||
raw_dataptr += PREVIEW_COL;
|
raw_dataptr += PREVIEW_COL;
|
||||||
}
|
}
|
||||||
raw_dataptr = (uchar*)array->data();
|
|
||||||
QImage img(c_data[0], PREVIEW_COL, PREVIEW_ROW, QImage::Format_Grayscale8);
|
QImage img(c_data[0], PREVIEW_COL, PREVIEW_ROW, QImage::Format_Grayscale8);
|
||||||
mViewer->setFixedSize(800, 800);
|
mViewer->setFixedSize(800, 800);
|
||||||
QPixmap pic = QPixmap::fromImage(img).scaledToHeight(800, Qt::SmoothTransformation);
|
QPixmap pic = QPixmap::fromImage(img).scaledToHeight(800, Qt::SmoothTransformation);
|
||||||
@@ -275,7 +247,33 @@ void ScanFormWidget::renderPreviewData(const QObject *data) {
|
|||||||
painter.drawText(400 - 13, 800 - borderSpacing - 13, "F");
|
painter.drawText(400 - 13, 800 - borderSpacing - 13, "F");
|
||||||
painter.drawText(borderSpacing + 6, borderSpacing + 30, "ROI");
|
painter.drawText(borderSpacing + 6, borderSpacing + 30, "ROI");
|
||||||
mViewer->setPixmap(pic);
|
mViewer->setPixmap(pic);
|
||||||
return;
|
}
|
||||||
|
|
||||||
|
void ScanFormWidget::initEvents() {//Events---------------------------------------------------------------
|
||||||
|
connect(EventCenter::Default(), &EventCenter::PatientSelected, [=](QObject* sender, QObject* data) {
|
||||||
|
if (mUnInited)
|
||||||
|
{
|
||||||
|
mBtnScan->setEnabled(true);
|
||||||
|
mBtnRefresh->setEnabled(true);
|
||||||
|
mBtnPreview->setEnabled(true);
|
||||||
|
mBtnStop->setEnabled(true);
|
||||||
|
mUnInited = false;
|
||||||
|
}
|
||||||
|
mPatInf->setPatientInformation((PatientInformation*)data);
|
||||||
|
});
|
||||||
|
connect(EventCenter::Default(), &EventCenter::ResponseStop, [=](QObject* sender, QObject* data) {
|
||||||
|
setPreviewing(false);
|
||||||
|
});
|
||||||
|
connect(EventCenter::Default(), &EventCenter::ResponsePreview, this,&ScanFormWidget::renderLoading);
|
||||||
|
connect(EventCenter::Default(), &EventCenter::ResponsePreviewData, this,&ScanFormWidget::renderPreviewData);
|
||||||
|
connect(EventCenter::Default(), &EventCenter::PatientSelected, [=](QObject* sender, QObject* data) {
|
||||||
|
mPatInf->setPatientInformation((PatientInformation*)data);
|
||||||
|
});
|
||||||
|
connect(EventCenter::Default(), &EventCenter::ReloadLanguage, this, &ScanFormWidget::reloadLanguage);
|
||||||
|
connect(EventCenter::Default(), &EventCenter::DeviceErrorRaise, [=](QObject* parent, QObject* msg){
|
||||||
|
printf("signal:%d\r\n",senderSignalIndex());
|
||||||
|
setPreviewing(false);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScanFormWidget::reloadLanguage(){
|
void ScanFormWidget::reloadLanguage(){
|
||||||
|
|||||||
@@ -36,11 +36,13 @@ private:
|
|||||||
void initProtocolUI(QHBoxLayout *layout);
|
void initProtocolUI(QHBoxLayout *layout);
|
||||||
void initScanControlBar(QHBoxLayout *layout);
|
void initScanControlBar(QHBoxLayout *layout);
|
||||||
void initScanContent();
|
void initScanContent();
|
||||||
void reloadLanguage();
|
|
||||||
void renderLoading();
|
void renderLoading();
|
||||||
void renderPreviewData(const QObject *data);
|
void renderPreviewData(const QObject *data);
|
||||||
|
void reloadLanguage();
|
||||||
private slots:
|
private slots:
|
||||||
void protocolChanged(int type);
|
void protocolChanged(int type);
|
||||||
|
|
||||||
|
void initEvents();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user