// // Created by Krad on 2022/7/19. // #ifndef GUI_DIALOGMANAGER_H #define GUI_DIALOGMANAGER_H #include "GUIFormBaseDialog.h" #include #include #include #include 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() { static DialogManager manager; return &manager; } DialogManager(); ~DialogManager() override; 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 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); private: LoginDialog* mFunctionDialog; QPointer mOperationMessageDialog; QPointer mSyncDialog; QWidget* mTopWidget; std::mutex mMutex; int mDialogCount = 0; }; #endif //GUI_DIALOGMANAGER_H