Files
GUI/src/dialogs/DialogManager.h

56 lines
1.4 KiB
C
Raw Normal View History

2022-07-19 14:15:00 +08:00
//
// Created by Krad on 2022/7/19.
//
#ifndef GUI_DIALOGMANAGER_H
#define GUI_DIALOGMANAGER_H
#include <QObject>
2022-07-28 16:27:51 +08:00
#include <QPointer>
2022-07-20 16:45:33 +08:00
#include <mutex>
2022-07-19 14:15:00 +08:00
#include <QStack>
2022-07-20 16:45:33 +08:00
#include <atomic>
2022-07-19 14:15:00 +08:00
class QWidget;
class QDialog;
class GUIMessageDialog;
2022-07-20 16:45:33 +08:00
class QSqlTableModel;
2022-07-28 16:27:51 +08:00
enum MessageLevel:unsigned int;
2022-07-19 14:15:00 +08:00
class DialogManager:public QObject {
public:
static DialogManager *Default() {
static DialogManager manager;
return &manager;
}
2022-07-20 16:45:33 +08:00
DialogManager();
2022-07-19 14:15:00 +08:00
2022-07-20 16:45:33 +08:00
~DialogManager() override;
2022-07-19 14:15:00 +08:00
2022-07-28 16:27:51 +08:00
void init(QWidget* aParent);
2022-07-21 10:39:24 +08:00
void setTopWidget(QWidget* widget);
void releaseTopWidget(QWidget* expectedTopWidget);
2022-07-20 16:45:33 +08:00
void requestLogin();
int requestAddAccount(QSqlTableModel* model);
int requestEditSelfAccount();
int requestEditAdminAccount(const QMap<QString, QVariant>& values);
void requestChangePassword();
2022-07-19 14:15:00 +08:00
void raiseDeviceError(QObject* parent, QObject* msg);
2022-07-28 16:27:51 +08:00
void raiseMultyMessageDialog(const QString aMessage,MessageLevel aMessageLevel);
2022-07-19 14:15:00 +08:00
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:
2022-07-20 16:45:33 +08:00
void clearMessageDialog();
QDialog* mFunctionDialog;
2022-07-28 16:27:51 +08:00
QPointer<GUIMessageDialog> mMessageDialog;
QWidget* mTopWidget;
std::mutex mMutex;
2022-07-21 10:39:24 +08:00
int mDialogCount = 0;
2022-07-19 14:15:00 +08:00
};
#endif //GUI_DIALOGMANAGER_H