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);
}