Refactor system page in GUI Alpha.

This commit is contained in:
sunwen
2024-04-25 14:37:38 +08:00
parent f9eb807fa3
commit 982b54b727
420 changed files with 23907 additions and 872 deletions

View File

@@ -7,6 +7,7 @@
#include <QDebug>
#include <QLabel>
#include <QEvent>
#include <QThread>
#include "event/EventCenter.h"
#include "json/jsonobject.h"
@@ -15,7 +16,10 @@
#include "utilities/LanguageSwitcher.h"
#include "components/ULineEdit.h"
#include "components/ListBox.h"
#include "components/ImageSwitch.h"
#include "components/BatteryWidget.h"
#include "log/UserOperationLog.h"
#include "utilities/DiskInfoWorker.h"
namespace
{
@@ -50,19 +54,19 @@ namespace
GeneralForm::GeneralForm(QWidget* aParent)
: QWidget(aParent)
, mLayout(new QVBoxLayout(this))
, mDiskInfoCaller(nullptr)
, mDiskSize(0)
, mDiskUsedSize(0)
, mDiskSizeFlag(false)
, mDiskUsedSizeFlag(false)
, mDiskInfoWorker(new DiskInfoWorker())
, mDiskIcon(new BatteryWidget(this))
, mDiskSizeLabel(new QLabel(this))
, mDiskUsedLabel(new QLabel(this))
{
setFocusPolicy(Qt::ClickFocus);
QWidget* lanHeader = new QWidget(this);
mLayout->addWidget(lanHeader);
QHBoxLayout* lanHeaderLayout = new QHBoxLayout(lanHeader);
QLabel* languageLabel = new QLabel(tr("Language"));
lanHeaderLayout->addWidget(languageLabel);
QToolButton* btnLan = new ListBox(lanHeader);
lanHeaderLayout->addWidget(btnLan);
lanHeaderLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
//Institution
QWidget* instHeader = new QWidget(this);
mLayout->addWidget(instHeader);
QHBoxLayout* instHeaderLayout = new QHBoxLayout(instHeader);
@@ -72,7 +76,6 @@ GeneralForm::GeneralForm(QWidget* aParent)
instName->setMaximumSize(QSize(300, 32768));
instHeaderLayout->addWidget(instName);
instHeaderLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Fixed));
QLabel* institutionAddressLabel = new QLabel(tr("Institution Addr"));
instHeaderLayout->addWidget(institutionAddressLabel);
QLineEdit* instAddr = new ULineEdit(instHeader);
@@ -80,42 +83,111 @@ GeneralForm::GeneralForm(QWidget* aParent)
instAddr->setMaximumSize(QSize(300, 32768));
instHeaderLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
//Language
QWidget* lanHeader = new QWidget(this);
mLayout->addWidget(lanHeader);
QHBoxLayout* lanHeaderLayout = new QHBoxLayout(lanHeader);
QLabel* languageLabel = new QLabel(tr("Language"));
lanHeaderLayout->addWidget(languageLabel);
lanHeaderLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
QToolButton* btnLan = new ListBox(lanHeader);
lanHeaderLayout->addWidget(btnLan);
lanHeaderLayout->addSpacerItem(new QSpacerItem(1220, 20, QSizePolicy::Fixed));
//Lock Screen
QWidget* lockHeader = new QWidget(this);
mLayout->addWidget(lockHeader);
QHBoxLayout* lockHeaderLayout = new QHBoxLayout(lockHeader);
QLabel* lockScreenLabel = new QLabel(tr("Lock Screen"));
lockHeaderLayout->addWidget(lockScreenLabel);
lockHeaderLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
ListBox* lockTime = new ListBox(lockHeader);
lockHeaderLayout->addWidget(lockTime);
lockHeaderLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
lockHeaderLayout->addSpacerItem(new QSpacerItem(1220, 20, QSizePolicy::Fixed));
QWidget* shutdownHeader = new QWidget(this);
mLayout->addWidget(shutdownHeader);
QHBoxLayout* shutdownHeaderLayout = new QHBoxLayout(shutdownHeader);
QToolButton* shutdownButton = new QToolButton(this);
shutdownButton->setText(tr("Shut Down"));
shutdownHeaderLayout->addWidget(shutdownButton);
shutdownHeaderLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
connect(shutdownButton, &QToolButton::clicked, []()
{
if(DialogManager::Default()->requestAlertMessage(QString(tr("Shut down now ?")), DialogButtonMode::OkAndCancel,tr("Shut Down")) == QDialog::Accepted)
{
LOG_USER_OPERATION("Shut Down")
EventCenter::Default()->triggerEvent(GUIEvents::RequestShutdown, nullptr, nullptr);
}
});
//Scan Protocol
QWidget* scanProtocolHeader = new QWidget(this);
mLayout->addWidget(scanProtocolHeader);
QHBoxLayout* scanProtocalHeaderLayout = new QHBoxLayout(scanProtocolHeader);
QLabel* scanProtocolLabel = new QLabel(tr("Scan Protocol"), this);
scanProtocalHeaderLayout->addWidget(scanProtocolLabel);
scanProtocalHeaderLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
ListBox* scanProtocolButton = new ListBox(scanProtocolHeader);
scanProtocolButton->setText(tr(JsonObject::Instance()->defaultProtocal().toStdString().c_str()));
scanProtocalHeaderLayout->addWidget(scanProtocolButton);
scanProtocalHeaderLayout->addSpacerItem(new QSpacerItem(1220, 20, QSizePolicy::Fixed));
//Complete Notify
QWidget* scanCompleteHeader = new QWidget(this);
mLayout->addWidget(scanCompleteHeader);
QHBoxLayout* scanCompleteHeaderLayout = new QHBoxLayout(scanCompleteHeader);
auto scanCompleteButton = new ImageSwitch(this);
auto scanCompleteLabel = new QLabel(this);
scanCompleteLabel->setText(tr("Complete Notify"));
scanCompleteHeaderLayout->addWidget(scanCompleteLabel);
scanCompleteHeaderLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
scanCompleteHeaderLayout->addWidget(scanCompleteButton);
scanCompleteButton->setChecked(JsonObject::Instance()->getCompleteNotify());
scanCompleteHeaderLayout->addSpacerItem(new QSpacerItem(1220, 20, QSizePolicy::Fixed));
//Anonymous
QWidget* anonyHeader = new QWidget(this);
mLayout->addWidget(anonyHeader);
QHBoxLayout* anonyHeaderLayout = new QHBoxLayout(anonyHeader);
QLabel* anonyLabel = new QLabel(tr("Anonymous Mode"), this);
anonyHeaderLayout->addWidget(anonyLabel);
anonyHeaderLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
ImageSwitch* anonyButton = new ImageSwitch(anonyHeader);
anonyButton->setChecked(JsonObject::Instance()->getAnonymousMode());
anonyHeaderLayout->addWidget(anonyButton);
anonyHeaderLayout->addSpacerItem(new QSpacerItem(1220, 20, QSizePolicy::Fixed));
//Screen Saver
QWidget* screenSaverHeader = new QWidget(this);
mLayout->addWidget(screenSaverHeader);
QHBoxLayout* screenSaverHeaderLayout = new QHBoxLayout(screenSaverHeader);
QLabel* screenSaverLabel = new QLabel(tr("Screen Saver"), this);
screenSaverHeaderLayout->addWidget(screenSaverLabel);
screenSaverHeaderLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
ImageSwitch* screenSaverButton = new ImageSwitch(screenSaverHeader);
screenSaverButton->setChecked(JsonObject::Instance()->getScreenSaverMode());
screenSaverHeaderLayout->addWidget(screenSaverButton);
screenSaverHeaderLayout->addSpacerItem(new QSpacerItem(1220, 20, QSizePolicy::Fixed));
//DiskIcon
QWidget* diskHeader = new QWidget(this);
QWidget* diskContent = new QWidget(this);
QWidget* diskLabelContent = new QWidget(this);
mLayout->addWidget(diskHeader);
QVBoxLayout* diskHeaderLayout = new QVBoxLayout(diskHeader);
QHBoxLayout* diskContentLayout = new QHBoxLayout(diskContent);
QVBoxLayout* diskLabelContentLayout = new QVBoxLayout(diskLabelContent);
diskLabelContentLayout->addWidget(mDiskSizeLabel);
diskLabelContentLayout->addWidget(mDiskUsedLabel);
diskContentLayout->addWidget(mDiskIcon);
diskContentLayout->addWidget(diskLabelContent);
auto diskLabel = new QLabel(this);
diskLabel->setText(tr("Disk Storage"));
diskHeaderLayout->addWidget(diskLabel);
diskHeaderLayout->addWidget(diskContent);
mDiskInfoCaller = new QThread(this);
mDiskInfoWorker->moveToThread(mDiskInfoCaller);
connect(mDiskInfoWorker, &DiskInfoWorker::diskInfoBack, this, &GeneralForm::updateDiskInfo);
connect(mDiskInfoWorker, &DiskInfoWorker::diskInfoInit, this, &GeneralForm::initDiskInfo);
connect(mDiskInfoCaller, &QThread::finished, mDiskInfoWorker, &DiskInfoWorker::deleteLater);
mDiskInfoCaller->start();
QMetaObject::invokeMethod(mDiskInfoWorker, "initDiskInfo", Qt::QueuedConnection);
//...
mLayout->addSpacerItem(new QSpacerItem(20, 300, QSizePolicy::Minimum, QSizePolicy::Expanding));
//init
btnLan->setText(JsonObject::Instance()->defaultLanguage());
btnLan->setText(tr(JsonObject::Instance()->defaultLanguage().toStdString().c_str()));
instName->setText(JsonObject::Instance()->institutionName());
instAddr->setText(JsonObject::Instance()->institutionAddr());
lockTime->setText(toTimeString(JsonObject::Instance()->lockScreenTimeout().toInt()));
lockTime->setText(tr(JsonObject::Instance()->defaultLockScreenTime().toStdString().c_str()));
//connection
connect(instName, &QLineEdit::textChanged, [=](const QString& str)
{
@@ -129,30 +201,30 @@ GeneralForm::GeneralForm(QWidget* aParent)
connect(lockTime, &QToolButton::clicked, [=]()
{
//take effect
int second = JsonObject::Instance()->lockScreenTimeout().toInt();
DialogResult result = DialogManager::Default()->requestSelectTime(second);
//int second = JsonObject::Instance()->lockScreenTimeout().toInt();
DialogResult result = DialogManager::Default()->requestSelectLockScreenTime();
if (result.ResultCode == false)
{
return;
}
second = result.ResultData.toInt();
LOG_USER_OPERATION(QString("Set Screen Lock Time to %1 seconds").arg(second))
if(second == 0)
{
JsonObject::Instance()->setLockScreenTimeout(QString::number(second));
lockTime->setText(toTimeString(second));
Locker::getInstance()->setTimer(-1);
Locker::getInstance()->setIsEnable(false);
return;
}
//second = result.ResultData.toInt();
//LOG_USER_OPERATION(QString("Set Screen Lock Time to %1 seconds").arg(second))
// if(second == 0)
// {
// JsonObject::Instance()->setLockScreenTimeout(QString::number(second));
// lockTime->setText(toTimeString(second));
// Locker::getInstance()->setTimer(-1);
// Locker::getInstance()->setIsEnable(false);
// return;
// }
if (MINIMUM_LOCKTIME < second)
{
JsonObject::Instance()->setLockScreenTimeout(QString::number(second));
Locker::getInstance()->setTimer(second * 1000);
Locker::getInstance()->setIsEnable(true);
lockTime->setText(toTimeString(second));
}
// if (MINIMUM_LOCKTIME < second)
// {
// JsonObject::Instance()->setLockScreenTimeout(QString::number(second));
// Locker::getInstance()->setTimer(second * 1000);
// Locker::getInstance()->setIsEnable(true);
// lockTime->setText(toTimeString(second));
// }
});
@@ -166,7 +238,7 @@ GeneralForm::GeneralForm(QWidget* aParent)
//take effect
JsonObject::Instance()->setDefaultLanguage(language);
LanguageSwitcher::getInstance()->setDefaultLanguage(language);
btnLan->setText(JsonObject::Instance()->defaultLanguage());
btnLan->setText(tr(JsonObject::Instance()->defaultLanguage().toStdString().c_str()));
LOG_USER_OPERATION(QString("Change Language to %1").arg(language))
}
});
@@ -177,5 +249,95 @@ GeneralForm::GeneralForm(QWidget* aParent)
institutionNameLabel->setText(tr("Institution Addr"));
institutionAddressLabel->setText(tr("Institution Addr"));
lockScreenLabel->setText(tr("Lock Screen"));
scanProtocolLabel->setText(tr("Scan Protocol"));
scanCompleteLabel->setText(tr("Complete Notify"));
anonyLabel->setText(tr("Anonymous Mode"));
screenSaverLabel->setText(tr("Screen Saver"));
diskLabel->setText(tr("Disk Storage"));
anonyButton->setChecked(JsonObject::Instance()->getAnonymousMode());
scanProtocolButton->setText(tr(JsonObject::Instance()->defaultProtocal().toStdString().c_str()));
updateStorageSize();
updateStorageUsed();
});
connect(anonyButton, &ImageSwitch::clicked, [=]() {
JsonObject::Instance()->setAnonymousMode(anonyButton->getChecked());
EventCenter::Default()->triggerEvent(AnonymousModeChanged,this,nullptr);
});
connect(screenSaverButton, &ImageSwitch::clicked, [=]() {
JsonObject::Instance()->setScreenSaverMode(screenSaverButton->getChecked());
});
connect(scanProtocolButton, &QPushButton::clicked, [=]()
{
DialogResult result = DialogManager::Default()->requestSelectProtocal();
if (result.ResultCode == QDialog::Accepted)
{
QString pro = result.ResultData.toString();
//take effect
JsonObject::Instance()->setDefaultProtocal(pro);
scanProtocolButton->setText(tr(JsonObject::Instance()->defaultProtocal().toStdString().c_str()));
}
});
connect(scanCompleteButton, &ImageSwitch::clicked, [=]()
{
JsonObject::Instance()->setCompleteNotify(scanCompleteButton->getChecked());
});
}
GeneralForm::~GeneralForm()
{
mDiskInfoCaller->quit();
mDiskInfoCaller->wait();
mDiskInfoCaller->deleteLater();
}
void GeneralForm::initDiskInfo(bool aFlag, double aTotalSize, double aUsedSize)
{
mDiskSizeFlag = aFlag;
mDiskSize = aTotalSize;
mDiskUsedSize = aUsedSize;
mDiskUsedSizeFlag = aFlag;
updateStorageSize();
updateStorageUsed();
QMetaObject::invokeMethod(mDiskIcon, "startAnimation", Qt::DirectConnection);
}
void GeneralForm::updateDiskInfo(bool aFlag, double aUsedSize)
{
mDiskUsedSizeFlag = aFlag;
mDiskUsedSize = aUsedSize;
updateStorageUsed();
QMetaObject::invokeMethod(mDiskIcon, "startAnimation", Qt::DirectConnection);
}
void GeneralForm::updateStorageUsed()
{
if (mDiskUsedSizeFlag)
{
mDiskIcon->setValue(mDiskUsedSize);
mDiskUsedLabel->setText(tr("Used:\t%1G").arg(mDiskUsedSize));
}
else
{
mDiskUsedLabel->setText(tr("Get disk used size fail!"));
}
}
void GeneralForm::updateStorageSize()
{
if (mDiskSizeFlag)
{
mDiskIcon->setMaxValue(mDiskSize);
double aValue = JsonObject::Instance()->storageAlarmSize().toDouble();
mDiskIcon->setAlarmValue(aValue);
mDiskSizeLabel->setText(tr("Total:\t%1G").arg(mDiskSize));
}
else
{
mDiskSizeLabel->setText(tr("Get disk total size fail!"));
}
}

