From d1dc5df680e3851ef34d92c3b4684edd3b7190c4 Mon Sep 17 00:00:00 2001 From: Krad Date: Mon, 21 Aug 2023 11:21:35 +0800 Subject: [PATCH] ReconFormWidget --- .gitignore | 1 + .idea/misc.xml | 3 + src/ShimLib/ShimLib.c | 10 +- src/components/ListBox.cpp | 9 + src/components/ListBox.h | 2 +- src/forms/TabFormWidget.cpp | 7 + src/forms/TabFormWidget.h | 2 + src/forms/TabFormWidget.ui | 37 ++- src/forms/recon/ReconFormWidget.cpp | 89 ++++++ src/forms/recon/ReconFormWidget.h | 29 ++ src/forms/recon/ScanSearchCriteriaForm.cpp | 41 +++ src/forms/recon/ScanSearchCriteriaForm.h | 22 ++ src/forms/recon/ScanSearchCriteriaForm.ui | 331 +++++++++++++++++++++ src/forms/scan/ScanFormWidget.cpp | 2 +- src/forms/scan/ScanFormWidget.h | 2 +- src/icons/query.png | Bin 0 -> 7082 bytes src/icons/trash.png | Bin 0 -> 2503 bytes src/res.qrc | 2 + src/stylesheet/Dark2.css | 38 ++- src/windows/MainWindow.cpp | 3 +- 20 files changed, 610 insertions(+), 20 deletions(-) create mode 100644 src/forms/recon/ReconFormWidget.cpp create mode 100644 src/forms/recon/ReconFormWidget.h create mode 100644 src/forms/recon/ScanSearchCriteriaForm.cpp create mode 100644 src/forms/recon/ScanSearchCriteriaForm.h create mode 100644 src/forms/recon/ScanSearchCriteriaForm.ui create mode 100644 src/icons/query.png create mode 100644 src/icons/trash.png 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 0000000000000000000000000000000000000000..1749460eb4ab90f00923225e74b6b94a6dfb0c26 GIT binary patch literal 7082 zcmaiZXIK-@7w(b>gd!%26lo#SktQk~0tAqVs8K1Qi%19QB1Iy_00Ig@Iw%tOQGyE6 zJA@`pq!%fncWKh$#{a$F?>^7&e%P5aJ9FMS?>X;;-`CeU&v=Cq0D$wlw^11CyY1f% zp`$)YMuq9r7mWu-M*}GA=3W8-uBW;v^+zwv*UXp_O|{}x7rg0(l9Lks8AWQL!7;|E zo{w){;#dEyEFcDVFuH$V-4v>&b)RDWU_=Xg-xnVNqJST;2E!o~7E4Iy4r!SI8dWgT zc4+ka4jW>GA!*6)uhO?x9#FgIWMN)yS=I8<;T`znGlhjOM?SkXWy{cK)HX}8;Vf3!)^LabkE_+A1Zn8GUxJr-8ueO{(A(f@l5ugikCT(rJ;bQ2Zft_~ zgB@-}G8piHx^>S^9@K@~2_akn;Pkj>HskmVk3XBlqD)OhSO-~{nU%+b4t^4&sDnCb z1`;v8&a7HrXo3n{*-Pmgy@gmn-xTEoJV7)ZJpX#s? zhkLE9uuXkLWv$UQ$qQ;7$NCyWkf+pZl2i8CR}mKB%$nn0POaFJiD$kfgQ{9n$+LbI z2jmD0%p>tGUfgiKwohM)r#+t*Se>*=X#7HBsQ{P?6Z?7COrA9^-NupKI^~91bsl(f z!`6~HOMff43&PAk5wO$UC?A9m0jaH{bL3bux{2~sM*Q`fCYT4~6PWm2RvL%XLdIbr zP97c!L0xwc6BzJzZ+ujXJjfZE!~Eddp7Z`&-Bp6j8(1!m6;O!6t482eMn0F-@bXh0 z>&BXXBvgK>NuM2h=|YRieYDRz^BMRPar|qedApTn>Nq_;o$2uC=wRd1%?9N9xy+J4 zvw&u!U#Qei;`IS2a(??`+}jq;ws_?CK?@+LkL!Zej{g<9LQV3+Q0N6Z?`&H*JBX8) zcOw73h(8QADIakAlMa}M20d@%j(ZW>Y|= zHC$HWoqTixKV^ic$@><#;x%6XFf)Lm&!}C$OcBN0M`BUl zcgg4Jl67$$)`7QCuCCHyKf74K7ld@T*4-=ot9Z)0k?pC}KOLf}H&G0p@YiafFUK$b zgvXv`l<6^$Ib`)vN3$zM%gU~C0><2^tuo)Px76mZ&ISGUaIa87qb~IKByHn_0yS&G z@w_pac1*C{i@n!SskDH}SwV(+`{8s!T^}DRmLF$F5^ZWMX9vP!1uCQ>GU+3lDXx9# z%O>BRXl-;R$?j>8YnERdp97BDXX!cwbm=vT!rns`GR)jbm7ibIa98~4U}z@(=W9ORTE6<1niEZ}?zFB4Xm+u>XbxFE^- z3!O>D{xK?lhsU2;q(7P9@Iaop?H!FSajE@|$h1?JD->{s-R5pBgHzOo-er!e%-hX!3F6c4ny6Eq7Qdt&-i2od9_z*u5RQjIu25{|Hz9+7(M=S3^*aCpN(TyH-d~0>*ow zUDKMGX;wKfcq7;rRekcUl~?KcCZ+k3>S{?xm zkbfkk>&^?Tu3UYAszyQ@_B43LQW^gRhcb;%^+`V}2tg~}azLsGahAkyHWn5Z_N*&i zCFO#;uYzO{{!R##$Io*p7fF$?g}~Gn4;|*_0{#7uor8meW6De8+5KZ|9RdZ3tKX|z zUu8VA1dKI4}(g+aLn`5mzWZpltGFheH( z(}qp5&$;Rg@8OgZ4Lp%YeV70*V9LVe5;8?715G0{E%4}hDNXCn1^i-PSB#Sb*$wkU zJmt#!&F;Z}ARyrN-7m{Uf?<=7#Nq=terV@V97s~&piA5>hVL=n{qODbLAgT<(uMkM zn|>@4wBu_r?j{xWC4*%^P;pv6YG+;l$C)D)%qvo$dL3+1Jx`Pt*}7_1@S}u&$>0}6 zrU|U~@f=BsNHEo|x|)0w*WZ!O`6fQC(&Y%BFW%X-9(I*TQ1hItyJwmLQs9CmD7c>* zh}vX#J19l;aTN?Emt~cY3jLDVw$Xx{-Yw0^(NPjhR4@=>{kyVbRxv@4X?{0&C~0_9 zy02FQMeGstNDzVOnTNhJ$&tF+79O5G1+y5wzlr%VK3L?c3wPr_qk(0(`bst} zTP6L}o;Lj*`Hwue7kVsu|Kl@WPQb!j5)Ci)qQ@HGlm{AkN2eLO>Lt$q9*Id&30SUF zF6CmcFacAc?3Re7hNTHYTgoNpQu>ANw4<$SLb0WsPd|J!O|{V>r-VQ&3fwZN<~StT z>qQTpOPPoSzETE`ugTU(#}gJ{-^Jr|_S%V|sLkZ}n(M>-CDc_;0j4-_StBxsN~%=f zbiLTZmpBaM*+$32cnJCA?|tx>${*L1OiREJe4EPAMyQG&`+;fK>pIh2K);0J=33TpU z)GkYn>2+yE#Y#Vt!AxG$tuekVg4B10MX)#txxcxd@2rT&S9w0PVoMpXsQ-oaaKXji zUEN(7+Ph|4G|P~ZSorN1V~BX&`jg%YBlO7n%TTtab~VD_;YC1xBcO9|t0SB+ZSOJ5FdQ_U5 zpwgVLi_r>5M}dJJ;hyA@BH^>3naqZlnJ1xkuBH@h+M}o)bs-X(%w#uZ9G*5((hNcL zOkbPKto!+$8h=jZU9C!&P~VKky(}%KtWpwb^1bN357yBEj!JH@&1d}N*g=);H}ACJ z>~Kmho0d9Pw`v**` z*PMu1n(XtPef8)H?pO-w{5~fJ3osYmWiWX`)5;5WT=y%A5Py zhEy&*LG`P936%!z9e|-O@jxXcan&yy|&a#l?8i;AJUBYOJ(& zmiaJL{G*i8b3HnE99)-xS${v5Shg$C#n`yZ>ooD`%ottamwtPN&0Y>-af-~v?souIZSoVCnvF;EeKWvvuL%NxOdKVRwSh^rZB+%=PiEHxwf{?Z5 zRRoFsoD{+GM!&w2`OgD2rEOEe-ss%2vBqs&-#>)$qEPv?51^ZN{N%lWbKFihT97r| zjTu}kzm232hhdoIfT-PW?JwE1MK5=kD^lcK1Ia~46`hr~Nx^yzkHzALv>)7f+9!%o zG!*p;yQ?>3beAcFCt_wFhDvqptr$PKRl?yX^ohCvOfWT@J_VGrIi!Jp-MtUPKwT-d zZ%*l;@n3y?ePff8b%Ju8Uge*o(SCIpbo;K3dmnXU_RVZ}RhF<_uQK^uWb;uzTES86 z483U2S-=v6zre)rT@t#$BuqjUs4WX-zA`|k&58f9v^`?xux8=UOu6Ra`I+!*l!dvY z)|p+Bgk+qw-Lqy@7~d@N?qAYjtd8q-QybOqmi`t<3Eg#{m9YO+F%6H9zT=4pAU`Y=K5hHq?yWv6dy=oduZwf(T@@7- zkL`V^&;TQb9l{rPVwiGmUglfk-2NDg?f)3KXtnJfVaw}-OiexUUliCyd8Rl^!8Vcn zAzr3qf!>G-mA&ykIqMeYK;|Rml+C$K+UcjqxwO}B+_;hd;jQz$_Wf0UWGMa?3_pA1(gdTX0-ELiTX8@Mut zHd47FqsJn9`Y>OdtmpN7An$QizeC9+^nF)= zahy=27-iGpdCAM!8hOV%;J@J zXy7d>>sbX(+^vU+i5%=WcIzdUb%Nr%DF%X{O>?@cR{nEhv3C zO;I;Ba!uM8-#dxG$FMPm*3i?@ISrZYDf*P2qlC;VUfPJm1U89_n?32|_>9LJ#-wqF z9D9k*g|j@b(HOl5;agn*pAK>%RNo1-2l}FuT+`0!1YuVkfvMZ$X~yCljp8eL9d;OPGKrx>nZzjk3QB-+de+8zORMP&XPwayk zb~Qf*&#Mdc6|d-WBT-Tq^vS{w?_B{yA zJWzpLMtsBWd+7ATdJjb+^w~B1g}GRdHeZ*;2abZHJou%3Y0tfl}{5j z`Imjv;7+w`WN2&$LAKBBv09H?a=ye$-$=&sp7P*{oqVab(&%DNNvRos*@LqE1vVz) z)%Cl}txt_Pj@?dyELiMk5iC|LzR)?#HU02~iFzWzYh`fPY4|HnPF8Z~?!^r{q0H^@ z#p}fWR|lo89p)+xjc?3S`OBte_%Y})-vEj7c;3c*>ThXbH}CZMl91q z^AB>L`a>I%E;xU%aS3nB;nG7z5-{Qg;4+4vRY-Y#NoY7;O$+5H820c_*<%siSpOWV z(xDTv+5M*9V{Yppxs%CSjPuf^OWXAH^o9z;ZNa!w$Wx3!Y5srNvyMy%^LwZv_Q>Wr zFc_SIp%`(s2tuHnUk@eEW!yV0Xr?0KF`86DH!SqAltI86F@jcuoxorR3zHEVpT0I4 zs*X^Vl%u#}zOem;mi zw<`!>Ujk4L!gJyAF=sA$YJxK!+cPCtX9HHPRHzjjqMO40;u-`s&IIiDb^A$8R!7Ce z#HjiG)0zUfO0A?Wfu@nmu44+C)^g6C%Oj4!&wjr5KdN zEFV3ycNM`zOi4d3Pu>uoMo<=bUoL(sPPk^g6*72e3hXDcH@%YGvKE~iQy#rzBeo5i z{%?QLg;i?-+UxjGi<8c|14wvzN+4`i=AQiw`#m@ri>Vdv=!;{*N#is%HJe9@ZHsTK zCfjHfuX7>H&GH9SYidqxTN1xqeBaTZHCFh9orzz+UCgxt)+T^!Nz}yK8K10q82EPO zS)8Bi8o*jG02_Zf$Rn5^_g;P<`kFh=@br3-LrLW|-HVbu^8%r-nwaN5Uj1@~DqLj| z9A1=ZaJL#>%`DsM!k6n&%kJbPhllny4C+pZwPb4H{Z4L}1nle3&WhLF5Ty&$&Gfm(wz1fbsffZquycUn1bfAsHGg5mn zS7%*L6>5E!CuE}odFl?L$Op0`w*2BwQc?-gi_!R3vzM(;4tLo%Kbvr=ldvVrNmTrs z&L8dG`g5fLN%mpj_ZQxOfgMsr!yg(Dh`@7YfV;mfWVYr4Vj^9jz2pI_*~$~g1FEjG z;4)F2q(zZPK*kE_#CO<8ULPGCd=E-`+Rx!30^5w5p9X&R8Dy_2ZR?6Sy|n(`-ri8^JR>tjl9dmW<4?@%zC=GZG%Tj1V0MV={)#;FZWU24VkRDLUp*($3NLAE~CC>zrDwbCE3_I)A4O*HB3Nf z($+{XN)M?2{8076=HD$WsZ=Z?^MUBx1~$F<77d5>UtvV8TgF;@s0?5WWL-ur`)LftJ+pMfA=wEJhZCy=Tx;|Vs zwG0kjVD+h`A?>En1Zh!LUSheldTEH5@Qs1gTNX45=Mh0=88p_NWB4``Z=VT$FmT6I z7;yn)e^xRe!)r&HWB^pf{Z1U7JfTSZPvAkwK**Pi%_1D%Dx~9Umt>Appcv0%B)Xl5C@6(P z^F8Ul=2GjsYGzo^-)6?4`bX%Rj_evZG{uRoAV>OR$tg3Cy7WHT^|olm)Vp}Lb5BBB zfTFAaiUxX^+WLFqoh$<1cPl9fnJ$vX8cQwzEI@#y>N0WjBnJ9AA1Ld8jl^b3F}s9O zXGuhnE5QCGANm+*ar?=6mbT*He^p<-$t^9E@{k4mZ@{U0*LBV*gFuw!bHq+w$@YdQ08d>M~PFi;4eg;P14P7*A5A>)&*h zI*l}raMjF>gMzH7QlqoLN9so-#(>o8_j@Xu=?klg(SnGHarw1_csMlYAzwY0&Byer zw_00y+O1iutqY?Gw~~Jhe=XfX_m2e{*Z~_EPcsu(tI7dGc>_(BL5t@Uv}fW99JhFgjh%H9h{Kr#ig$ znf$PQ64lLasPCTx9!bd`cQo)w0 z*ua2&N)|t&(n!=Rf~iRzE@^Z=v71x6B~=}jK_4V_TQto^j{)SS8s88kPW^pbw5Zw& zV}@HW(zJ-{t49y@h-f`W`rK434h~INrCS}Br5-FDi89laKZQfcf>kt1d(=96Hjq&h zkmQ7b+}d60yH&vI@QRE^XwV(%G1dRq%+wjMUhZ{2vr?#=diVzDYU!g2H7sBMAHI)n AzW@LL literal 0 HcmV?d00001 diff --git a/src/icons/trash.png b/src/icons/trash.png new file mode 100644 index 0000000000000000000000000000000000000000..cbe6058eae2f03ddf5f37a4a4257057c3b3b549d GIT binary patch literal 2503 zcmeHJSx{4F6b_lITu7}q1ksY9m#~SYV1SWTLNE@oLO?WBi|n}7B}&9V*ph&31%arQ zmL<|galu5zjU_Cipj9I!%2F|aLBbyP$V8x*8OQfNv`;?#|Cux2f6l|1?>qmO=}-4w zp>M2@LZMb{qfrBp_+;sT%aQxWZgB|`bXWo2UMR7QFo;6w@wQPZyJAB|i^)twZ$jFE zJR6OOSnotr7N3o-GBWpX9WT=*zQ_A7-*B-HPt|XUJZQiJZoH@6A5LSU9x(>|tVn;k zF7NDN?VlPeNp_lgpkN>Ck5hLF8&r4M2{FWt#dJxLYs^sf8f6-5EMC>sNypeMzSGDm z$x@BmI&xBigKe8%)W@SpUa#2=6r?e6Vmih)xrxG_I8~bbf>pz zsxUB2Xmxulu!k!Z4NVWV!rnqpR6hveo36A#d|YjEGC z=SGygWvA(7@@}by9Mz`DZ_Xqwkc@MZYQ|kqHQ`K5gczqt73~dglGn4T5|ajDGIu4FMDg7+hG99Nhj9FLJv#V&DT= zg1A(@*7>F;U{Ge$3?RuvAe?`)?mmf9xhP2f;T`mS3;fsZI>{ zBfY#ulQ|N2!#7}y&5skD&y^RM@pNlNWd*7Z_<->lPwgx1DgL=>!>Qhbx1-Mhr-CSd zlXZ{GGZR&y(4o_6ympmn-XU^Sh*x6Jkh4#i+{u?^)fBtZ9^%%AqZQifQF5y!RxQ-g zU4r4J*ctgs{ZMC>tqzEWKKS(P1A8Y+V6Ctx5kmkydqUAub00s(x+k&68?%;}rvva> z^#~uS>I>`Gbx>pi!xff=+VWC_eMhYmW-vRo!jZ&*qH2b%B|QY@c~^9f%py!XK0bm; zwn|*wlFi6I(HLL1qow;RyK(7`zI=9Mwwpq0qS}k|>Tu6OuROYbQrb|uQxB$XuoizS zK=BRtxTVuAxbRic12GK^21Jb#T+gHUBEh>VBJwK#E^A;H8Wen=HJoM6g}1iJ{-a_k zCZIiL1TB-fafs^@QoC;-S@o#awXLm}FH zG-b(!<226(sc1yR<|R%#z|-nbx|M+^goP(+kd366k9N&RA$rbK`G&0m;#5U$h3pkY zvh_TTX(}sm>}ZBiM2?XK53|meFXK_sg{G;)neCRrZPl=^yepHW*v^Tu<$LA=H5&Hy zYgOG!ftXFXEFWB@p0Dt5dio+ya;fCvUdlKwmC3OsuGlbIl&l)W_`g35!;KkxaC zeS^BI`{ez@RmYMy1w3BkRHMNo-~N`h*>@|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); }