Files
GUI/src/forms/settings/SystemSettingForm.cpp
2023-08-24 15:11:18 +08:00

193 lines
6.5 KiB
C++

#include "SystemSettingForm.h"
#include "ui_SystemSettingForm.h"
#include <QPushButton>
#include <QToolButton>
#include <QGridLayout>
#include <QThread>
#include "dialogs/DialogManager.h"
#include "dialogs/MultyMessageDialogManager.h"
#include "json/jsonobject.h"
#include "event/EventCenter.h"
#include "recon/ReconManager.h"
#include "json/cmdhelper.h"
#include "components/ListBox.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->btnNetwork->setObjectName("btnNetwork");
mUI->swt_verify->setChecked(true);
mUI->lbl_verify->setFixedWidth(100);
//data init
mUI->btnPro->setText(JsonObject::Instance()->defaultProtocal());
mUI->btnPro->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([=]()
{
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->swt_verify, &ImageSwitch::clicked, [=]() {
if (mUI->swt_verify->getChecked())
{
////
}
});
connect(scanConfirmButton, &ImageSwitch::clicked, [=]() {
JsonObject::Instance()->setScanConfirm(scanConfirmButton->getChecked());
});
connect(scanCompleteButton, &ImageSwitch::clicked, [=]() {
JsonObject::Instance()->setCompleteNotify(scanCompleteButton->getChecked());
});
connect(mUI->btnNetwork, &QToolButton::clicked, [=]() {
if (DialogManager::Default()->requestInputAdminPasswd() == QDialog::Accepted)
{
//JsonObject::Instance()->setPassword(dialog.getPsw());
DialogManager::Default()->requestEditNetworkConfig();
}
});
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->btnPro, &QPushButton::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());
}
});
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->btnPro->setText(JsonObject::Instance()->defaultProtocal());
mUI->btnFlt->setText(JsonObject::Instance()->defaultFilter());
mUI->swt_verify->setChecked(true);
updateStorageSize();
updateStorageUsed();
});
connect(ReconManager::getInstance(), &ReconManager::setPacsSettingsResponsed, this, &SystemSettingForm::processPacsSettingsResponsed);
connect(this, &SystemSettingForm::pacsSettingsSaved, ReconManager::getInstance(), &ReconManager::setPacsSettings, Qt::QueuedConnection);
}
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 = (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)
{
MultyMessageDialogManager::getInstance()->raiseDialog(aMessage.toString(), aResult ? MessageLevel::Sucess : MessageLevel::Error);
}