From 64bac0e9600e7b1a83e1bc1ad4ec330903a7905d Mon Sep 17 00:00:00 2001 From: kradchen Date: Fri, 8 Sep 2023 10:20:10 +0800 Subject: [PATCH] Add turnoff button to login dialog --- src/forms/settings/AboutForm.cpp | 18 +++++++++--------- src/icons/turnoff.png | Bin 0 -> 7854 bytes src/res.qrc | 1 + src/stylesheet/Dark2.css | 15 +++++++++++++++ src/windows/LoginDialog.cpp | 18 +++++++++++++++++- src/windows/LoginDialog.h | 1 + 6 files changed, 43 insertions(+), 10 deletions(-) create mode 100644 src/icons/turnoff.png diff --git a/src/forms/settings/AboutForm.cpp b/src/forms/settings/AboutForm.cpp index bf1650b..f0b1eb3 100644 --- a/src/forms/settings/AboutForm.cpp +++ b/src/forms/settings/AboutForm.cpp @@ -46,7 +46,7 @@ void AboutForm::initUiWidget() QLabel* pProductVer; QPushButton* pBtnHelp; QLabel* pCompanyCopyRight; - QLabel* pGuiVer; + QLabel* pMainVer; QLabel* pEmbededSoftVer; QLabel* pFEBVer; QLabel* pQtVer; @@ -90,12 +90,12 @@ void AboutForm::initUiWidget() pMainLayout->addSpacing(subContentSpacing); - pGuiVer = new QLabel(this); - pGuiVer->setText(QString(tr("GUI Software V%1")).arg(getGUIVersion())); - pMainLayout->addWidget(pGuiVer); + pMainVer = new QLabel(this); + pMainVer->setText(QString(tr("USCT Software V0.1.0"))); + pMainLayout->addWidget(pMainVer); pEmbededSoftVer = new QLabel(this); - pEmbededSoftVer->setText(tr("Embedded Software %1").arg(getEmbVersion())); + pEmbededSoftVer->setText(DeviceManager::Default()->getSoftwareVersion()); pMainLayout->addWidget(pEmbededSoftVer); @@ -104,7 +104,7 @@ void AboutForm::initUiWidget() pMainLayout->addSpacing(subContentSpacing); pFEBVer = new QLabel(this); - pFEBVer->setText(tr("FEB Information")); + pFEBVer->setText(QString(tr("GUI Software V%1")).arg(getGUIVersion())); pMainLayout->addWidget(pFEBVer); pMainLayout->addSpacing(subContentSpacing); @@ -113,12 +113,12 @@ void AboutForm::initUiWidget() pMainLayout->addSpacing(subContentSpacing); pSUSEVer = new QLabel(this); - pSUSEVer->setText(tr("Loading...")); + pSUSEVer->setText(tr("Operation System Information Loading...")); pMainLayout->addWidget(pSUSEVer); pMainLayout->addSpacing(subContentSpacing); pDcmtkVer = new QLabel(this); - pDcmtkVer->setText(tr("Loading...")); + pDcmtkVer->setText(tr("DICOM Library Information Loading...")); pMainLayout->addWidget(pDcmtkVer); pDcmtkCopyright = new QLabel(this); pDcmtkCopyright->setObjectName("normal"); @@ -151,7 +151,7 @@ void AboutForm::initUiWidget() pProductVer->setText(tr("HJ-USCT-01 V1.0")); pBtnHelp->setText(tr("?")); pCompanyCopyRight->setText(tr("Copyright © 2017-2020 Zhejiang Equilibrium Nine Medical Equipment Co., Ltd. All Rights Reversed")); - pGuiVer->setText(QString(tr("GUI Software V%1")).arg(getGUIVersion())); + pMainVer->setText(QString(tr("GUI Software V%1")).arg(getGUIVersion())); pEmbededSoftVer->setText(tr("Embedded Software %1").arg(getEmbVersion())); mReconSotfVer->setText(tr("Reconstruction Software V1.2")); pFEBVer->setText(tr("FEB Information")); diff --git a/src/icons/turnoff.png b/src/icons/turnoff.png new file mode 100644 index 0000000000000000000000000000000000000000..34a99b429f88da6de9fb1ec9e2b7b3730b16e314 GIT binary patch literal 7854 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�c+3mA`rNdT}fhduU- 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 QU;`S^*EL30={UvyAFVwC;{X5v literal 0 HcmV?d00001 diff --git a/src/res.qrc b/src/res.qrc index 9fb4bc1..787958f 100644 --- a/src/res.qrc +++ b/src/res.qrc @@ -57,5 +57,6 @@ icons/query.png icons/radio_check.png icons/radio_uncheck.png + icons/turnoff.png diff --git a/src/stylesheet/Dark2.css b/src/stylesheet/Dark2.css index f82fd9c..ad3441b 100644 --- a/src/stylesheet/Dark2.css +++ b/src/stylesheet/Dark2.css @@ -260,6 +260,11 @@ QFrame#loginFrame { stop: 1.0 darkgray); } +QFrame#TurnoffFrame { + max-height: 100px; + min-height: 100px; +} + QDialog#loginForm { background-color: #3c3c3c; color: white; @@ -307,6 +312,16 @@ QDialog#loginForm QToolButton#btnlogin { QDialog#loginForm QToolButton#btnlogin:hover { background: #505050; } +QToolButton#TurnoffBtn { + border: 1px solid #0078d8; + min-height:80px; + max-height:80px; + min-width:80px; + max-width:80px; + qproperty-icon:url(":/icons/turnoff.png"); + qproperty-iconSize:60px 60px; + qproperty-toolButtonStyle:ToolButtonIconOnly; +} /*------MainWindow------------------------------------------------------------------*/ diff --git a/src/windows/LoginDialog.cpp b/src/windows/LoginDialog.cpp index ec22bd8..501dd42 100644 --- a/src/windows/LoginDialog.cpp +++ b/src/windows/LoginDialog.cpp @@ -7,6 +7,7 @@ #include #include "event/EventCenter.h" +#include "dialogs/DialogManager.h" #include "models/User.h" #include "log/UserOperationLog.h" #include "json/jsonobject.h" @@ -17,6 +18,7 @@ LoginDialog::LoginDialog(QWidget* aParent) , mVMainLayout(new QVBoxLayout(this)) , mDialogTitle(new QLabel(this)) , mDialogFrame(new QFrame(this)) + , mTurnoffFrame(new QFrame(this)) , mDialogContentsLayout(new QVBoxLayout(mDialogFrame)) , mAccountEdit(new ULineEdit(mDialogFrame)) , mPasswordEdit(new ULineEdit(mDialogFrame)) @@ -55,7 +57,21 @@ void LoginDialog::initializeLayout() mVMainLayout->addWidget(mDialogTitle, 0, Qt::AlignCenter); mVMainLayout->addWidget(mDialogFrame, 0, Qt::AlignCenter); mVMainLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding)); - + mTurnoffFrame->setObjectName("TurnoffFrame"); + mVMainLayout->addWidget(mTurnoffFrame, 0, Qt::AlignRight); + QHBoxLayout * hLayout = new QHBoxLayout(mTurnoffFrame); + hLayout->setDirection(QBoxLayout::RightToLeft); + QToolButton * turnOffBtn = new QToolButton(mTurnoffFrame); + turnOffBtn->setObjectName("TurnoffBtn"); + hLayout->addWidget(turnOffBtn); + connect(turnOffBtn, &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); + } + }); mDialogContentsLayout->setSpacing(30); mDialogContentsLayout->setContentsMargins(20, 60, 20, 20); } diff --git a/src/windows/LoginDialog.h b/src/windows/LoginDialog.h index 5fc765b..dc48ac2 100644 --- a/src/windows/LoginDialog.h +++ b/src/windows/LoginDialog.h @@ -47,6 +47,7 @@ private: QVBoxLayout* mVMainLayout; QLabel* mDialogTitle; QFrame* mDialogFrame; + QFrame* mTurnoffFrame; QVBoxLayout* mDialogContentsLayout; ULineEdit* mAccountEdit; ULineEdit* mPasswordEdit;