From abf576444c7b6b346c6ef5f75ab6612ec3388e05 Mon Sep 17 00:00:00 2001 From: sunwen Date: Fri, 25 Aug 2023 14:35:41 +0800 Subject: [PATCH] Change recon page can refresh transfer progress automaticly. --- src/device/DeviceManager.cpp | 20 ++++++++++++++------ src/device/DeviceManager.h | 5 ++++- src/forms/recon/ReconFormWidget.cpp | 19 +++++++++++++++++++ src/forms/recon/ReconFormWidget.h | 4 ++++ 4 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/device/DeviceManager.cpp b/src/device/DeviceManager.cpp index 47bc582..3ac5168 100644 --- a/src/device/DeviceManager.cpp +++ b/src/device/DeviceManager.cpp @@ -702,7 +702,10 @@ void DeviceManager::startTransfer() QString msg = "DB Error. Code:G501"; emitInfoCallback(msg, MessageLevel::Error); } - + else + { + emit transferStatusUpdated(); + } } void DeviceManager::processTransferProgress(const QString& aProgress) @@ -727,6 +730,7 @@ void DeviceManager::processTransferProgress(const QString& aProgress) .arg(mIsTransferEmptyScan ? "EScan" : "Scan") .arg(mCurrentTransferMeasurementID); mIsTransfering = false; + mTransferProgress = 0; mCurrentTransferMeasurementID.clear(); if(!SQLHelper::exec(sql)) { @@ -735,6 +739,7 @@ void DeviceManager::processTransferProgress(const QString& aProgress) break; } emitInfoCallback("Scan data transfer Succeeded!", MessageLevel::Sucess); + emit transferStatusUpdated(); startCreateReconRecord(); startTransfer(); break; @@ -744,6 +749,7 @@ void DeviceManager::processTransferProgress(const QString& aProgress) .arg(mIsTransferEmptyScan ? "EScan" : "Scan") .arg(mCurrentTransferMeasurementID); mIsTransfering = false; + mTransferProgress = 0; mCurrentTransferMeasurementID.clear(); if(!SQLHelper::exec(sql)) { @@ -852,7 +858,6 @@ void DeviceManager::initEmptyScanMeasurementID() void DeviceManager::updateReconState() { - updateTransferProgress(); QString sql = "SELECT ScanID FROM Scan WHERE State < 999 And State >= 300"; auto result = SQLHelper::queryValues(sql); QStringList scanIDs; @@ -869,19 +874,22 @@ void DeviceManager::updateReconState() emit queryScanStatusToRecon(scanIDs); } -void DeviceManager::updateTransferProgress() +bool DeviceManager::updateTransferProgress() { if(!mIsTransfering) { - return; + return false; } mTransferProgress = 0; auto result = mGetTransferProgressAction->execute(); QJsonObject jsonObj = toJsonObject(result.mData); - if(jsonObj["code"].toInt() == 0 ) + if(jsonObj["code"].toInt() == 1 ) { - mTransferProgress = jsonObj["info"].toInt(); + mTransferProgress = jsonObj["info"].toString().toInt(); + return true; } + + return false; } int DeviceManager::getTransferProgress() diff --git a/src/device/DeviceManager.h b/src/device/DeviceManager.h index 286d766..6c3f644 100644 --- a/src/device/DeviceManager.h +++ b/src/device/DeviceManager.h @@ -69,7 +69,7 @@ public: void emitErrorCallback(const char *msg); void emitInfoCallback(const QString& aMessage,const unsigned int aInfoType); bool hasValidEmptyScan(); - void updateTransferProgress(); + bool updateTransferProgress(); int getTransferProgress(); public slots: @@ -142,6 +142,9 @@ signals: void createScanToRecon(const QString& aScanID, const QString& aPatientID, const QString& aReferenceID, const QString& aPath); void queryScanStatusToRecon(const QStringList& aScanIDs); void updateReconStateFinished(); + //GUI + void initializeFinished(); + void transferStatusUpdated(); private: diff --git a/src/forms/recon/ReconFormWidget.cpp b/src/forms/recon/ReconFormWidget.cpp index a40f219..c19acba 100644 --- a/src/forms/recon/ReconFormWidget.cpp +++ b/src/forms/recon/ReconFormWidget.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include "components/SlideTableView.h" #include "db/SQLHelper.h" @@ -23,6 +24,7 @@ ReconFormWidget::ReconFormWidget(QWidget *parent) , mScanTable(new SlideTableView(this)) , mSearchWidget(new ScanSearchCriteriaForm(this)) , mModel(nullptr) +, mRefreshTimer(new QTimer(this)) { auto layout = new QHBoxLayout(ui->commandWidget); layout->setAlignment(Qt::AlignmentFlag::AlignLeft); @@ -51,8 +53,10 @@ ReconFormWidget::ReconFormWidget(QWidget *parent) connect(mBtnRefresh, &QToolButton::clicked, DeviceManager::Default(), &DeviceManager::updateReconState); connect(DeviceManager::Default(), &DeviceManager::updateReconStateFinished, mModel, &QSqlTableModel::select); + connect(DeviceManager::Default(), &DeviceManager::transferStatusUpdated, mModel, &QSqlTableModel::select); connect(mSearchWidget, &ScanSearchCriteriaForm::searchFilterUpdated, this, &ReconFormWidget::updateSearchFilter); connect(mBtnDelete, &QToolButton::clicked, this, &ReconFormWidget::deleteReconRecord); + connect(mRefreshTimer, &QTimer::timeout, this, &ReconFormWidget::refreshTransferprogress); } @@ -116,6 +120,13 @@ void ReconFormWidget::showEvent(QShowEvent *aEvent) { TabFormWidget::showEvent(aEvent); DeviceManager::Default()->updateReconState(); + mRefreshTimer->start(1000); +} + +void ReconFormWidget::hideEvent(QHideEvent *aEvent) +{ + mRefreshTimer->stop(); + TabFormWidget::hideEvent(aEvent); } void ReconFormWidget::deleteReconRecord() @@ -159,3 +170,11 @@ int ReconFormWidget::getTableColumnIndex(const QString& aColumnName) { return mModel->record().indexOf(aColumnName); } + +void ReconFormWidget::refreshTransferprogress() +{ + if(DeviceManager::Default()->updateTransferProgress()) + { + mScanTable->viewport()->update(); + } +} diff --git a/src/forms/recon/ReconFormWidget.h b/src/forms/recon/ReconFormWidget.h index b6676b8..a145838 100644 --- a/src/forms/recon/ReconFormWidget.h +++ b/src/forms/recon/ReconFormWidget.h @@ -8,6 +8,7 @@ class QToolButton; class SlideTableView; class QSqlTableModel; class ScanSearchCriteriaForm; +class QTimer; class ReconFormWidget: public TabFormWidget { @@ -19,10 +20,12 @@ public: protected: void showEvent(QShowEvent *aEvent) override; + void hideEvent(QHideEvent *aEvent) override; private slots: void updateSearchFilter(); void deleteReconRecord(); + void refreshTransferprogress(); private: int getTableColumnIndex(const QString& aColumnName); @@ -34,6 +37,7 @@ private: SlideTableView* mScanTable; ScanSearchCriteriaForm* mSearchWidget; QSqlTableModel *mModel; + QTimer* mRefreshTimer; void initTableView(QHBoxLayout *contentLayout);