101 lines
3.1 KiB
C++
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
|