From 30df175f22e937edc436e3896ebf96ab994accee Mon Sep 17 00:00:00 2001 From: sunwen Date: Wed, 10 Aug 2022 15:28:59 +0800 Subject: [PATCH] Refactoring the new dialog manager module and fixed keyboard problem in Linux touch panel. --- src/ShimLib/ShimLib.c | 2 +- src/ShimLib/ShimLib.h | 2 +- src/UsctApplication.cpp | 6 + src/device/DeviceManager.cpp | 11 + src/device/DeviceManager.h | 2 + src/dialogs/AccountFormDialog.cpp | 15 +- src/dialogs/DialogManager.cpp | 307 +++++++++++++++++++---- src/dialogs/DialogManager.h | 55 +++- src/dialogs/EditPatientDialog.cpp | 10 +- src/dialogs/GUIFormBaseDialog.h | 2 +- src/dialogs/GUIMessageDialog.cpp | 15 +- src/dialogs/GUIMessageDialog.h | 2 + src/dialogs/GUIMessageDialog.ui | 156 ++++++------ src/dialogs/MultyMessageDialog.cpp | 2 +- src/event/EventCenter.h | 3 +- src/forms/select/SelectFormWidget.cpp | 30 +-- src/forms/settings/AccountTableForm.cpp | 12 +- src/forms/settings/GeneralForm.cpp | 12 +- src/forms/settings/GeneralForm.h | 2 - src/forms/settings/SystemSettingForm.cpp | 36 +-- src/forms/settings/SystemSettingForm.h | 5 - src/keyboard/HandWriteWidget.cpp | 10 + src/network/NetworkCfgDialog.cpp | 46 ++-- src/network/NetworkCfgDialog.h | 2 - src/stylesheet/Dark2.css | 8 +- src/windows/LoginDialog.cpp | 22 +- src/windows/MainWindow.cpp | 11 +- src/windows/MainWindow.h | 2 +- 28 files changed, 485 insertions(+), 303 deletions(-) diff --git a/src/ShimLib/ShimLib.c b/src/ShimLib/ShimLib.c index 98918bc..17bfc9c 100644 --- a/src/ShimLib/ShimLib.c +++ b/src/ShimLib/ShimLib.c @@ -17,7 +17,7 @@ typedef void(*error_cb)(const char* msg); // level:0 infomation,1 warning,2 error,3 sucessed -typedef void(*message_callback)(const char* msg, unsigned int level); +typedef void(*message_callback)(const char* aMessage,const unsigned int aInfoType); int statusCountFlag = 0; error_cb innerCallback = NULL; diff --git a/src/ShimLib/ShimLib.h b/src/ShimLib/ShimLib.h index 8057bc9..24b177f 100644 --- a/src/ShimLib/ShimLib.h +++ b/src/ShimLib/ShimLib.h @@ -37,7 +37,7 @@ typedef enum { extern int InitLib(void(*)(const char *msg)); -extern void SetMessageCallback(void(*)(const char* msg,unsigned int level)); +extern void SetMessageCallback(void(*)(const char* aMessage,const unsigned int aInfoType)); extern int ScanControl(ScanAction actionType); diff --git a/src/UsctApplication.cpp b/src/UsctApplication.cpp index d412efd..a7b59ed 100644 --- a/src/UsctApplication.cpp +++ b/src/UsctApplication.cpp @@ -1,5 +1,6 @@ #include "UsctApplication.h" #include "utilities/TouchScreenSignalSender.h" +#include "dialogs/DialogManager.h" UsctApplication::UsctApplication(int& argc, char** argv) : QApplication(argc, argv) @@ -17,6 +18,11 @@ bool UsctApplication::notify(QObject* aReceiver, QEvent* aEvent) { TouchScreenSignalSender::getInstance()->sendTouchScreenSignal(); } + else if (aEvent->type() == QEvent::TouchCancel) + { + DialogManager::Default()->setFocusToTopDialog(); + } + return QApplication::notify(aReceiver, aEvent); } diff --git a/src/device/DeviceManager.cpp b/src/device/DeviceManager.cpp index f4afc2b..5c98f7c 100644 --- a/src/device/DeviceManager.cpp +++ b/src/device/DeviceManager.cpp @@ -51,12 +51,18 @@ void errorCallback(const char* msg) DeviceManager::Default()->emitErrorCallback(msg); } +void infoCallback(const char* msg,const unsigned int aInfoType) +{ + DeviceManager::Default()->emitInfoCallback(msg,aInfoType); +} + const char * getPhaseName(int phase){ return names[phase-1]; } void DeviceManager::initDevice() { InitLib(errorCallback); + SetMessageCallback(infoCallback); mDeviceInfTimerID = startTimer(10000); @@ -379,6 +385,11 @@ void DeviceManager::emitErrorCallback(const char *msg) { emit raiseGlobalError( m); } +void DeviceManager::emitInfoCallback(const char* aMessage,const unsigned int aInfoType) +{ + emit raiseGlobalInfo(QPair(aMessage,aInfoType)); +} + QString DeviceManager::getSoftwareVersion() { return GetDeviceInfo(VERSION); } diff --git a/src/device/DeviceManager.h b/src/device/DeviceManager.h index ed3a8f9..1f1f7aa 100644 --- a/src/device/DeviceManager.h +++ b/src/device/DeviceManager.h @@ -58,10 +58,12 @@ public: } void emitErrorCallback(const char *msg); + void emitInfoCallback(const char* aMessage,const unsigned int aInfoType); signals: void raiseGlobalError(QString msg); + void raiseGlobalInfo(const QPair& aInfoData); protected: void timerEvent(QTimerEvent *event) override; diff --git a/src/dialogs/AccountFormDialog.cpp b/src/dialogs/AccountFormDialog.cpp index aea23e3..c4fc0bb 100644 --- a/src/dialogs/AccountFormDialog.cpp +++ b/src/dialogs/AccountFormDialog.cpp @@ -14,7 +14,6 @@ #include "log/UserOperationLog.h" #include "db/SQLHelper.h" #include "models/User.h" -#include "AlertDialog.h" #include "components/ULineEdit.h" #include "DialogManager.h" @@ -70,25 +69,17 @@ void AccountFormDialog::addEndLine(QVBoxLayout* layout) void AccountFormDialog::resetUserPassword() { - AlertDialog dialog(this); - dialog.setGeometry(geometry()); - dialog.setButtonMode(OkAndCancel); - dialog.setWindowModality(Qt::WindowModal); - dialog.setAlertMessage(tr("Reset password to \"123456\" ?")); - if (dialog.exec() == Accepted) + if (DialogManager::Default()->requestAlertMessage(tr("Reset password to \"123456\" ?"),DialogButtonMode::OkAndCancel) == Accepted) { User user; - dialog.setButtonMode(OkOnly); if (!User::getUser(mUserID, user)) { - dialog.setAlertMessage(tr("Inner error, can't find reference user!")); - dialog.exec(); + DialogManager::Default()->requestAlertMessage(tr("Inner error, can't find reference user!"), DialogButtonMode::OkAndCancel); return; } if (!user.resetPassword()) { - dialog.setAlertMessage(tr("Submit change to database fail!")); - dialog.exec(); + DialogManager::Default()->requestAlertMessage(tr("Submit change to database fail!"), DialogButtonMode::OkAndCancel); } } } diff --git a/src/dialogs/DialogManager.cpp b/src/dialogs/DialogManager.cpp index 3ae027b..e86397a 100644 --- a/src/dialogs/DialogManager.cpp +++ b/src/dialogs/DialogManager.cpp @@ -5,8 +5,6 @@ #include "DialogManager.h" #include -#include -#include #include #include "event/EventCenter.h" @@ -14,19 +12,32 @@ #include "dialogs/ChangePasswordFormDialog.h" #include "dialogs/AccountFormDialog.h" #include "dialogs/MultyMessageDialogManager.h" +#include "dialogs/EditPatientDialog.h" +#include "dialogs/AlertDialog.h" +#include "dialogs/DateSelectDialog.h" +#include "dialogs/SelectDialog.h" + +#include "network/DicomCfgDialog.h" +#include "network/GetAdminPsw.h" +#include "network/NetworkCfgDialog.h" +#include "network/GetIPDialog.h" +#include "network/GetRouteDialog.h" + #include "appvals/AppGlobalValues.h" #include "windows/LoginDialog.h" +#include "json/jsonobject.h" #include "shimlib/ShimLib.h" -void messageCallback(const char* aMessage,unsigned int aMessageLevel) +namespace { - DialogManager::Default()->raiseMultyMessageDialog(QString::fromLatin1(aMessage),MessageLevel(aMessageLevel)); + const int GUIMESSAGEDIALOG_OFFSET = 30; } DialogManager::DialogManager() : QObject() , mFunctionDialog(nullptr) -, mMessageDialog(nullptr) +, mOperationMessageDialog(nullptr) +, mSyncDialog(nullptr) , mTopWidget(nullptr) { @@ -34,12 +45,13 @@ DialogManager::DialogManager() void DialogManager::init(QWidget* aParent) { connect(EventCenter::Default(), &EventCenter::DeviceErrorRaise,this,&DialogManager::raiseDeviceError); + connect(EventCenter::Default(), &EventCenter::DeviceInfoRaise,this,&DialogManager::raiseDeviceInfo); connect(EventCenter::Default(), &EventCenter::InvokeOperationStart,this,&DialogManager::invokeOperationStart); connect(EventCenter::Default(), &EventCenter::InvokeOperationProgress,this,&DialogManager::invokeOperationProgress); connect(EventCenter::Default(), &EventCenter::InvokeOperationPending,this,&DialogManager::invokeOperationPending); connect(EventCenter::Default(), &EventCenter::InvokeOperationEnd,this,&DialogManager::invokeOperationEnd); MultyMessageDialogManager::getInstance()->setDialogParent(aParent); - SetMessageCallback(messageCallback); + mTopWidget = aParent; } //得考虑多线程的问题 @@ -49,11 +61,7 @@ void DialogManager::setTopWidget(QWidget* widget) { { return; } - if (!mTopWidget&& QApplication::activeWindow()){ - mTopWidget = QApplication::activeWindow(); - } - qDebug()<<"last top:"<objectName()<<", new top:"<objectName(); - widget->setParent(mTopWidget,widget->windowFlags()); + qDebug()<<"last top:"<setWindowModality(Qt::WindowModal); mFunctionDialog->exec(); while (QDialog::Accepted != mFunctionDialog->result()) { - mFunctionDialog->exec(); } } int DialogManager::requestAddAccount(QSqlTableModel* model) { - AccountFormDialog dialog(nullptr, New); + AccountFormDialog dialog(mTopWidget, New); setTopWidget(&dialog); dialog.setWindowModality(Qt::WindowModal); dialog.setReferenceModel(model); @@ -96,7 +103,7 @@ int DialogManager::requestAddAccount(QSqlTableModel* model) { } int DialogManager::requestEditSelfAccount() { - AccountFormDialog dialog(nullptr, Self); + AccountFormDialog dialog(mTopWidget, Self); setTopWidget(&dialog); dialog.setWindowModality(Qt::WindowModal); int ret = dialog.exec(); @@ -105,7 +112,7 @@ int DialogManager::requestEditSelfAccount() { } int DialogManager::requestEditAdminAccount(const QMap& values) { - AccountFormDialog dialog(nullptr, Admin); + AccountFormDialog dialog(mTopWidget, Admin); setTopWidget(&dialog); dialog.setAccountInformation(values); dialog.setWindowModality(Qt::WindowModal); @@ -115,7 +122,7 @@ int DialogManager::requestEditAdminAccount(const QMap& values } void DialogManager::requestChangePassword() { - ChangePasswordFormDialog dialog; + ChangePasswordFormDialog dialog(mTopWidget); setTopWidget(&dialog); dialog.setGeometry(dialog.parentWidget()->geometry()); dialog.setWindowModality(Qt::WindowModal); @@ -123,10 +130,173 @@ void DialogManager::requestChangePassword() { releaseTopWidget(&dialog); } +int DialogManager::requestEditPatientInfo(PatientInformation* aPatientFrom, QSqlTableModel* aModel) +{ + EditPatientDialog dialog(mTopWidget); + setTopWidget(&dialog); + dialog.setWindowModality(Qt::WindowModal); + dialog.setPatientInformation(aPatientFrom); + dialog.setModel(aModel); + int ret = dialog.exec(); + releaseTopWidget(&dialog); + return ret; +} + +int DialogManager::requestAlertMessage(const QString& aMessage, DialogButtonMode aButtonMode, const QString& aTitle) +{ + AlertDialog dialog(mTopWidget); + setTopWidget(&dialog); + dialog.setAlertMessage(aMessage); + if (!aTitle.isEmpty()) + { + dialog.setTitle(aTitle); + } + dialog.setButtonMode(aButtonMode); + dialog.setWindowModality(Qt::WindowModal); + int ret = dialog.exec(); + releaseTopWidget(&dialog); + return ret; + +} + +DialogResult DialogManager::requestSelectDate(const QString& aDate) +{ + DateSelectDialog dialog(mTopWidget); + setTopWidget(&dialog); + dialog.setSelectedValue(aDate); + dialog.setWindowModality(Qt::WindowModal); + int ret = dialog.exec(); + releaseTopWidget(&dialog); + return DialogResult(ret,dialog.getSelectedValue()); +} + +DialogResult DialogManager::requestSelectLanguage() +{ + SelectDialog dialog(mTopWidget); + setTopWidget(&dialog); + dialog.setWindowModality(Qt::WindowModal); + dialog.setValues(JsonObject::Instance()->language()); + dialog.setSelectedValue(JsonObject::Instance()->defaultLanguage()); + int ret = dialog.exec(); + releaseTopWidget(&dialog); + return DialogResult(ret,dialog.getSelectedValue()); +} + +DialogResult DialogManager::requestSelectProtocal() +{ + SelectDialog dialog(mTopWidget); + setTopWidget(&dialog); + dialog.setWindowModality(Qt::WindowModal); + dialog.setValues(JsonObject::Instance()->protocals()); + dialog.setSelectedValue(JsonObject::Instance()->defaultProtocal()); + int ret = dialog.exec(); + releaseTopWidget(&dialog); + return DialogResult(ret,dialog.getSelectedValue()); +} + +DialogResult DialogManager::requestSelectFilter() +{ + SelectDialog dialog(mTopWidget); + setTopWidget(&dialog); + dialog.setWindowModality(Qt::WindowModal); + dialog.setValues(JsonObject::Instance()->worklistFilters()); + dialog.setSelectedValue(JsonObject::Instance()->defaultFilter()); + int ret = dialog.exec(); + releaseTopWidget(&dialog); + return DialogResult(ret,dialog.getSelectedValue()); +} + +int DialogManager::requestEditDicomConfig() +{ + DicomCfgDialog dialog(mTopWidget); + setTopWidget(&dialog); + dialog.setWindowModality(Qt::WindowModal); + int ret = dialog.exec(); + releaseTopWidget(&dialog); + return ret; +} + +int DialogManager::requestInputAdminPasswd() +{ + GetAdminPsw dialog(mTopWidget); + setTopWidget(&dialog); + dialog.setWindowModality(Qt::WindowModal); + int ret = dialog.exec(); + releaseTopWidget(&dialog); + return ret; +} + +int DialogManager::requestEditNetworkConfig() +{ + NetworkCfgDialog dialog(mTopWidget); + setTopWidget(&dialog); + dialog.setWindowModality(Qt::WindowModal); + int ret = dialog.exec(); + releaseTopWidget(&dialog); + return ret; +} + +DialogResult DialogManager::requestEditIpAndNetMask() +{ + GetIPDialog dialog(mTopWidget); + setTopWidget(&dialog); + dialog.setWindowModality(Qt::WindowModal); + int ret = dialog.exec(); + releaseTopWidget(&dialog); + return DialogResult(ret,dialog.getList()); +} + +DialogResult DialogManager::requestEditIpAndNetMask(const QStringList& aEditData) +{ + GetIPDialog dialog(mTopWidget); + setTopWidget(&dialog); + dialog.setWindowModality(Qt::WindowModal); + dialog.setList(aEditData); + int ret = dialog.exec(); + releaseTopWidget(&dialog); + return DialogResult(ret,dialog.getList()); +} + +DialogResult DialogManager::requestEditRouteInfo() +{ + GetRouteDialog dialog(mTopWidget); + setTopWidget(&dialog); + dialog.setWindowModality(Qt::WindowModal); + int ret = dialog.exec(); + releaseTopWidget(&dialog); + return DialogResult(ret,dialog.getList()); +} + +DialogResult DialogManager::requestEditRouteInfo(const QStringList& aEditData) +{ + GetRouteDialog dialog(mTopWidget); + setTopWidget(&dialog); + dialog.setWindowModality(Qt::WindowModal); + dialog.setList(aEditData); + int ret = dialog.exec(); + releaseTopWidget(&dialog); + return DialogResult(ret,dialog.getList()); +} + +void DialogManager::raiseDeviceInfo(QObject* parent, QObject* aInfoData) +{ + QPair* infoData = (QPair*)(aInfoData); + raiseMultyMessageDialog(infoData->first,MessageLevel(infoData->second)); +} + //考虑以后使用另外的dialog显示错误 void DialogManager::raiseDeviceError(QObject *parent, QObject *msg) { clearMessageDialog(); - auto dialog = new GUIMessageDialog; + auto dialog = new GUIMessageDialog(mTopWidget); + + if (nullptr != mTopWidget && mTopWidget->inherits("GUIMessageDialog")) + { + GUIMessageDialog* parent = qobject_cast(mTopWidget); + if (parent->getDialogPos().y() + 320 + GUIMESSAGEDIALOG_OFFSET < 1080) + { + dialog->moveDialog(parent->getDialogPos() + QPoint(GUIMESSAGEDIALOG_OFFSET, GUIMESSAGEDIALOG_OFFSET)); + } + } if (msg) { QString *str = (QString *) msg; @@ -137,7 +307,7 @@ void DialogManager::raiseDeviceError(QObject *parent, QObject *msg) { dialog->stopLoading(); dialog->showExitButton(); setTopWidget(dialog); - dialog->setWindowModality(Qt::NonModal); + dialog->setWindowModality(Qt::WindowModal); dialog->showFullScreen (); dialog->exec(); releaseTopWidget(dialog); @@ -151,84 +321,88 @@ void DialogManager::invokeOperationStart(QObject *parent, QObject *msg) { //只能在最底层窗口上模态 if (mDialogCount>0) return; clearMessageDialog(); - mMessageDialog = new GUIMessageDialog(QApplication::activeWindow()); + mOperationMessageDialog = new GUIMessageDialog(QApplication::activeWindow()); if (msg) { QString* str = (QString*)msg; - mMessageDialog->showMessage(*str); + mOperationMessageDialog->showMessage(*str); } else { - mMessageDialog->hideMessage(); + mOperationMessageDialog->hideMessage(); } - mMessageDialog->hideExitButton(); - mMessageDialog->startLoading(); + mOperationMessageDialog->hideExitButton(); + mOperationMessageDialog->startLoading(); AppGlobalValues::setInProcessing(true); - if (mMessageDialog->isHidden()) + if (mOperationMessageDialog->isHidden()) { - mMessageDialog->open(); + mOperationMessageDialog->showFullScreen(); + mOperationMessageDialog->exec(); } } void DialogManager::invokeOperationProgress(QObject *parent, QObject *msg) { //窗口不存在,撤销操作 - if (!mMessageDialog) return; + if (!mOperationMessageDialog) return; if (msg) { QVariant* var = (QVariant*)msg; - if (mMessageDialog->Pending()) + if (mOperationMessageDialog->Pending()) { - mMessageDialog->stopPending(); + mOperationMessageDialog->stopPending(); } - mMessageDialog->showMessage(var->toString()); + mOperationMessageDialog->showMessage(var->toString()); } else { - mMessageDialog->hideMessage(); + mOperationMessageDialog->hideMessage(); } - if (mMessageDialog->isHidden()) + if (mOperationMessageDialog->isHidden()) { - mMessageDialog->show(); + mOperationMessageDialog->showFullScreen(); + mOperationMessageDialog->exec(); } } void DialogManager::invokeOperationPending(QObject *parent, QObject *msg) { //窗口不存在,撤销操作 - if (!mMessageDialog) return; - if (!mMessageDialog->Pending()) + if (!mOperationMessageDialog) return; + if (!mOperationMessageDialog->Pending()) { - mMessageDialog->startPending(); + mOperationMessageDialog->startPending(); QVariant* var = (QVariant*)msg; - mMessageDialog->showMessage(var->toString()); + mOperationMessageDialog->showMessage(var->toString()); } } void DialogManager::invokeOperationEnd(QObject *parent, QObject *msg) { //窗口不存在,撤销操作 - if (!mMessageDialog) return; - if (!mMessageDialog->isHidden()) + if (!mOperationMessageDialog) return; + if (!mOperationMessageDialog->isHidden()) { if (msg && ((QVariant*)msg)->toBool()) { - mMessageDialog->stopLoading(); - mMessageDialog->showMessage("Scan completed!"); - mMessageDialog->showExitButton(); - mMessageDialog->setWindowModality(Qt::WindowModal); - mMessageDialog->exec(); + mOperationMessageDialog->stopLoading(); + mOperationMessageDialog->showMessage("Scan completed!"); + mOperationMessageDialog->showExitButton(); + mOperationMessageDialog->setWindowModality(Qt::WindowModal); + mOperationMessageDialog->showFullScreen(); + mOperationMessageDialog->exec(); } else { - mMessageDialog->accept(); + mOperationMessageDialog->accept(); } - delete mMessageDialog; + delete mOperationMessageDialog; AppGlobalValues::setInProcessing(false); } } void DialogManager::clearMessageDialog() { - if (mMessageDialog){ - if (!mMessageDialog->isHidden()) mMessageDialog->hide(); - delete mMessageDialog; + if (mOperationMessageDialog) + { + releaseTopWidget(mOperationMessageDialog); + delete mOperationMessageDialog; } } @@ -236,7 +410,38 @@ DialogManager::~DialogManager() { clearMessageDialog(); } -void DialogManager::raiseMultyMessageDialog(const QString aMessage, MessageLevel aMessageLevel) +void DialogManager::raiseMultyMessageDialog(const QString& aMessage, MessageLevel aMessageLevel) { MultyMessageDialogManager::getInstance()->raiseDialog(aMessage, aMessageLevel); } + +void DialogManager::raiseSyncDialog(const QString& aMessage) +{ + if (!mSyncDialog) + { + mSyncDialog = new GUIMessageDialog(mTopWidget); + } + mSyncDialog->showMessage(aMessage); + setTopWidget(mSyncDialog); + mSyncDialog->setWindowModality(Qt::WindowModal); + mSyncDialog->showFullScreen (); + mSyncDialog->exec(); + releaseTopWidget(mSyncDialog); + delete mSyncDialog; +} + +void DialogManager::hideTopSyncDialog() +{ + if (mSyncDialog) + { + mSyncDialog->accept(); + } +} + +void DialogManager::setFocusToTopDialog() +{ + if (0 < mDialogCount && nullptr != mTopWidget) + { + mTopWidget->setFocus(); + } +} diff --git a/src/dialogs/DialogManager.h b/src/dialogs/DialogManager.h index edcce69..643e597 100644 --- a/src/dialogs/DialogManager.h +++ b/src/dialogs/DialogManager.h @@ -5,18 +5,31 @@ #ifndef GUI_DIALOGMANAGER_H #define GUI_DIALOGMANAGER_H +#include "GUIFormBaseDialog.h" + #include #include +#include #include -#include -#include -class QWidget; -class QDialog; class GUIMessageDialog; class QSqlTableModel; +class PatientInformation; +class LoginDialog; + enum MessageLevel:unsigned int; +struct DialogResult +{ + DialogResult(int aResultCode, const QVariant& aResultData) + { + ResultCode = aResultCode; + ResultData = aResultData; + }; + int ResultCode; + QVariant ResultData; +}; + class DialogManager:public QObject { public: static DialogManager *Default() { @@ -28,25 +41,45 @@ public: ~DialogManager() override; - void init(QWidget* aParent); - void setTopWidget(QWidget* widget); - void releaseTopWidget(QWidget* expectedTopWidget); - void requestLogin(); + void init(QWidget* aParent); + void requestLogin(QWidget* aParent); int requestAddAccount(QSqlTableModel* model); int requestEditSelfAccount(); int requestEditAdminAccount(const QMap& values); + int requestEditPatientInfo(PatientInformation* aPatientFrom, QSqlTableModel* aModel); + int requestAlertMessage(const QString& aMessage, DialogButtonMode aButtonMode,const QString& aTitle = QString()); + DialogResult requestSelectDate(const QString& aDate); + DialogResult requestSelectLanguage(); + DialogResult requestSelectProtocal(); + DialogResult requestSelectFilter(); + int requestEditDicomConfig(); + int requestInputAdminPasswd(); + int requestEditNetworkConfig(); + DialogResult requestEditIpAndNetMask(); + DialogResult requestEditIpAndNetMask(const QStringList& aEditData); + DialogResult requestEditRouteInfo(); + DialogResult requestEditRouteInfo(const QStringList& aEditData); void requestChangePassword(); void raiseDeviceError(QObject* parent, QObject* msg); - void raiseMultyMessageDialog(const QString aMessage,MessageLevel aMessageLevel); + void raiseDeviceInfo(QObject* parent, QObject* aInfoData); + void raiseMultyMessageDialog(const QString& aMessage,MessageLevel aMessageLevel); + void raiseSyncDialog(const QString& aMessage); + void hideTopSyncDialog(); void invokeOperationStart(QObject* parent, QObject* msg); void invokeOperationProgress(QObject* parent, QObject* msg); void invokeOperationPending(QObject* parent, QObject* msg); void invokeOperationEnd(QObject* parent, QObject* msg); + void setFocusToTopDialog(); + private: void clearMessageDialog(); + void setTopWidget(QWidget* widget); + void releaseTopWidget(QWidget* expectedTopWidget); - QDialog* mFunctionDialog; - QPointer mMessageDialog; +private: + LoginDialog* mFunctionDialog; + QPointer mOperationMessageDialog; + QPointer mSyncDialog; QWidget* mTopWidget; std::mutex mMutex; int mDialogCount = 0; diff --git a/src/dialogs/EditPatientDialog.cpp b/src/dialogs/EditPatientDialog.cpp index 74506fc..e426421 100644 --- a/src/dialogs/EditPatientDialog.cpp +++ b/src/dialogs/EditPatientDialog.cpp @@ -11,7 +11,7 @@ #include #include "dialogs/SelectDialog.h" -#include "DateSelectDialog.h" +#include "dialogs/DialogManager.h" #include "components/ListBox.h" #include "components/ULineEdit.h" #include "components/UTextEdit.h" @@ -91,12 +91,10 @@ EditPatientDialog::EditPatientDialog(QWidget* parent, Qt::WindowFlags f) : GUIFo btnDate->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); btnDate->setText("1990-06-15"); connect(btnDate, &QToolButton::clicked, [=]() { - DateSelectDialog dialog(this); - dialog.setSelectedValue(btnDate->text()); - dialog.setWindowModality(Qt::WindowModal); - if (dialog.exec() == QDialog::Accepted) + DialogResult result = DialogManager::Default()->requestSelectDate(btnDate->text()); + if (result.ResultCode == QDialog::Accepted) { - btnDate->setText(dialog.getSelectedValue()); + btnDate->setText(result.ResultData.toString()); } }); layout->addWidget(btnDate); diff --git a/src/dialogs/GUIFormBaseDialog.h b/src/dialogs/GUIFormBaseDialog.h index 64cbdb9..5522379 100644 --- a/src/dialogs/GUIFormBaseDialog.h +++ b/src/dialogs/GUIFormBaseDialog.h @@ -4,7 +4,7 @@ #ifndef GUI_GUIFORMBASEDIALOG_H #define GUI_GUIFORMBASEDIALOG_H -enum DialogButtonMode +enum DialogButtonMode:unsigned int { None,OkOnly,OkAndCancel }; diff --git a/src/dialogs/GUIMessageDialog.cpp b/src/dialogs/GUIMessageDialog.cpp index c2cf6c4..c935332 100644 --- a/src/dialogs/GUIMessageDialog.cpp +++ b/src/dialogs/GUIMessageDialog.cpp @@ -20,7 +20,9 @@ GUIMessageDialog::GUIMessageDialog(QWidget *parent) this->setObjectName("MessageDialog"); this->setWindowFlags (Qt :: FramelessWindowHint | Qt :: Dialog); initBaseLayout(); - this->setWindowOpacity(0.6); + mUI->btnContainerWidget->setAttribute(Qt::WA_TranslucentBackground); + mUI->widget->setAttribute(Qt::WA_TranslucentBackground); + setAttribute(Qt::WA_TranslucentBackground); initLoadingFrameString(); } @@ -150,3 +152,14 @@ void GUIMessageDialog::stopPending() { mBtnAppend->setVisible(false); mPending = false; } + +void GUIMessageDialog::moveDialog(const QPoint& aPos) +{ + mUI->innerWidget->move(aPos); +} + +QPoint GUIMessageDialog::getDialogPos() +{ + return mUI->innerWidget->pos(); +} +; \ No newline at end of file diff --git a/src/dialogs/GUIMessageDialog.h b/src/dialogs/GUIMessageDialog.h index 1a905a6..9bde1bd 100644 --- a/src/dialogs/GUIMessageDialog.h +++ b/src/dialogs/GUIMessageDialog.h @@ -26,6 +26,8 @@ public: return mPending; } void setOpacity(double); + void moveDialog(const QPoint& aPos); + QPoint getDialogPos(); protected: void timerEvent(QTimerEvent* event) override ; private: diff --git a/src/dialogs/GUIMessageDialog.ui b/src/dialogs/GUIMessageDialog.ui index 4159e62..b6043e1 100644 --- a/src/dialogs/GUIMessageDialog.ui +++ b/src/dialogs/GUIMessageDialog.ui @@ -19,90 +19,82 @@ true - - - 680 + + + + 680 + 380 + 560 + 320 + - - 380 - - - 680 - - - 380 - - - - - - - - - - - - 0 + + + + + + + + + 0 + + + + + Qt::Horizontal - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Qt::AlignCenter - - - true - - - - - - - - - - Qt::AlignCenter - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - + + + 40 + 20 + + + + + + + + + + + Qt::AlignCenter + + + true + + + + + + + + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + diff --git a/src/dialogs/MultyMessageDialog.cpp b/src/dialogs/MultyMessageDialog.cpp index 03a52e9..6755b85 100644 --- a/src/dialogs/MultyMessageDialog.cpp +++ b/src/dialogs/MultyMessageDialog.cpp @@ -39,7 +39,7 @@ void MultyMessageDialog::initializeAnimation() { mDisappearAnimation->setDuration(100); - mShowAnimation->setDuration(100); + mShowAnimation->setDuration(150); connect(mDisappearAnimation, &QPropertyAnimation::finished, this, &MultyMessageDialog::hideDialog); } diff --git a/src/event/EventCenter.h b/src/event/EventCenter.h index 84fe1ed..7a8b016 100644 --- a/src/event/EventCenter.h +++ b/src/event/EventCenter.h @@ -30,7 +30,8 @@ ADD_EVENT_VALUE(PromptDialogOpen)\ ADD_EVENT_VALUE(GlobalBannerMessage)\ ADD_EVENT_VALUE(ReloadLanguage)\ ADD_EVENT_VALUE(WarnStateFlagChange)\ -ADD_EVENT_VALUE(GUIErrorRaise) +ADD_EVENT_VALUE(GUIErrorRaise)\ +ADD_EVENT_VALUE(DeviceInfoRaise) enum GUIEvents { #define ADD_EVENT_VALUE(val) val, diff --git a/src/forms/select/SelectFormWidget.cpp b/src/forms/select/SelectFormWidget.cpp index 8801192..19a9016 100644 --- a/src/forms/select/SelectFormWidget.cpp +++ b/src/forms/select/SelectFormWidget.cpp @@ -16,7 +16,6 @@ #include "db/SQLHelper.h" #include "event/EventCenter.h" #include "dialogs/DialogManager.h" -#include "dialogs/AlertDialog.h" #include "log/UserOperationLog.h" #include "components/VerticalTextToolButton.h" @@ -113,18 +112,8 @@ void SelectFormWidget::initPatEditButtons(QHBoxLayout *layout) { void SelectFormWidget::editPatient() { bool addFlag = sender() == mBtnAdd; - EditPatientDialog dialog(this); - if (addFlag){ - dialog.clearPatientInformation(); - } - else{ - dialog.setPatientInformation(patientDetailForm->getPatientInformation()); - } - - dialog.setWindowModality(Qt::WindowModal); - dialog.setModel(mModel); // accept change - if (dialog.exec() == QDialog::Accepted) { + if (DialogManager::Default()->requestEditPatientInfo(addFlag ? nullptr:patientDetailForm->getPatientInformation(),mModel) == QDialog::Accepted) { if (addFlag){ mPatTable->selectRow(0); mModel->selectRow(0); @@ -140,23 +129,15 @@ void SelectFormWidget::editPatient() { void SelectFormWidget::delPatient() { if (mPatTable->currentIndex().row() < 0) return; - AlertDialog dialog(this); - dialog.setWindowModality(Qt::WindowModal); QString pUid = mModel->index(mPatTable->currentIndex().row(), PatientUID).data().toString(); // patient has been selected as the scan patient! if (selectedPatientUID == pUid){ - dialog.setButtonMode(OkOnly); - dialog.setTitle(tr("Alert")); - dialog.setAlertMessage(QString(tr("Can't delete selected Patient !"))); - dialog.exec(); + DialogManager::Default()->requestAlertMessage(tr("Can't delete selected Patient !"),DialogButtonMode::OkOnly,tr("Alert")); return; } // not the selected one, confirm! - dialog.setButtonMode(OkAndCancel); - dialog.setTitle("Confirm"); QString pat_name = mModel->index(mPatTable->currentIndex().row(), Name).data().toString(); - dialog.setAlertMessage(QString(tr("Delete Patient \"%1\" ?")).arg(pat_name)); - if (dialog.exec() != QDialog::Accepted) return; + if (DialogManager::Default()->requestAlertMessage(QString(tr("Delete Patient \"%1\" ?")).arg(pat_name),DialogButtonMode::OkAndCancel,tr("Confirm")) != QDialog::Accepted) return; // need delete clear edit panel detail patientDetailForm->clearPatientInformation(); mModel->setData(mModel->index(mPatTable->currentIndex().row(), Flag), 9); @@ -171,10 +152,7 @@ void SelectFormWidget::delPatient() { } } else { //TODO:error handle - dialog.setButtonMode(OkOnly); - dialog.setTitle(tr("Alert")); - dialog.setAlertMessage(QString(tr("Can't delete selected Patient , db submit error!"))); - dialog.exec(); + DialogManager::Default()->requestAlertMessage(tr("Can't delete selected Patient , db submit error!"),DialogButtonMode::OkOnly,tr("Alert")); } prepareButtons(false); } diff --git a/src/forms/settings/AccountTableForm.cpp b/src/forms/settings/AccountTableForm.cpp index 53e123e..af632d5 100644 --- a/src/forms/settings/AccountTableForm.cpp +++ b/src/forms/settings/AccountTableForm.cpp @@ -10,7 +10,6 @@ #include #include "components/AccountRoleComboDelegate.h" -#include "dialogs/AlertDialog.h" #include "dialogs/DialogManager.h" #include "db/SQLHelper.h" #include "models/User.h" @@ -127,18 +126,11 @@ AccountTableForm::AccountTableForm(QWidget* aParent) if (User::Current()->getUserID() == id) { //尝试删除自己 - AlertDialog dialog(this); - dialog.setButtonMode(OkOnly); - dialog.setWindowModality(Qt::WindowModal); - dialog.setAlertMessage(tr("Can't delete current log in account!")); - dialog.exec(); + DialogManager::Default()->requestAlertMessage(tr("Can't delete current log in account!"), DialogButtonMode::OkOnly); return; } - AlertDialog dialog(this); - dialog.setWindowModality(Qt::WindowModal); - dialog.setAlertMessage(QString(tr("Delete account with ID:\"%1\"!")).arg(id)); - if (dialog.exec() != QDialog::Accepted) return; + if ( DialogManager::Default()->requestAlertMessage(QString(tr("Delete account with ID:\"%1\"!")).arg(id), DialogButtonMode::OkAndCancel) != QDialog::Accepted) return; model->removeRow(mCurrentRow); model->select(); table->selectRow(model->rowCount() > mCurrentRow + 1 ? mCurrentRow : mCurrentRow - 1); diff --git a/src/forms/settings/GeneralForm.cpp b/src/forms/settings/GeneralForm.cpp index 3dcd77c..4ee4cd2 100644 --- a/src/forms/settings/GeneralForm.cpp +++ b/src/forms/settings/GeneralForm.cpp @@ -10,7 +10,7 @@ #include "event/EventCenter.h" #include "json/jsonobject.h" -#include "dialogs/SelectDialog.h" +#include "dialogs/DialogManager.h" #include "utilities/Locker.h" #include "utilities/LanguageSwitcher.h" #include "components/ULineEdit.h" @@ -19,11 +19,10 @@ GeneralForm::GeneralForm(QWidget* aParent) : QWidget(aParent) , mLayout(new QVBoxLayout(this)) - , mSelectDialog(new SelectDialog(this)) { + setFocusPolicy(Qt::ClickFocus); QWidget* lanHeader = new QWidget(this); mLayout->addWidget(lanHeader); - mSelectDialog->setWindowModality(Qt::WindowModal); QHBoxLayout* lanHeaderLayout = new QHBoxLayout(lanHeader); QLabel* languageLabel = new QLabel(tr("Language")); @@ -94,11 +93,10 @@ GeneralForm::GeneralForm(QWidget* aParent) connect(btnLan, &QPushButton::clicked, [=]() { - mSelectDialog->setValues(JsonObject::Instance()->language()); - mSelectDialog->setSelectedValue(JsonObject::Instance()->defaultLanguage()); - if (mSelectDialog->exec() == QDialog::Accepted) + DialogResult result = DialogManager::Default()->requestSelectLanguage(); + if (result.ResultCode == QDialog::Accepted) { - QString language = mSelectDialog->getSelectedValue(); + QString language = result.ResultData.toString(); //take effect JsonObject::Instance()->setDefaultLanguage(language); diff --git a/src/forms/settings/GeneralForm.h b/src/forms/settings/GeneralForm.h index 72c446e..f6ff0ab 100644 --- a/src/forms/settings/GeneralForm.h +++ b/src/forms/settings/GeneralForm.h @@ -4,7 +4,6 @@ #include class QVBoxLayout; -class SelectDialog; class GeneralForm : public QWidget { @@ -15,7 +14,6 @@ public: private: QVBoxLayout* mLayout; - SelectDialog* mSelectDialog; }; #endif // GENERALFORM_H \ No newline at end of file diff --git a/src/forms/settings/SystemSettingForm.cpp b/src/forms/settings/SystemSettingForm.cpp index b699b3c..17234c9 100644 --- a/src/forms/settings/SystemSettingForm.cpp +++ b/src/forms/settings/SystemSettingForm.cpp @@ -5,10 +5,7 @@ #include #include -#include "dialogs/SelectDialog.h" -#include "network/NetworkCfgDialog.h" -#include "network/DicomCfgDialog.h" -#include "network/GetAdminPsw.h" +#include "dialogs/DialogManager.h" #include "json/jsonobject.h" #include "event/EventCenter.h" #include "device/DeviceManager.h" @@ -18,8 +15,6 @@ SystemSettingForm::SystemSettingForm(QWidget* parent) : QWidget(parent) , mUI(new Ui::SystemSettingForm) - , mProtocalSelectDialog(new SelectDialog(this)) - , mFilterSelectDialog(new SelectDialog(this)) , mDiskInfoCaller(nullptr) , mDiskSize(0) , mDiskUsedSize(0) @@ -27,8 +22,6 @@ SystemSettingForm::SystemSettingForm(QWidget* parent) , mDiskUsedSizeFlag(false) { mUI->setupUi(this); - mProtocalSelectDialog->setWindowModality(Qt::WindowModal); - mFilterSelectDialog->setWindowModality(Qt::WindowModal); mUI->lbl_size->setText(tr("Loading...")); mUI->lbl_used->setText(tr("Loading...")); @@ -100,31 +93,25 @@ SystemSettingForm::SystemSettingForm(QWidget* parent) JsonObject::Instance()->setCompleteNotify(scanCompleteButton->getChecked()); }); connect(mUI->btnNetwork, &QToolButton::clicked, [=]() { - GetAdminPsw dialog(this); - if (dialog.exec() == QDialog::Accepted) + if (DialogManager::Default()->requestInputAdminPasswd() == QDialog::Accepted) { - JsonObject::Instance()->setPassword(dialog.getPsw()); - NetworkCfgDialog dia(this); - dia.setWindowModality(Qt::WindowModal); - dia.exec(); + //JsonObject::Instance()->setPassword(dialog.getPsw()); + DialogManager::Default()->requestEditNetworkConfig(); } }); connect(mUI->btnDICOM, &QToolButton::clicked, [=]() { - DicomCfgDialog dia(this); - dia.setWindowModality(Qt::WindowModal); - dia.exec(); + DialogManager::Default()->requestEditDicomConfig(); }); connect(mUI->btnPro, &QPushButton::clicked, [=]() { - mProtocalSelectDialog->setValues(JsonObject::Instance()->protocals()); - mProtocalSelectDialog->setSelectedValue(JsonObject::Instance()->defaultProtocal()); - if (mProtocalSelectDialog->exec() == QDialog::Accepted) + DialogResult result = DialogManager::Default()->requestSelectProtocal(); + if (result.ResultCode == QDialog::Accepted) { - QString pro = mProtocalSelectDialog->getSelectedValue(); + QString pro = result.ResultData.toString(); //take effect JsonObject::Instance()->setDefaultProtocal(pro); mUI->btnPro->setText(JsonObject::Instance()->defaultProtocal()); @@ -133,11 +120,10 @@ SystemSettingForm::SystemSettingForm(QWidget* parent) connect(mUI->btnFlt, &QPushButton::clicked, [=]() { - mFilterSelectDialog->setValues(JsonObject::Instance()->worklistFilters()); - mFilterSelectDialog->setSelectedValue(JsonObject::Instance()->defaultFilter()); - if (mFilterSelectDialog->exec() == QDialog::Accepted) + DialogResult result = DialogManager::Default()->requestSelectFilter(); + if (result.ResultCode == QDialog::Accepted) { - QString flt = mFilterSelectDialog->getSelectedValue(); + QString flt = result.ResultData.toString(); //take effect JsonObject::Instance()->setDefaultFilter(flt); mUI->btnFlt->setText(JsonObject::Instance()->defaultFilter()); diff --git a/src/forms/settings/SystemSettingForm.h b/src/forms/settings/SystemSettingForm.h index 2659079..3bb934d 100644 --- a/src/forms/settings/SystemSettingForm.h +++ b/src/forms/settings/SystemSettingForm.h @@ -3,8 +3,6 @@ #include -class SelectDialog; - namespace Ui { class SystemSettingForm; @@ -23,9 +21,6 @@ private: void updateStorageUsed(); Ui::SystemSettingForm* mUI; - - SelectDialog* mProtocalSelectDialog; - SelectDialog* mFilterSelectDialog; QThread* mDiskInfoCaller; double mDiskSize; diff --git a/src/keyboard/HandWriteWidget.cpp b/src/keyboard/HandWriteWidget.cpp index 52ecd9e..823b51b 100644 --- a/src/keyboard/HandWriteWidget.cpp +++ b/src/keyboard/HandWriteWidget.cpp @@ -127,6 +127,16 @@ void HandWriteWidget::mousePressEvent(QMouseEvent* aEvent) void HandWriteWidget::mouseMoveEvent(QMouseEvent* aEvent) { QPoint pos = aEvent->pos(); + if (pos.x() > HANDWRITEAREA_SIZE.width() || pos.y() > HANDWRITEAREA_SIZE.height()) + { + if (!mVectorPoints.empty()) + { + mVectorPointsList.push_back(mVectorPoints); + mVectorPoints.clear(); + mTimer->start(); + } + return QWidget::mouseMoveEvent(aEvent);; + } mPainter->drawLine(mLastPosition, pos); mVectorPoints.push_back(pos); mLastPosition = pos; diff --git a/src/network/NetworkCfgDialog.cpp b/src/network/NetworkCfgDialog.cpp index 6b5c82c..7aac830 100644 --- a/src/network/NetworkCfgDialog.cpp +++ b/src/network/NetworkCfgDialog.cpp @@ -6,10 +6,8 @@ #include "ui_NetworkCfgDialog.h" #include "device/networkmanager.h" +#include "dialogs/DialogManager.h" #include "NetCfgTableModel.h" -#include "GetIPDialog.h" -#include "GetRouteDialog.h" -#include "src/dialogs/GUIMessageDialog.h" namespace { @@ -24,14 +22,12 @@ NetworkCfgDialog::NetworkCfgDialog(QWidget* parent) , mUi(new Ui::NetworkCfgDialog) , mModelAddress(new NetCfgTableModel(this)) , mModelRoute(new NetCfgTableModel(this)) - , mMessageDialog(new GUIMessageDialog(this)) { mUi->setupUi(this); this->setObjectName("formDialog"); this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint); - - mMessageDialog->hide(); + setFocusPolicy(Qt::ClickFocus); mUi->sw_dhcp->setChecked(true); //ui->sw_dhcp->setButtonStyle(ImageSwitch::ButtonStyle_1); @@ -74,11 +70,10 @@ NetworkCfgDialog::NetworkCfgDialog(QWidget* parent) connect(mUi->btn_addr_add, &QPushButton::clicked, [=]() { - //GetIPDialog* dialog = new GetIPDialog(this); - GetIPDialog dialog(this); - if (dialog.exec() == QDialog::Accepted) + DialogResult result = DialogManager::Default()->requestEditIpAndNetMask(); + if (result.ResultCode == QDialog::Accepted) { - mModelAddress->addRow(dialog.getList()); + mModelAddress->addRow(result.ResultData.toStringList()); //ui->tbl_addr->selectRow(0); } }); @@ -92,14 +87,11 @@ NetworkCfgDialog::NetworkCfgDialog(QWidget* parent) if (!index.empty()) { const QStringList ipdata = mModelAddress->rowData(index.at(0)); - - //GetIPDialog* dialog = new GetIPDialog(this); - GetIPDialog dialog(this); - dialog.setList(ipdata); - if (dialog.exec() == QDialog::Accepted) + DialogResult result = DialogManager::Default()->requestEditIpAndNetMask(ipdata); + if (result.ResultCode == QDialog::Accepted) { mModelAddress->removeRow(index.at(0).row()); - mModelAddress->insertRow(index.at(0).row(), dialog.getList()); + mModelAddress->insertRow(index.at(0).row(), result.ResultData.toStringList()); } } } @@ -122,17 +114,15 @@ NetworkCfgDialog::NetworkCfgDialog(QWidget* parent) connect(mUi->btn_route_add, &QPushButton::clicked, [=]() { - //GetRouteDialog* dialog = new GetRouteDialog(this); - GetRouteDialog dialog(this); - if (dialog.exec() == QDialog::Accepted) + DialogResult result = DialogManager::Default()->requestEditRouteInfo(); + if (result.ResultCode == QDialog::Accepted) { - mModelRoute->addRow(dialog.getList()); + mModelRoute->addRow(result.ResultData.toStringList()); } }); connect(mUi->btn_route_edit, &QPushButton::clicked, [=]() { - QItemSelectionModel* select = mUi->tbl_route->selectionModel(); if (select->hasSelection()) { @@ -141,14 +131,11 @@ NetworkCfgDialog::NetworkCfgDialog(QWidget* parent) { const QStringList ipdata = mModelRoute->rowData(index.at(0)); - //GetRouteDialog* dialog = new GetRouteDialog(this); - GetRouteDialog dialog(this); - dialog.setList(ipdata); - if (dialog.exec() == QDialog::Accepted) + DialogResult result = DialogManager::Default()->requestEditRouteInfo(ipdata);; + if (result.ResultCode == QDialog::Accepted) { mModelRoute->removeRow(index.at(0).row()); - mModelRoute->insertRow(index.at(0).row(), dialog.getList()); - + mModelRoute->insertRow(index.at(0).row(), result.ResultData.toStringList()); } } } @@ -273,12 +260,11 @@ bool NetworkCfgDialog::isNetModified() void NetworkCfgDialog::handleThreadStart() { - mMessageDialog->showMessage("Saving Network Configuration..."); - mMessageDialog->show(); + DialogManager::Default()->raiseSyncDialog("Saving Network Configuration..."); } void NetworkCfgDialog::handleThreadExit() { - mMessageDialog->hide(); + DialogManager::Default()->hideTopSyncDialog(); mUi->output->setPlainText(mError); if (0 != mThread) { diff --git a/src/network/NetworkCfgDialog.h b/src/network/NetworkCfgDialog.h index fe7cdae..6103dfd 100644 --- a/src/network/NetworkCfgDialog.h +++ b/src/network/NetworkCfgDialog.h @@ -9,7 +9,6 @@ namespace Ui } class NetCfgTableModel; -class GUIMessageDialog; class QThread; class NetworkCfgDialog : public QDialog @@ -38,7 +37,6 @@ private: Ui::NetworkCfgDialog* mUi; NetCfgTableModel* mModelAddress = nullptr; NetCfgTableModel* mModelRoute = nullptr; - GUIMessageDialog* mMessageDialog = nullptr; QThread* mThread = nullptr; QString mError; QString mAdminPsw; diff --git a/src/stylesheet/Dark2.css b/src/stylesheet/Dark2.css index 7e89d0b..154c2c6 100644 --- a/src/stylesheet/Dark2.css +++ b/src/stylesheet/Dark2.css @@ -635,7 +635,7 @@ QWidget#innerWidget { border: 5px solid #0078d8; } -QDialog#MessageDialog QWidget QWidget { +QDialog#MessageDialog QWidget#btnContainerWidget QWidget { background: transparent; color: #3078d8; } @@ -644,14 +644,14 @@ QDialog#MessageDialog QWidget QWidget QLabel { font-size: 30px } -GUIMessageDialog QToolButton{ +GUIMessageDialog QToolButton { border: 2px solid #0078d8; border-radius: 10%; font-size: 26px; font-weight: Bold; padding: 5px; - qproperty-toolButtonStyle:ToolButtonTextBesideIcon; - qproperty-iconSize:30px 30px; + qproperty-toolButtonStyle: ToolButtonTextBesideIcon; + qproperty-iconSize: 30px 30px; } QToolButton#dialogBtnOK{ diff --git a/src/windows/LoginDialog.cpp b/src/windows/LoginDialog.cpp index 046bcd6..452fdf2 100644 --- a/src/windows/LoginDialog.cpp +++ b/src/windows/LoginDialog.cpp @@ -10,7 +10,6 @@ #include "models/User.h" #include "log/UserOperationLog.h" #include "json/jsonobject.h" -#include "dialogs/GUIMessageDialog.h" #include "components/ULineEdit.h" LoginDialog::LoginDialog(QWidget* aParent) @@ -45,25 +44,6 @@ void LoginDialog::initializeAllWidget() initializeEdit(); initializeLoginButton(); initializeErrorMessage(); - - connect(EventCenter::Default(), &EventCenter::DeviceErrorRaise, [=](QObject* parent, QObject* msg) { - if (!this->isVisible()) return; - //默认旧模式 - GUIMessageDialog msgDialog(this); - msgDialog.setOpacity(1.0); - if (msg) - { - QString* str = (QString*)msg; - msgDialog.showMessage(*str); - } - else - { - msgDialog.showMessage("Something went error!"); - } - msgDialog.stopLoading(); - msgDialog.showExitButton(); - msgDialog.exec(); - }); } void LoginDialog::initializeLayout() @@ -94,10 +74,12 @@ void LoginDialog::initializeEdit() { mAccountEdit->setObjectName("combobox_UserName"); mAccountEdit->setPlaceholderText(tr("Username")); + mAccountEdit->setFocusPolicy(Qt::ClickFocus); mDialogContentsLayout->addWidget(mAccountEdit); mPasswordEdit->setObjectName("edt_Password"); mPasswordEdit->setEchoMode(QLineEdit::Password); mPasswordEdit->setPlaceholderText(tr("Password")); + mPasswordEdit->setFocusPolicy(Qt::ClickFocus); mDialogContentsLayout->addWidget(mPasswordEdit); } diff --git a/src/windows/MainWindow.cpp b/src/windows/MainWindow.cpp index cc84651..45b9c3b 100644 --- a/src/windows/MainWindow.cpp +++ b/src/windows/MainWindow.cpp @@ -14,7 +14,6 @@ #include "forms/scan/ScanFormWidget.h" #include "forms/settings/SettingFormWidget.h" #include "forms/TopBarWidget.h" -#include "dialogs/GUIMessageDialog.h" #include "dialogs/DialogManager.h" #include "device/DeviceManager.h" #include "errorhandle/GUIErrorHandle.h" @@ -27,7 +26,6 @@ MainWindow::MainWindow(QWidget* aParent) : QMainWindow(aParent) , mUI(new Ui::MainWindow) , mDebugConsoleWidget(nullptr) - , mMessageDialog(nullptr) , mDebugMessageConsole(nullptr) , mTabWidget(new QTabWidget(this)) , mAdminTabIndex(-1) @@ -45,6 +43,7 @@ MainWindow::MainWindow(QWidget* aParent) connect(EventCenter::Default(), &EventCenter::RequestLogin, this,&MainWindow::requestLogin); connect(EventCenter::Default(), &EventCenter::LoginRoleChanged, this,&MainWindow::resetRoleLayout); connect(DeviceManager::Default(), &DeviceManager::raiseGlobalError, this, &MainWindow::triggerError); + connect(DeviceManager::Default(), &DeviceManager::raiseGlobalInfo, this, &MainWindow::triggerInfo); connect(EventCenter::Default(), &EventCenter::ReloadLanguage, this, &MainWindow::reloadLanguage); GUIErrorHandle::Default()->init(); mThread = QThread::create([]() { @@ -138,6 +137,12 @@ void MainWindow::triggerError(const QString& aMessage) EventCenter::Default()->triggerEvent(GUIErrorRaise, nullptr, (QObject*)&message); } +void MainWindow::triggerInfo(const QPair& aInfoData) +{ + QPair infoData = aInfoData; + EventCenter::Default()->triggerEvent(DeviceInfoRaise, nullptr, (QObject*)&infoData); +} + //------events----------------------------------------------------------------- //! [event handler] @@ -267,7 +272,7 @@ void MainWindow::swipeTriggered(QSwipeGesture* aSwipeGesture) void MainWindow::requestLogin() { - DialogManager::Default()->requestLogin(); + DialogManager::Default()->requestLogin(this); QApplication::setActiveWindow(centralWidget()); } diff --git a/src/windows/MainWindow.h b/src/windows/MainWindow.h index 6304c34..b679718 100644 --- a/src/windows/MainWindow.h +++ b/src/windows/MainWindow.h @@ -37,6 +37,7 @@ public: public slots: void triggerError(const QString&); + void triggerInfo(const QPair&); protected: void changeEvent(QEvent* aEvent) override; @@ -55,7 +56,6 @@ private: private: Ui::MainWindow* mUI; QDockWidget* mDebugConsoleWidget; - GUIMessageDialog* mMessageDialog; QTextEdit* mDebugMessageConsole; QTabWidget* mTabWidget; int mAdminTabIndex;