diff --git a/.gitignore b/.gitignore index 62cc5e0..f94af83 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ /.vs/ /CMakeSettings.json /src/translations/copy.bat +/build diff --git a/.idea/misc.xml b/.idea/misc.xml index 8822db8..aa85d24 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,4 +4,7 @@ + + + \ No newline at end of file diff --git a/src/ShimLib/ShimLib.c b/src/ShimLib/ShimLib.c index 1b895bc..b30dab5 100644 --- a/src/ShimLib/ShimLib.c +++ b/src/ShimLib/ShimLib.c @@ -361,11 +361,11 @@ const char* FRAME_FILE_PATH_2 = "./pre_image.bin"; int previewCount = 0; const char* GetPreviewData() { previewCount++; - if (previewCount>3){ - status = READY; - innerCallback("Preview Device Error"); - return NULL; - } +// if (previewCount>3){ +// status = READY; +// innerCallback("Preview Device Error"); +// return NULL; +// } FILE* file; preivew_change_flag++; preivew_change_flag = preivew_change_flag % 2; diff --git a/src/components/ListBox.cpp b/src/components/ListBox.cpp index 156a770..afd352f 100644 --- a/src/components/ListBox.cpp +++ b/src/components/ListBox.cpp @@ -25,5 +25,14 @@ void ListBox::paintEvent(QPaintEvent *e) { painter.drawText(x,y,this->text()); } +void ListBox::setSmallBox(bool isSmall) { + if (isSmall){ + this->setObjectName("ListBoxSmall"); + } + else{ + this->setObjectName("ListBox"); + } +} + diff --git a/src/components/ListBox.h b/src/components/ListBox.h index 2ab45ad..67b1f29 100644 --- a/src/components/ListBox.h +++ b/src/components/ListBox.h @@ -11,7 +11,7 @@ class ListBox: public QToolButton { public: explicit ListBox(QWidget* parent = nullptr); ~ListBox() override = default; - + void setSmallBox(bool isSmall); protected: void paintEvent(QPaintEvent* e) override; diff --git a/src/forms/TabFormWidget.cpp b/src/forms/TabFormWidget.cpp index f7ded9c..4139abc 100644 --- a/src/forms/TabFormWidget.cpp +++ b/src/forms/TabFormWidget.cpp @@ -25,3 +25,10 @@ void TabFormWidget::addVerticalLine(QHBoxLayout *layout) { spacerLine->setObjectName("verSpaceLine"); layout->addWidget(spacerLine); } + +void TabFormWidget::insertVerticalLine(int index, QHBoxLayout *layout) { + auto spacerLine = new QWidget(this); + spacerLine->setFixedWidth(2); + spacerLine->setObjectName("verSpaceLine"); + layout->insertWidget(index,spacerLine); +} diff --git a/src/forms/TabFormWidget.h b/src/forms/TabFormWidget.h index 6fc38fd..224015c 100644 --- a/src/forms/TabFormWidget.h +++ b/src/forms/TabFormWidget.h @@ -17,6 +17,8 @@ public: protected: Ui::TabFormWidget *ui; void addVerticalLine(QHBoxLayout *layout); + void insertVerticalLine(int index, QHBoxLayout *layout); + }; #endif // TABFORMWIDGET_H diff --git a/src/forms/TabFormWidget.ui b/src/forms/TabFormWidget.ui index 3532bc3..316edc5 100644 --- a/src/forms/TabFormWidget.ui +++ b/src/forms/TabFormWidget.ui @@ -16,7 +16,7 @@ - + 0 @@ -33,10 +33,37 @@ 0 - - - - + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + diff --git a/src/forms/recon/ReconFormWidget.cpp b/src/forms/recon/ReconFormWidget.cpp new file mode 100644 index 0000000..9ca5986 --- /dev/null +++ b/src/forms/recon/ReconFormWidget.cpp @@ -0,0 +1,89 @@ + +#include "ReconFormWidget.h" +#include "ui_tabformwidget.h" + +#include +#include +#include + +#include "components/SlideTableView.h" +#include "db/SQLHelper.h" +#include "ScanSearchCriteriaForm.h" + +ReconFormWidget::ReconFormWidget(QWidget *parent) +: TabFormWidget(parent) +, mBtnDiscard(new QToolButton(this)) +, mBtnDelete(new QToolButton(this)) +, mBtnRefresh(new QToolButton(this)) +, mScanTable(new SlideTableView(this)) +, mModel(nullptr){ + + + auto layout = new QHBoxLayout(ui->commandWidget); + layout->setAlignment(Qt::AlignmentFlag::AlignLeft); + mBtnDiscard->setObjectName("btnDiscard"); + mBtnDelete->setObjectName("btnDelete"); + mBtnRefresh->setObjectName("btnRefreshData"); + mBtnDiscard->setText(tr("Discard")); + mBtnDelete->setText(tr("Delete")); + mBtnRefresh->setText(tr("Refresh")); + + layout->addWidget(mBtnDiscard); + layout->addWidget(mBtnDelete); + layout->addSpacerItem(new QSpacerItem(20,20,QSizePolicy::Expanding)); + addVerticalLine(layout); + layout->addWidget(mBtnRefresh); + + initDataModel(); + //Init content widget + + QWidget * widget = new ScanSearchCriteriaForm(this); + widget->setObjectName("SearchCriteriaForm"); + ui->horizontalLayout->insertWidget(0,widget); + insertVerticalLine(1,ui->horizontalLayout); + auto* contentLayout = new QHBoxLayout(this->ui->contentWidget); + contentLayout->setContentsMargins(0, 0, 0, 0); + initTableView(contentLayout); + +} + +void ReconFormWidget::initTableView(QHBoxLayout *contentLayout) {// TableView for Scan + mScanTable->setAlternatingRowColors(true); + mScanTable->setSelectionMode(QAbstractItemView::SingleSelection); + mScanTable->setEditTriggers(QAbstractItemView::NoEditTriggers); + mScanTable->setSelectionBehavior(QAbstractItemView::SelectRows); + mScanTable->verticalHeader()->setDefaultSectionSize(38); + mScanTable->horizontalHeader()->setStretchLastSection(true); + //data from SQLITE + // + //avoid pan comsumed by tableview! + mScanTable->viewport()->ungrabGesture(Qt::PanGesture); + + mScanTable->setSortingEnabled(true); // enable sortingEnabled + mScanTable->setModel((QAbstractItemModel*) mModel); + mScanTable->hideColumn(0); + mScanTable->hideColumn(1); + mScanTable->show(); + + mScanTable->setColumnWidth(2, 250); + mScanTable->setColumnWidth(3, 200); + mScanTable->setColumnWidth(4, 160); + mScanTable->setColumnWidth(5, 250); + mScanTable->setColumnWidth(6, 250); + contentLayout->addWidget(mScanTable); + //table current row selection changing event + + // after sort by column +} + +void ReconFormWidget::initDataModel() {//TODO:单独初始化预防SQL错误 + mModel = SQLHelper::getTable("Scan"); + mModel->sort(5, Qt::DescendingOrder); + mModel->select(); + mModel->setHeaderData(2, Qt::Horizontal, "PatientID"); + mModel->setHeaderData(5, Qt::Horizontal, tr("PatientName")); + mModel->setHeaderData(3, Qt::Horizontal, tr("Scan Time")); + mModel->setHeaderData(6, Qt::Horizontal, tr("Laterality")); + mModel->setHeaderData(7, Qt::Horizontal, tr("OperatorName")); + mModel->setHeaderData(8, Qt::Horizontal, tr("State")); +} diff --git a/src/forms/recon/ReconFormWidget.h b/src/forms/recon/ReconFormWidget.h new file mode 100644 index 0000000..61b54f0 --- /dev/null +++ b/src/forms/recon/ReconFormWidget.h @@ -0,0 +1,29 @@ + +#ifndef IMG1_V2_BIN_RECONFORMWIDGET_H +#define IMG1_V2_BIN_RECONFORMWIDGET_H + +#include "forms/TabFormWidget.h" +class QToolButton; +class SlideTableView; +class QSqlTableModel; +class ReconFormWidget: public TabFormWidget { + Q_OBJECT +public: + explicit ReconFormWidget(QWidget *parent = nullptr); + + ~ReconFormWidget() override = default; + +private: + QToolButton* mBtnDiscard; + QToolButton* mBtnDelete; + QToolButton* mBtnRefresh; + SlideTableView* mScanTable; + QSqlTableModel *mModel; + + void initTableView(QHBoxLayout *contentLayout); + + void initDataModel(); +}; + + +#endif //IMG1_V2_BIN_RECONFORMWIDGET_H diff --git a/src/forms/recon/ScanSearchCriteriaForm.cpp b/src/forms/recon/ScanSearchCriteriaForm.cpp new file mode 100644 index 0000000..c5cddb5 --- /dev/null +++ b/src/forms/recon/ScanSearchCriteriaForm.cpp @@ -0,0 +1,41 @@ +#include "ScanSearchCriteriaForm.h" +#include "ui_ScanSearchCriteriaForm.h" + +#include +#include "components/ListBox.h" + +ScanSearchCriteriaForm::ScanSearchCriteriaForm(QWidget *parent) : + QWidget(parent), + ui(new Ui::ScanSearchCriteriaForm) +{ + ui->setupUi(this); + + auto beginBox = new ListBox(this); +// beginBox->setSmallBox(true); + ui->verticalLayoutDate->replaceWidget(ui->mLBBeginDate,beginBox); + ui->mLBBeginDate->setVisible(false); + ui->mLBBeginDate->deleteLater(); + ui->mLBBeginDate=beginBox; + ui->mLBBeginDate->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + ui->mLBBeginDate->setUpdatesEnabled(true); + ui->mLBBeginDate->setText(QDate::currentDate().toString("yyyy-MM-dd")); + + auto endBox = new ListBox(this); +// endBox->setSmallBox(true); + ui->verticalLayoutDate->replaceWidget(ui->mLBEndDate,endBox); + ui->mLBEndDate->setVisible(false); + ui->mLBEndDate->deleteLater(); + ui->mLBEndDate=endBox; + ui->mLBEndDate->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + ui->mLBEndDate->setUpdatesEnabled(true); + ui->mLBEndDate->setText(QDate::currentDate().toString("yyyy-MM-dd")); + ui->CriteriaTitle->setObjectName("parameterTitle"); + ui->ScanTitle->setObjectName("parameterTitle"); + + ui->holder1->setObjectName("endSpaceLine"); +} + +ScanSearchCriteriaForm::~ScanSearchCriteriaForm() +{ + delete ui; +} diff --git a/src/forms/recon/ScanSearchCriteriaForm.h b/src/forms/recon/ScanSearchCriteriaForm.h new file mode 100644 index 0000000..1dc9958 --- /dev/null +++ b/src/forms/recon/ScanSearchCriteriaForm.h @@ -0,0 +1,22 @@ +#ifndef SCANSEARCHCRITERIAFORM_H +#define SCANSEARCHCRITERIAFORM_H + +#include + +namespace Ui { +class ScanSearchCriteriaForm; +} + +class ScanSearchCriteriaForm : public QWidget +{ + Q_OBJECT + +public: + explicit ScanSearchCriteriaForm(QWidget *parent = nullptr); + ~ScanSearchCriteriaForm(); + +private: + Ui::ScanSearchCriteriaForm *ui; +}; + +#endif // SCANSEARCHCRITERIAFORM_H diff --git a/src/forms/recon/ScanSearchCriteriaForm.ui b/src/forms/recon/ScanSearchCriteriaForm.ui new file mode 100644 index 0000000..6e8b6ac --- /dev/null +++ b/src/forms/recon/ScanSearchCriteriaForm.ui @@ -0,0 +1,331 @@ + + + ScanSearchCriteriaForm + + + + 0 + 0 + 310 + 624 + + + + + 0 + 0 + + + + Form + + + + + + + 0 + 0 + + + + Scan Search + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 12 + + + 0 + + + 15 + + + 0 + + + 5 + + + + + Today + + + + + + + Yesterday + + + + + + + Last 7 days + + + + + + + Search All + + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 10 + + + 3 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + Scan date from + + + + + + + ... + + + + + + + + 0 + 0 + + + + Scan date to + + + + + + + ... + + + + + + + Search Dates + + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + Search Criteria + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + Accession Number + + + + + + + + 0 + 0 + + + + Patient ID + + + + + + + + 0 + 0 + + + + Scan State + + + + + + + + + + + 0 + 0 + + + + Patient Name + + + + + + + + + + + + + Clear Fields + + + + + + + + + + Query + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + diff --git a/src/forms/scan/ScanFormWidget.cpp b/src/forms/scan/ScanFormWidget.cpp index db5ce32..a66dce6 100644 --- a/src/forms/scan/ScanFormWidget.cpp +++ b/src/forms/scan/ScanFormWidget.cpp @@ -218,7 +218,7 @@ void ScanFormWidget::renderLoading() { mViewer->setPixmap(pic); } -void ScanFormWidget::renderPreviewData(const QObject *data) { +void ScanFormWidget::renderPreviewData(const QObject *sender,const QObject *data) { if (!data)return; auto array = (QByteArray*)data; auto raw_dataptr = (uchar*)array->data(); diff --git a/src/forms/scan/ScanFormWidget.h b/src/forms/scan/ScanFormWidget.h index 6fbd249..a710594 100644 --- a/src/forms/scan/ScanFormWidget.h +++ b/src/forms/scan/ScanFormWidget.h @@ -38,7 +38,7 @@ private: void initScanControlBar(QHBoxLayout *layout); void initScanContent(); void renderLoading(); - void renderPreviewData(const QObject *data); + void renderPreviewData(const QObject *sender,const QObject *data); void reloadLanguage(); private slots: void protocolChanged(int type); diff --git a/src/icons/query.png b/src/icons/query.png new file mode 100644 index 0000000..1749460 Binary files /dev/null and b/src/icons/query.png differ diff --git a/src/icons/trash.png b/src/icons/trash.png new file mode 100644 index 0000000..cbe6058 Binary files /dev/null and b/src/icons/trash.png differ diff --git a/src/res.qrc b/src/res.qrc index f16a2ae..80b4482 100644 --- a/src/res.qrc +++ b/src/res.qrc @@ -53,5 +53,7 @@ icons/arrow-down.png icons/arrow-up.png icons/drainage.png + icons/trash.png + icons/query.png diff --git a/src/stylesheet/Dark2.css b/src/stylesheet/Dark2.css index fbe3d3e..4885588 100644 --- a/src/stylesheet/Dark2.css +++ b/src/stylesheet/Dark2.css @@ -23,6 +23,11 @@ QPushButton { stop: 1 #606060); } +QPushButton:hover { + background: #505050; + border: 1px solid #4a88c7; +} + QToolButton { border: none; border-radius: 10%; @@ -148,6 +153,7 @@ QTabBar::tab:selected, QTabBar::tab:hover { QTabWidget::pane { margin: 0; border-bottom: 1px solid #323232; + border-top: 1px solid #505050; } /* Global TableView & ListView */ @@ -364,7 +370,7 @@ QLabel#systemMsgBar { } /*------TabFormWidget--------------------------------------------------------*/ -QWidget#contentWidget { +TabFormWidget { border-top: 1px solid #505050; } @@ -454,6 +460,13 @@ QToolButton#btnSelect { qproperty-icon:url(":/icons/selected.png"); } +QToolButton#btnDiscard { + qproperty-icon:url(":/icons/trash.png"); +} +QToolButton#btnRefreshData { + qproperty-icon:url(":/icons/refresh.png"); +} + /*------ScanFormWidget-------------------------------------------------------*/ QWidget#paramWidget { min-width: 300px; @@ -549,10 +562,6 @@ QToolButton#btnDrainage { } /*------AdminSettingForm---------------------------------------------------*/ -QWidget#settingContentWidget { - border-top: 1px solid #505050; -} - QWidget#settingContentWidget QStackedWidget{ margin-top: 5; } @@ -581,6 +590,11 @@ QWidget#commandWidgetnoBBorder { max-height: 123px; border-top: 1px solid #505050; } +/*-------SearchCriteriaForm--------------------------------------------------*/ +QWidget#SearchCriteriaForm QPushButton { + min-height: 38px; + max-height: 38px; +} /*------Dialogs--------------------------------------------------------------*/ @@ -703,11 +717,23 @@ QToolButton#ListBox { max-height: 30px; border: 1px solid #4a88c7; border-radius: 5px; - color: grey; qproperty-toolButtonStyle:ToolButtonTextBesideIcon; qproperty-iconSize:30px 30px; qproperty-icon:url(":/icons/arrow-down.png"); } +QToolButton#ListBoxSmall { + font-size: 16px; + background-color: #505050; + color: #fcfcfc; + min-height: 20px; + max-height: 20px; + border: 1px solid #4a88c7; + border-radius: 3px; + color: white; + qproperty-toolButtonStyle:ToolButtonTextBesideIcon; + qproperty-iconSize:20px 20px; + qproperty-icon:url(":/icons/arrow-down.png"); +} ListBox { qproperty-icon:url(":/icons/arrow-down.png"); } diff --git a/src/windows/MainWindow.cpp b/src/windows/MainWindow.cpp index 9d0fe70..0627031 100644 --- a/src/windows/MainWindow.cpp +++ b/src/windows/MainWindow.cpp @@ -10,6 +10,7 @@ #include "event/EventCenter.h" #include "forms/TabFormWidget.h" +#include "forms/recon/ReconFormWidget.h" #include "forms/select/SelectFormWidget.h" #include "forms/scan/ScanFormWidget.h" #include "forms/settings/SettingFormWidget.h" @@ -107,7 +108,7 @@ void MainWindow::initializeTabWidget() mTabWidget->addTab(selectForm, tr("Select")); auto scanForm = new ScanFormWidget(this); mTabWidget->addTab(scanForm, tr("Scan")); - auto verifyForm = new TabFormWidget(this); + auto verifyForm = new ReconFormWidget(this); mTabWidget->addTab(verifyForm, tr("Verify")); mTabWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); }