2023-08-21 11:21:35 +08:00
|
|
|
|
|
|
|
|
#include "ReconFormWidget.h"
|
2023-08-21 14:22:41 +08:00
|
|
|
#include "ui_TabFormWidget.h"
|
2023-08-21 11:21:35 +08:00
|
|
|
|
|
|
|
|
#include <QToolButton>
|
|
|
|
|
#include <QVBoxLayout>
|
|
|
|
|
#include <QHeaderView>
|
|
|
|
|
|
|
|
|
|
#include "components/SlideTableView.h"
|
|
|
|
|
#include "db/SQLHelper.h"
|
2023-08-22 17:51:08 +08:00
|
|
|
#include "device/DeviceManager.h"
|
2023-08-21 11:21:35 +08:00
|
|
|
#include "ScanSearchCriteriaForm.h"
|
2023-08-22 17:51:08 +08:00
|
|
|
#include "ReconStateDelegate.h"
|
2023-08-21 11:21:35 +08:00
|
|
|
|
|
|
|
|
ReconFormWidget::ReconFormWidget(QWidget *parent)
|
|
|
|
|
: TabFormWidget(parent)
|
|
|
|
|
, mBtnDiscard(new QToolButton(this))
|
|
|
|
|
, mBtnDelete(new QToolButton(this))
|
|
|
|
|
, mBtnRefresh(new QToolButton(this))
|
|
|
|
|
, mScanTable(new SlideTableView(this))
|
2023-08-22 17:51:08 +08:00
|
|
|
, mSearchWidget(new ScanSearchCriteriaForm(this))
|
|
|
|
|
, mModel(nullptr)
|
|
|
|
|
{
|
2023-08-21 11:21:35 +08:00
|
|
|
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
|
|
|
|
|
|
2023-08-22 17:51:08 +08:00
|
|
|
mSearchWidget->setObjectName("SearchCriteriaForm");
|
|
|
|
|
ui->horizontalLayout->insertWidget(0, mSearchWidget);
|
2023-08-21 11:21:35 +08:00
|
|
|
insertVerticalLine(1,ui->horizontalLayout);
|
|
|
|
|
auto* contentLayout = new QHBoxLayout(this->ui->contentWidget);
|
|
|
|
|
contentLayout->setContentsMargins(0, 0, 0, 0);
|
|
|
|
|
initTableView(contentLayout);
|
|
|
|
|
|
2023-08-22 17:51:08 +08:00
|
|
|
connect(mBtnRefresh, &QToolButton::clicked, DeviceManager::Default(), &DeviceManager::updateReconState);
|
|
|
|
|
connect(DeviceManager::Default(), &DeviceManager::updateReconStateFinished, mModel, &QSqlTableModel::select);
|
|
|
|
|
connect(mSearchWidget, &ScanSearchCriteriaForm::searchFilterUpdated, this, &ReconFormWidget::updateSearchFilter);
|
|
|
|
|
|
2023-08-21 11:21:35 +08:00
|
|
|
}
|
|
|
|
|
|
2023-08-22 17:51:08 +08:00
|
|
|
void ReconFormWidget::initTableView(QHBoxLayout *contentLayout)
|
|
|
|
|
{
|
|
|
|
|
// TableView for Scan
|
|
|
|
|
ReconStateDelegate* delegate = new ReconStateDelegate(this);
|
|
|
|
|
mScanTable->setItemDelegateForColumn(8, delegate);
|
2023-08-21 11:21:35 +08:00
|
|
|
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
|
2023-08-22 17:51:08 +08:00
|
|
|
mScanTable->setModel(mModel);
|
2023-08-21 11:21:35 +08:00
|
|
|
mScanTable->hideColumn(0);
|
|
|
|
|
mScanTable->hideColumn(1);
|
2023-08-22 17:51:08 +08:00
|
|
|
mScanTable->hideColumn(4);
|
2023-08-21 11:21:35 +08:00
|
|
|
|
|
|
|
|
mScanTable->setColumnWidth(2, 250);
|
2023-08-22 17:51:08 +08:00
|
|
|
mScanTable->setColumnWidth(3, 250);
|
2023-08-21 11:21:35 +08:00
|
|
|
mScanTable->setColumnWidth(5, 250);
|
2023-08-22 17:51:08 +08:00
|
|
|
mScanTable->setColumnWidth(6, 100);
|
|
|
|
|
mScanTable->setColumnWidth(7, 250);
|
2023-08-21 11:21:35 +08:00
|
|
|
contentLayout->addWidget(mScanTable);
|
2023-08-22 17:51:08 +08:00
|
|
|
|
|
|
|
|
mScanTable->show();
|
2023-08-21 11:21:35 +08:00
|
|
|
//table current row selection changing event
|
|
|
|
|
|
|
|
|
|
// after sort by column
|
|
|
|
|
}
|
|
|
|
|
|
2023-08-22 17:51:08 +08:00
|
|
|
void ReconFormWidget::initDataModel()
|
|
|
|
|
{
|
|
|
|
|
//TODO:单独初始化预防SQL错误
|
2023-08-21 11:21:35 +08:00
|
|
|
mModel = SQLHelper::getTable("Scan");
|
2023-08-22 17:51:08 +08:00
|
|
|
mModel->sort(3, Qt::DescendingOrder);
|
|
|
|
|
updateSearchFilter();
|
|
|
|
|
|
|
|
|
|
mModel->setHeaderData(2, Qt::Horizontal, tr("PatientID"));
|
2023-08-21 11:21:35 +08:00
|
|
|
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"));
|
|
|
|
|
}
|
2023-08-22 17:51:08 +08:00
|
|
|
|
|
|
|
|
void ReconFormWidget::updateSearchFilter()
|
|
|
|
|
{
|
|
|
|
|
mModel->setFilter(mSearchWidget->getSearchFilter());
|
|
|
|
|
mModel->select();
|
|
|
|
|
}
|