View File

@@ -4,6 +4,9 @@
#include <QWidget>
class QVBoxLayout;
class DiskInfoWorker;
class BatteryWidget;
class QLabel;
class GeneralForm : public QWidget
{
@@ -11,9 +14,27 @@ class GeneralForm : public QWidget
public:
explicit GeneralForm(QWidget* aParent = nullptr);
~GeneralForm();
private:
void updateStorageSize();
void updateStorageUsed();
void updateDiskInfo(bool aFlag, double aUsedSize);
void initDiskInfo(bool aFlag, double aTotalSize, double aUsedSize);
private:
QVBoxLayout* mLayout;
QThread* mDiskInfoCaller;
double mDiskSize;
double mDiskUsedSize;
bool mDiskSizeFlag;
bool mDiskUsedSizeFlag;
DiskInfoWorker* mDiskInfoWorker;
BatteryWidget* mDiskIcon;
QLabel* mDiskSizeLabel;
QLabel* mDiskUsedLabel;
};
#endif // GENERALFORM_H
#endif // GENERALFORM_H

View File

@@ -0,0 +1,28 @@
#include "HelpForm.h"
#include <QWebEngineView>
#include <QWebChannel>
#include <QWebEnginePage>
#include <QVBoxLayout>
#include <QWebEngineProfile>
HelpForm::HelpForm(QWidget* aParent)
: QWidget(aParent)
, mPdfWidget(new QWebEngineView(this))
{
init();
}
HelpForm::~HelpForm()
{
}
void HelpForm::init()
{
mPdfWidget->setUrl(QUrl("file:///home/sun/GUI/web/web/viewer.html?file=file:///home/sun/GUI/web/web/compressed.tracemonkey-pldi-09.pdf"));
QWebChannel * channel = new QWebChannel(this);
channel->registerObject(QStringLiteral("communicator"), new QObject(this));
mPdfWidget->page()->setWebChannel(channel);
QVBoxLayout* layout = new QVBoxLayout(this);
layout->addWidget(mPdfWidget);
}

