// // Created by Krad on 2022/7/19. // #ifndef GUI_DIALOGMANAGER_H #define GUI_DIALOGMANAGER_H #include #include #include #include class QWidget; class QDialog; class GUIMessageDialog; class QSqlTableModel; class DialogManager:public QObject { public: static DialogManager *Default() { static DialogManager manager; return &manager; } DialogManager(); ~DialogManager() override; void init(); void setTopWidget(QWidget* widget); void releaseTopWidget(QWidget* expectedTopWidget); void requestLogin(); int requestAddAccount(QSqlTableModel* model); int requestEditSelfAccount(); int requestEditAdminAccount(const QMap& values); void requestChangePassword(); void raiseDeviceError(QObject* parent, QObject* msg); void invokeOperationStart(QObject* parent, QObject* msg); void invokeOperationProgress(QObject* parent, QObject* msg); void invokeOperationPending(QObject* parent, QObject* msg); void invokeOperationEnd(QObject* parent, QObject* msg); private: void clearMessageDialog(); QDialog* mFunctionDialog; GUIMessageDialog* mMessageDialog; QWidget* topWidget; std::mutex mutex; int mDialogCount = 0; }; #endif //GUI_DIALOGMANAGER_H