Files
GUI/src/dialogs/DialogManager.h
2023-09-08 17:10:25 +08:00

101 lines
3.1 KiB
C++

//
// Created by Krad on 2022/7/19.
//
#ifndef GUI_DIALOGMANAGER_H
#define GUI_DIALOGMANAGER_H
#include "GUIFormBaseDialog.h"
#include <QObject>
#include <QPointer>
#include <QVariant>
#include <mutex>
class GUIMessageDialog;
class QSqlTableModel;
class QTableView;
class PatientInformation;
class LoginDialog;
class ScreenSaverWindow;
enum MessageLevel:unsigned int;
struct DialogResult
{
DialogResult(int aResultCode, const QVariant& aResultData)
{
ResultCode = aResultCode;
ResultData = aResultData;
};
int ResultCode;
QVariant ResultData;
};
class DialogManager:public QObject {
Q_OBJECT
public:
static DialogManager *Default() {
static DialogManager manager;
return &manager;
}
DialogManager();
~DialogManager() override;
void init(QWidget* aParent);
void requestLogin(QWidget* aParent);
void requestScreenSaverPlay();
void requestScreenSaverStop(bool aIsStopLocker = false);
int requestAddAccount(QSqlTableModel* model);
int requestEditSelfAccount();
int requestEditAdminAccount(const QMap<QString, QVariant>& values);
int requestEditPatientInfo(PatientInformation* aPatientFrom, QSqlTableModel* aModel);
int requestAlertMessage(const QString& aMessage, DialogButtonMode aButtonMode,const QString& aTitle = QString());
DialogResult requestSelectDate(const QString& aDate);
DialogResult requestSelectTime(const int& aSeconds);
DialogResult requestSelectLanguage();
DialogResult requestSelectProtocal();
DialogResult requestSelectFilter();
int requestEditDicomConfig();
int requestInputAdminPasswd();
int requestEditNetworkConfig();
int requestGetWorkList(QSqlTableModel* aModel, QTableView* aTableView);
int requestPatientConfirm(PatientInformation* patientInf, int type);
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);
signals:
void loginDialogShown();
private:
LoginDialog* mFunctionDialog;
ScreenSaverWindow* mScreenSaverWindow;
QPointer<GUIMessageDialog> mOperationMessageDialog;
QPointer<GUIMessageDialog> mSyncDialog;
QWidget* mTopWidget;
std::mutex mMutex;
int mDialogCount = 0;
};
#endif //GUI_DIALOGMANAGER_H