View File

@@ -0,0 +1,23 @@
#ifndef HELPFORM_H
#define HELPFORM_H
#include <QWidget>
class QWebEngineView;
class HelpForm : public QWidget
{
Q_OBJECT
public:
explicit HelpForm(QWidget* aParent = nullptr);
~HelpForm();
private:
void init();
private:
QWebEngineView* mPdfWidget;
};
#endif // HELPFORM_H

View File

@@ -7,6 +7,7 @@
#include <QHBoxLayout>
#include <QStackedWidget>
#include <QStringListModel>
#include <QListWidgetItem>
#include <QListWidget>
#include "ui_TabFormWidget.h"
@@ -18,6 +19,8 @@
#include "json/jsonobject.h"
#include "AboutForm.h"
#include "UserOperationLogForm.h"
#include "SystemCorrectionForm.h"
#include "HelpForm.h"
SettingFormWidget::SettingFormWidget(QWidget* aParent, Qt::WindowFlags f)
: TabFormWidget(aParent)
@@ -30,7 +33,7 @@ SettingFormWidget::SettingFormWidget(QWidget* aParent, Qt::WindowFlags f)
widget->setObjectName("LeftBtnBar");
widget->setFixedWidth(250);
QStringList menus;
menus << tr("General") << tr("Account") << tr("System") << tr("About") << tr("Operation Log");
menus << tr("System Correction") << tr("Network Settings") << tr("General") << tr("Operation Log") << tr("Account") << tr("About") << tr("Help");
widget->addItems(menus);
widget->setSpacing(3);
for (int i = 0; i < menus.count(); ++i)
@@ -39,7 +42,7 @@ SettingFormWidget::SettingFormWidget(QWidget* aParent, Qt::WindowFlags f)
}
layout->addWidget(widget);
//reset visible for AnonymousMode
widget->item(4)->setHidden(JsonObject::Instance()->getAnonymousMode());
widget->item(3)->setHidden(JsonObject::Instance()->getAnonymousMode());
QStackedWidget* stackedWidget = new QStackedWidget(ui->contentWidget);
QWidget* spacerLine = new QWidget(this);
@@ -48,38 +51,51 @@ SettingFormWidget::SettingFormWidget(QWidget* aParent, Qt::WindowFlags f)
layout->addWidget(stackedWidget);
ui->commandWidget->hide();
GeneralForm* generalForm = new GeneralForm(ui->commandWidget);
stackedWidget->addWidget(generalForm);
AccountTableForm* acc = new AccountTableForm(ui->commandWidget);
stackedWidget->addWidget(acc);
SystemCorrectionForm* systemCorrectionForm = new SystemCorrectionForm(ui->commandWidget);
stackedWidget->addWidget(systemCorrectionForm);
SystemSettingForm* systemSetting = new SystemSettingForm(ui->commandWidget);
stackedWidget->addWidget(systemSetting);
AboutForm* about = new AboutForm(ui->commandWidget);
stackedWidget->addWidget(about);
GeneralForm* generalForm = new GeneralForm(ui->commandWidget);
stackedWidget->addWidget(generalForm);
UserOperationLogForm* operationLog = new UserOperationLogForm(ui->commandWidget);
stackedWidget->addWidget(operationLog);
AccountTableForm* acc = new AccountTableForm(ui->commandWidget);
stackedWidget->addWidget(acc);
AboutForm* about = new AboutForm(ui->commandWidget);
stackedWidget->addWidget(about);
//HelpForm* help = new HelpForm(ui->commandWidget);
//stackedWidget->addWidget(help);
widget->setCurrentRow(0);
connect(widget, &QListWidget::currentRowChanged, [=](int rowindex) {
connect(widget, &QListWidget::currentRowChanged, [=](int rowindex)
{
if(widget->item(rowindex)->text() == tr("Help") && stackedWidget->widget(rowindex) == nullptr)
{
stackedWidget->addWidget(new HelpForm(ui->commandWidget));
}
stackedWidget->setCurrentIndex(rowindex);
});
connect(EventCenter::Default(), &EventCenter::AnonymousModeChanged, [=]() {
widget->item(4)->setHidden(JsonObject::Instance()->getAnonymousMode());
});
connect(EventCenter::Default(), &EventCenter::ReloadLanguage, [=]() {
connect(EventCenter::Default(), &EventCenter::AnonymousModeChanged, [=]()
{
widget->item(3)->setHidden(JsonObject::Instance()->getAnonymousMode());
});
connect(EventCenter::Default(), &EventCenter::ReloadLanguage, [=]()
{
QStringList menus;
menus << tr("General") << tr("Account") << tr("System") << tr("About") << tr("Operation Log");
menus << tr("System Correction") << tr("Network Settings") << tr("General") << tr("Operation Log") << tr("Account") << tr("About") << tr("Help") ;
widget->clear();
widget->addItems(menus);
for (int i = 0; i < menus.count(); ++i)
{
widget->item(i)->setTextAlignment(Qt::AlignCenter);
}
});
});
}
SettingFormWidget::~SettingFormWidget()

View File

@@ -0,0 +1,99 @@
#include "SystemCorrectionForm.h"
#include "db/SQLHelper.h"
#include "event/EventCenter.h"
#include <QVBoxLayout>
#include <QLabel>
#include <QDate>
#include <QSpacerItem>
#include <QPushButton>
SystemCorrectionForm::SystemCorrectionForm(QWidget* aParent)
: QWidget(aParent)
{
setObjectName("SystemCorrectionForm");
init();
}
SystemCorrectionForm::~SystemCorrectionForm()
{
}
void SystemCorrectionForm::init()
{
QVBoxLayout* vboxLayout = new QVBoxLayout(this);
QLabel* title = new QLabel(this);
title->setObjectName("SystemCorrectionTitle");
title->setAlignment(Qt::AlignLeft);
title->setText(tr("Scan Preparation"));
vboxLayout->addWidget(title);
QLabel* endline = new QLabel(this);
endline->setObjectName("endline");
endline->setFixedHeight(3);
vboxLayout->addWidget(endline);
QLabel* emptyScanTitle = new QLabel(this);
emptyScanTitle->setObjectName("EmptyScanTitle");
emptyScanTitle->setText(tr("Empty Scan"));
emptyScanTitle->setAlignment(Qt::AlignCenter);
vboxLayout->addWidget(emptyScanTitle);
QLabel* emptyScanDescribe = new QLabel(this);
emptyScanDescribe->setWordWrap(true);
emptyScanDescribe->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
emptyScanDescribe->setText(tr("Empty water scanning involves collecting ultrasound data while the tank is filled with water and free of any objects. It is essential to ensure that the tank is fully filled with water and devoid of any objects before conducting the scan. The purpose of collecting empty water data is to obtain baseline information on the time and energy variations of ultrasound propagation inside the inspection tank. This information is utilized for reconstructing reference data for transmission ultrasound imaging. Additionally, empty water data can be utilized for system status assessment and spatial calibration of the system. Therefore, empty water scanning should be performed regularly, with a frequency of once every month."));
vboxLayout->addWidget(emptyScanDescribe);
endline = new QLabel(this);
endline->setObjectName("endline");
endline->setFixedHeight(3);
vboxLayout->addWidget(endline);
QLabel* currentEmptyScanDate = new QLabel(this);
QDate lastScanDate = SQLHelper::queryValue("SELECT ScanDateTime FROM EScan ORDER BY ScanDateTime DESC LIMIT 1").toDate();
currentEmptyScanDate->setText(tr("Current date for Empty Scanning %1-%2-%3").arg(lastScanDate.year()).arg(lastScanDate.month()).arg(lastScanDate.day()));
vboxLayout->addWidget(currentEmptyScanDate);
QLabel* expirationEmptyScanDate = new QLabel(this);
QDate expirationScanDate = lastScanDate.addMonths(1);
QDate currentDate = QDate::currentDate();
QString dateText = tr("%1-%2-%3").arg(expirationScanDate.year()).arg(expirationScanDate.month()).arg(expirationScanDate.day());;
QString dateFormat = currentDate.daysTo(expirationScanDate) < 3 ? QString("<font color='red'>&nbsp;&nbsp;&nbsp;%1</font>").arg(dateText) : QString(" %1").arg(dateText);
expirationEmptyScanDate->setText(tr("Expiration date for Empty Scanning %1").arg(dateFormat));
vboxLayout->addWidget(expirationEmptyScanDate);
QWidget* emptyScanButtonArea = new QWidget(this);
QHBoxLayout* emptyScanButtonLayout = new QHBoxLayout(emptyScanButtonArea);
QPushButton* emptyScanButton = new QPushButton(this);
emptyScanButton->setText(tr("Excute empty scan"));
emptyScanButton->setFixedWidth(250);
emptyScanButtonLayout->addWidget(emptyScanButton);
emptyScanButtonLayout->addItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
vboxLayout->addWidget(emptyScanButtonArea);
endline = new QLabel(this);
endline->setObjectName("endline");
endline->setFixedHeight(3);
vboxLayout->addWidget(endline);
vboxLayout->addItem(new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Expanding));
connect(EventCenter::Default(), &EventCenter::ReloadLanguage, [=]()
{
title->setText(tr("Scan Preparation"));
emptyScanTitle->setText(tr("Empty Scan"));
emptyScanDescribe->setText(tr("Empty water scanning involves collecting ultrasound data while the tank is filled with water and free of any objects. It is essential to ensure that the tank is fully filled with water and devoid of any objects before conducting the scan. The purpose of collecting empty water data is to obtain baseline information on the time and energy variations of ultrasound propagation inside the inspection tank. This information is utilized for reconstructing reference data for transmission ultrasound imaging. Additionally, empty water data can be utilized for system status assessment and spatial calibration of the system. Therefore, empty water scanning should be performed regularly, with a frequency of once every month."));
currentEmptyScanDate->setText(tr("Current date for Empty Scanning %1-%2-%3").arg(lastScanDate.year()).arg(lastScanDate.month()).arg(lastScanDate.day()));
expirationEmptyScanDate->setText(tr("Expiration date for Empty Scanning %1").arg(dateFormat));
});
connect(emptyScanButton, &QPushButton::clicked, []()
{
QString null;
EventCenter::Default()->triggerEvent(RequestEmptyScan, nullptr, (QObject*)&null);
});
}

