2024-08-23 00:04:16 +08:00
|
|
|
#ifndef UTILITIES_H
|
|
|
|
#define UTILITIES_H
|
|
|
|
|
|
|
|
#include <QObject>
|
|
|
|
#include <QQmlEngine>
|
|
|
|
#include <QQuickWindow>
|
|
|
|
|
2024-08-31 04:13:21 +08:00
|
|
|
#define Q_PROPERTY_AUTO(TYPE, M) \
|
|
|
|
Q_PROPERTY(TYPE M MEMBER m_##M NOTIFY M##Changed) \
|
|
|
|
public: \
|
|
|
|
Q_SIGNAL void M##Changed(); \
|
|
|
|
void M(const TYPE &in_##M) { \
|
|
|
|
m_##M = in_##M; \
|
|
|
|
Q_EMIT M##Changed(); \
|
|
|
|
} \
|
|
|
|
TYPE M() { \
|
|
|
|
return m_##M; \
|
|
|
|
} \
|
|
|
|
\
|
|
|
|
private: \
|
|
|
|
TYPE m_##M;
|
|
|
|
|
|
|
|
#define Q_PROPERTY_READONLY_AUTO(TYPE, M) \
|
|
|
|
Q_PROPERTY(TYPE M READ M NOTIFY M##Changed FINAL) \
|
|
|
|
public: \
|
|
|
|
Q_SIGNAL void M##Changed(); \
|
|
|
|
void M(const TYPE &in_##M) { \
|
|
|
|
m_##M = in_##M; \
|
|
|
|
Q_EMIT M##Changed(); \
|
|
|
|
} \
|
|
|
|
TYPE M() { \
|
|
|
|
return m_##M; \
|
|
|
|
} \
|
|
|
|
\
|
|
|
|
private: \
|
|
|
|
TYPE m_##M;
|
|
|
|
|
|
|
|
#define Q_PROPERTY_AUTO_P(TYPE, M) \
|
|
|
|
Q_PROPERTY(TYPE M MEMBER m_##M NOTIFY M##Changed) \
|
|
|
|
public: \
|
|
|
|
Q_SIGNAL void M##Changed(); \
|
|
|
|
void M(TYPE in_##M) { \
|
|
|
|
m_##M = in_##M; \
|
|
|
|
Q_EMIT M##Changed(); \
|
|
|
|
} \
|
|
|
|
TYPE M() { \
|
|
|
|
return m_##M; \
|
|
|
|
} \
|
|
|
|
\
|
|
|
|
private: \
|
|
|
|
TYPE m_##M;
|
|
|
|
|
|
|
|
namespace WindowType {
|
|
|
|
Q_NAMESPACE
|
|
|
|
enum LaunchMode {
|
|
|
|
Standard = 0x0000,
|
|
|
|
SingleTask = 0x0001,
|
|
|
|
SingleInstance = 0x0002,
|
|
|
|
};
|
|
|
|
Q_ENUM_NS(LaunchMode)
|
|
|
|
QML_ELEMENT
|
|
|
|
} // namespace WindowType
|
|
|
|
|
|
|
|
namespace ThemeType {
|
|
|
|
Q_NAMESPACE
|
|
|
|
enum DarkMode {
|
|
|
|
System = 0x0000,
|
|
|
|
Light = 0x0001,
|
|
|
|
Dark = 0x0002,
|
|
|
|
};
|
|
|
|
Q_ENUM_NS(DarkMode)
|
|
|
|
QML_ELEMENT
|
|
|
|
} // namespace ThemeType
|
|
|
|
|
|
|
|
namespace ContentDialogType {
|
|
|
|
Q_NAMESPACE
|
|
|
|
enum ButtonFlag {
|
|
|
|
NeutralButton = 0x0001,
|
|
|
|
NegativeButton = 0x0002,
|
|
|
|
PositiveButton = 0x0004,
|
|
|
|
};
|
|
|
|
Q_ENUM_NS(ButtonFlag)
|
|
|
|
QML_ELEMENT
|
|
|
|
} // namespace ContentDialogType
|
|
|
|
|
2024-08-23 00:04:16 +08:00
|
|
|
class Utilities : public QObject {
|
|
|
|
Q_OBJECT
|
|
|
|
QML_ELEMENT
|
|
|
|
QML_SINGLETON
|
|
|
|
public:
|
|
|
|
static Utilities *instance();
|
|
|
|
static Utilities *create(QQmlEngine *, QJSEngine *);
|
|
|
|
Q_INVOKABLE int windowBuildNumber();
|
|
|
|
Q_INVOKABLE bool isWindows11OrGreater();
|
|
|
|
Q_INVOKABLE bool isWin();
|
|
|
|
Q_INVOKABLE bool isMacos();
|
|
|
|
Q_INVOKABLE QRect desktopAvailableGeometry(QQuickWindow *window);
|
|
|
|
Q_INVOKABLE QUrl getUrlByFilePath(const QString &path);
|
2024-08-31 04:13:21 +08:00
|
|
|
Q_INVOKABLE bool isSoftware();
|
|
|
|
Q_INVOKABLE void deleteLater(QObject *p);
|
|
|
|
Q_INVOKABLE QColor withOpacity(const QColor &, qreal alpha);
|
|
|
|
Q_INVOKABLE QString getWallpaperFilePath();
|
2024-08-23 00:04:16 +08:00
|
|
|
|
|
|
|
protected:
|
|
|
|
Utilities(QObject *parent = nullptr);
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // UTILITIES_H
|