View File

@@ -0,0 +1,18 @@
#ifndef SYSTEMCORRECTIONFORM_H
#define SYSTEMCORRECTIONFORM_H
#include <QWidget>
class SystemCorrectionForm : public QWidget
{
Q_OBJECT
public:
explicit SystemCorrectionForm(QWidget* aParent = nullptr);
~SystemCorrectionForm();
private:
void init();
};
#endif // SYSTEMCORRECTIONFORM_H

View File

@@ -13,137 +13,93 @@
#include "recon/ReconManager.h"
#include "json/cmdhelper.h"
#include "components/ListBox.h"
#include "components/ImageSwitch.h"
SystemSettingForm::SystemSettingForm(QWidget* parent)
: QWidget(parent)
, mUI(new Ui::SystemSettingForm)
, mDiskInfoCaller(nullptr)
, mDiskSize(0)
, mDiskUsedSize(0)
, mDiskSizeFlag(false)
, mDiskUsedSizeFlag(false)
{
mUI->setupUi(this);
mUI->lbl_size->setText(tr("Loading..."));
mUI->lbl_used->setText(tr("Loading..."));
//style init
mUI->btnDICOM->setObjectName("btnDICOM");
//mUI->btnDICOM->setObjectName("btnDICOM");
mUI->mWorklistButton->setObjectName("worklistSettingsButton");
mUI->mPacsButton->setObjectName("pacsSettingsButton");
mUI->mReconButton->setObjectName("reconSettingsButton");
mUI->mMppsButton->setObjectName("mppsSettingsButton");
mUI->btnNetwork->setObjectName("btnNetwork");
mUI->AnonyButton->setChecked(JsonObject::Instance()->getAnonymousMode());
// mUI->lbl_verify->setFixedWidth(100);
mUI->mWorklistButton->setMaximumWidth(200);
mUI->mPacsButton->setMaximumWidth(200);
mUI->mReconButton->setMaximumWidth(200);
mUI->mMppsButton->setMaximumWidth(200);
mUI->btnNetwork->setMaximumWidth(200);
//data init
mUI->btnPro->setText(JsonObject::Instance()->defaultProtocal());
mUI->btnPro->setObjectName("ListBox");
mUI->btnFlt->setText(JsonObject::Instance()->defaultFilter());
mUI->btnFlt->setObjectName("ListBox");
// mUI->btnFlt->setText(JsonObject::Instance()->defaultFilter());
// mUI->btnFlt->setObjectName("ListBox");
QGridLayout* gridLayout = (QGridLayout*)mUI->block10->layout();
auto scanConfirmButton = new ImageSwitch(this);
auto scanConfirmLabel = new QLabel(this);
scanConfirmLabel->setText("Scan Confirm");
gridLayout->addWidget(scanConfirmButton, 4, 2, 1, 1);
gridLayout->addWidget(scanConfirmLabel, 4, 0, 1, 1);
scanConfirmButton->setChecked(JsonObject::Instance()->getScanConfirm());
QFrame* line5 = new QFrame(this);
line5->setFrameShape(QFrame::HLine);
line5->setFrameShadow(QFrame::Sunken);
gridLayout->addWidget(line5, 5, 0);
auto scanCompleteButton = new ImageSwitch(this);
auto scanCompleteLabel = new QLabel(this);
scanCompleteLabel->setText("Complete Notify");
gridLayout->addWidget(scanCompleteButton, 6, 2, 1, 1);
gridLayout->addWidget(scanCompleteLabel, 6, 0, 1, 1);
scanCompleteButton->setChecked(JsonObject::Instance()->getCompleteNotify());
QFrame* line6 = new QFrame(this);
line6->setFrameShape(QFrame::HLine);
line6->setFrameShadow(QFrame::Sunken);
gridLayout->addWidget(line6, 7, 0);
mDiskInfoCaller = QThread::create([=]()
connect(mUI->btnNetwork, &QToolButton::clicked, [=]()
{
double disksize = 0;
mDiskSizeFlag = cmdHelper::Instance()->getDiskSize(disksize);
mDiskSize = disksize;
updateStorageSize();
while (true)
{
double duse = 0;
mDiskUsedSizeFlag = cmdHelper::Instance()->getDiskUsed(duse);
mDiskUsedSize = duse;
updateStorageUsed();
QMetaObject::invokeMethod(mUI->batIcon, "startAnimation", Qt::QueuedConnection);
QThread::msleep(30000);
}
});
mDiskInfoCaller->start();
//connection
connect(mUI->AnonyButton, &ImageSwitch::clicked, [=]() {
JsonObject::Instance()->setAnonymousMode(mUI->AnonyButton->getChecked());
EventCenter::Default()->triggerEvent(AnonymousModeChanged,this,nullptr);
});
connect(scanConfirmButton, &ImageSwitch::clicked, [=]() {
JsonObject::Instance()->setScanConfirm(scanConfirmButton->getChecked());
});
connect(scanCompleteButton, &ImageSwitch::clicked, [=]() {
JsonObject::Instance()->setCompleteNotify(scanCompleteButton->getChecked());
});
connect(mUI->btnNetwork, &QToolButton::clicked, [=]() {
auto result = DialogManager::Default()->requestInputAdminPasswd();
if (result.ResultCode == QDialog::Accepted)
{
JsonObject::Instance()->setPassword(result.ResultData.toString());
DialogManager::Default()->requestEditNetworkConfig();
}
// auto result = DialogManager::Default()->requestInputAdminPasswd();
// if (result.ResultCode == QDialog::Accepted)
// {
// JsonObject::Instance()->setPassword(result.ResultData.toString());
// DialogManager::Default()->requestEditNetworkConfig();
// }
DialogManager::Default()->requestEditNetworkConfig();
});
connect(mUI->btnDICOM, &QToolButton::clicked, [&]() {
if(DialogManager::Default()->requestEditDicomConfig() == QDialog::Accepted)
connect(mUI->mWorklistButton, &QToolButton::clicked, [&]()
{
DialogManager::Default()->requestWorklistSettings();
});
connect(mUI->mPacsButton, &QToolButton::clicked, [&]()
{
if(DialogManager::Default()->requestPacsSettings() == QDialog::Accepted)
{
auto server = JsonObject::Instance()->getServer(JsonObject::PACS);
emit pacsSettingsSaved(server.name, server.ae, server.ip, server.port.toInt());
}
});
connect(mUI->btnPro, &QPushButton::clicked, [=]()
connect(mUI->mReconButton, &QToolButton::clicked, [&]()
{
DialogResult result = DialogManager::Default()->requestSelectProtocal();
if (result.ResultCode == QDialog::Accepted)
{
QString pro = result.ResultData.toString();
//take effect
JsonObject::Instance()->setDefaultProtocal(pro);
mUI->btnPro->setText(JsonObject::Instance()->defaultProtocal());
}
DialogManager::Default()->requestReconSettings();
});
connect(mUI->btnFlt, &QPushButton::clicked, [=]()
connect(mUI->mMppsButton, &QToolButton::clicked, [&]()
{
DialogResult result = DialogManager::Default()->requestSelectFilter();
if (result.ResultCode == QDialog::Accepted)
{
QString flt = result.ResultData.toString();
//take effect
JsonObject::Instance()->setDefaultFilter(flt);
mUI->btnFlt->setText(JsonObject::Instance()->defaultFilter());
}
DialogManager::Default()->requestMppsSettings();
});
connect(EventCenter::Default(), &EventCenter::ReloadLanguage, [=]()
{
mUI->retranslateUi(this);
mUI->btnPro->setText(JsonObject::Instance()->defaultProtocal());
mUI->btnFlt->setText(JsonObject::Instance()->defaultFilter());
mUI->AnonyButton->setChecked(JsonObject::Instance()->getAnonymousMode());
updateStorageSize();
updateStorageUsed();
});
// connect(mUI->btnDICOM, &QToolButton::clicked, [&]() {
// if(DialogManager::Default()->requestEditDicomConfig() == QDialog::Accepted)
// {
// auto server = JsonObject::Instance()->getServer(JsonObject::PACS);
// emit pacsSettingsSaved(server.name, server.ae, server.ip, server.port.toInt());
// }
// });
// connect(mUI->btnFlt, &QPushButton::clicked, [=]()
// {
// DialogResult result = DialogManager::Default()->requestSelectFilter();
// if (result.ResultCode == QDialog::Accepted)
// {
// QString flt = result.ResultData.toString();
// //take effect
// JsonObject::Instance()->setDefaultFilter(flt);
// mUI->btnFlt->setText(JsonObject::Instance()->defaultFilter());
// }
// });
// connect(EventCenter::Default(), &EventCenter::ReloadLanguage, [=]()
// {
// mUI->retranslateUi(this);
// mUI->btnFlt->setText(JsonObject::Instance()->defaultFilter());
// });
connect(ReconManager::getInstance(), &ReconManager::setPacsSettingsResponsed, this, &SystemSettingForm::processPacsSettingsResponsed);
connect(this, &SystemSettingForm::pacsSettingsSaved, ReconManager::getInstance(), &ReconManager::setPacsSettings, Qt::QueuedConnection);
@@ -152,37 +108,7 @@ SystemSettingForm::SystemSettingForm(QWidget* parent)
SystemSettingForm::~SystemSettingForm()
{
delete mDiskInfoCaller;
}
void SystemSettingForm::updateStorageUsed()
{
if (mDiskUsedSizeFlag)
{
mUI->batIcon->setValue(mDiskUsedSize);
mUI->lbl_used->setText(tr("used:\t%1G").arg(mDiskUsedSize));
}
else
{
mUI->lbl_used->setText(tr("Get disk used size fail!"));
}
}
void SystemSettingForm::updateStorageSize()
{
//bool flag = AppGlobalValues::StorageFlag();
if (mDiskSizeFlag)
{
//double total_size = AppGlobalValues::StorageSize();
mUI->batIcon->setMaxValue(mDiskSize);
double aValue = JsonObject::Instance()->storageAlarmSize().toDouble();/*(mDiskSize - JsonObject::Instance()->storageAlarmSize().toDouble()) / mDiskSize;*/
mUI->batIcon->setAlarmValue(aValue);
mUI->lbl_size->setText(tr("total:\t%1G").arg(mDiskSize));
}
else
{
mUI->lbl_size->setText(tr("Get disk total size fail!"));
}
}
void SystemSettingForm::processPacsSettingsResponsed(bool aResult, const QVariant& aMessage)

View File

@@ -8,6 +8,8 @@ namespace Ui
class SystemSettingForm;
}
class DiskInfoWorker;
class SystemSettingForm : public QWidget
{
Q_OBJECT
@@ -23,16 +25,7 @@ private slots:
void processPacsSettingsResponsed(bool aResult, const QVariant& aMessage);
private:
void updateStorageSize();
void updateStorageUsed();
Ui::SystemSettingForm* mUI;
QThread* mDiskInfoCaller;
double mDiskSize;
double mDiskUsedSize;
bool mDiskSizeFlag;
bool mDiskUsedSizeFlag;
};
#endif // SYSTEMSETTINGFORM_H

View File

@@ -20,134 +20,6 @@
<item>
<widget class="QWidget" name="widget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QWidget" name="widget_2" native="true">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QWidget" name="block10" native="true">
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="lbl_protocal">
<property name="text">
<string>Protocal</string>
</property>
</widget>
</item>
<item row="2" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="Line" name="line_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="lbl_verify">
<property name="text">
<string>Anonymous Mode</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="ImageSwitch" name="AnonyButton" >
</widget>
</item>
<item row="3" column="0">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="0" column="1">
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="3">
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="2">
<widget class="ListBox" name="btnPro">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_4" native="true">
<layout class="QVBoxLayout" name="verticalLayout_4">
@@ -170,122 +42,65 @@
</item>
<item>
<widget class="QWidget" name="widget_3" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="lbl_filter">
<property name="text">
<string>Worklist Filter</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="ListBox" name="btnFlt">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
<layout class="QHBoxLayout" name="horizontalLayout_2"/>
</widget>
</item>
<item>
<widget class="QToolButton" name="btnDICOM">
<widget class="QToolButton" name="mReconButton">
<property name="contextMenuPolicy">
<enum>Qt::NoContextMenu</enum>
</property>
<property name="text">
<string>DICOM</string>
<string>Recon Settings</string>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextBesideIcon</enum>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Disk Storage</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_5" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="BatteryWidget" name="batIcon" native="true"/>
</item>
<item>
<widget class="QWidget" name="widget_6" native="true">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="lbl_size">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_used">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
<layout class="QHBoxLayout" name="horizontalLayout_3"/>
</widget>
</item>
<item>
<widget class="QToolButton" name="mWorklistButton">
<property name="text">
<string>Worklist Settings</string>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextBesideIcon</enum>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_6" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_4"/>
</widget>
</item>
<item>
<widget class="QToolButton" name="mPacsButton">
<property name="text">
<string>Pacs Settings</string>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextBesideIcon</enum>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_7" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_5"/>
</widget>
</item>
<item>
<widget class="QToolButton" name="mMppsButton">
<property name="text">
<string>Mpps Settings</string>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextBesideIcon</enum>
</property>
</widget>
</item>
<item>
@@ -316,26 +131,6 @@
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>ImageSwitch</class>
<extends>QWidget</extends>
<header location="global">components/ImageSwitch.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>BatteryWidget</class>
<extends>QWidget</extends>
<header location="global">components/BatteryWidget.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>ListBox</class>
<extends>QToolButton</extends>
<header location="global">components/ListBox.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>