1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212
|
// SPDX-FileCopyrightText: 2015 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef DAPPLICATION_H
#define DAPPLICATION_H
#include <dtkwidget_global.h>
#include <DObject>
#include <DPalette>
#include <QApplication>
DWIDGET_BEGIN_NAMESPACE
DGUI_USE_NAMESPACE
#define DAPPLICATION_XSTRING(s) DAPPLICATION_STRING(s)
#define DAPPLICATION_STRING(s) #s
class DApplication;
class DApplicationPrivate;
class DAboutDialog;
class DFeatureDisplayDialog;
class DLicenseDialog;
class DAppHandler;
#if defined(qApp)
#undef qApp
#endif
#define qApp (static_cast<Dtk::Widget::DApplication *>(QCoreApplication::instance()))
class LIBDTKWIDGETSHARED_EXPORT DApplication : public QApplication, public DTK_CORE_NAMESPACE::DObject
{
Q_OBJECT
D_DECLARE_PRIVATE(DApplication)
Q_PROPERTY(bool visibleMenuShortcutText READ visibleMenuShortcutText WRITE setVisibleMenuShortcutText)
Q_PROPERTY(bool visibleMenuCheckboxWidget READ visibleMenuCheckboxWidget WRITE setVisibleMenuCheckboxWidget)
Q_PROPERTY(bool visibleMenuIcon READ visibleMenuIcon WRITE setVisibleMenuIcon)
Q_PROPERTY(bool autoActivateWindows READ autoActivateWindows WRITE setAutoActivateWindows)
Q_PROPERTY(QString applicationCreditsFile READ applicationCreditsFile WRITE setApplicationCreditsFile)
Q_PROPERTY(QByteArray applicationCreditsContent READ applicationCreditsContent WRITE setApplicationCreditsContent)
Q_PROPERTY(QString licensePath READ licensePath WRITE setLicensePath)
public:
static DApplication *globalApplication(int &argc, char **argv);
DApplication(int &argc, char **argv);
~DApplication();
enum SingleScope {
UserScope,
SystemScope
};
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
D_DECL_DEPRECATED QString theme() const;
D_DECL_DEPRECATED void setTheme(const QString &theme);
#endif
#ifdef Q_OS_UNIX
void setOOMScoreAdj(const int score);
#endif
bool setSingleInstance(const QString &key);
bool setSingleInstance(const QString &key, SingleScope singleScope);
bool loadTranslator(QList<QLocale> localeFallback = QList<QLocale>() << QLocale::system());
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
//! warning: Must call before QGuiApplication defined object
D_DECL_DEPRECATED static bool loadDXcbPlugin();
#endif
static bool isDXcbPlatform();
// return the libdtkwidget version of build application
static int buildDtkVersion();
// return the libdtkwidget version of runing application
static int runtimeDtkVersion();
// let startdde know that we've already started.
static void registerDDESession();
static void customQtThemeConfigPathByUserHome(const QString &home);
static void customQtThemeConfigPath(const QString &path);
static QString customizedQtThemeConfigPath();
// meta information that necessary to create a about dialog for the application.
QString productName() const;
void setProductName(const QString &productName);
const QIcon &productIcon() const;
void setProductIcon(const QIcon &productIcon);
QString applicationLicense() const;
void setApplicationLicense(const QString &license);
QString applicationDescription() const;
void setApplicationDescription(const QString &description);
QString applicationHomePage() const;
void setApplicationHomePage(const QString &link);
QString applicationAcknowledgementPage() const;
void setApplicationAcknowledgementPage(const QString &link);
bool applicationAcknowledgementVisible() const;
void setApplicationAcknowledgementVisible(bool visible);
DAboutDialog *aboutDialog();
void setAboutDialog(DAboutDialog *aboutDialog);
DFeatureDisplayDialog *featureDisplayDialog();
void setFeatureDisplayDialog(DFeatureDisplayDialog *featureDisplayDialog);
bool visibleMenuShortcutText() const;
void setVisibleMenuShortcutText(bool value);
bool visibleMenuCheckboxWidget() const;
void setVisibleMenuCheckboxWidget(bool value);
bool visibleMenuIcon() const;
void setVisibleMenuIcon(bool value);
bool autoActivateWindows() const;
void setAutoActivateWindows(bool autoActivateWindows);
// 使窗口内的输入框自动适应虚拟键盘
void acclimatizeVirtualKeyboard(QWidget *window);
void ignoreVirtualKeyboard(QWidget *window);
bool isAcclimatizedVirtualKeyboard(QWidget *window) const;
QString applicationCreditsFile() const;
void setApplicationCreditsFile(const QString &file);
QByteArray applicationCreditsContent() const;
void setApplicationCreditsContent(const QByteArray &content);
QString licensePath() const;
void setLicensePath(const QString &path);
#ifdef VERSION
static inline QString buildVersion(const QString &fallbackVersion)
{
QString autoVersion = DAPPLICATION_XSTRING(VERSION);
if (autoVersion.isEmpty()) {
autoVersion = fallbackVersion;
}
return autoVersion;
}
#else
static inline QString buildVersion(const QString &fallbackVersion)
{
return fallbackVersion;
}
#endif
Q_SIGNALS:
void newInstanceStarted();
//###(zccrs): Depend the Qt platform theme plugin(from the package: dde-qt5integration)
void iconThemeChanged();
//###(zccrs): Emit form the Qt platform theme plugin(from the package: dde-qt5integration)
void screenDevicePixelRatioChanged(QScreen *screen);
public:
void setCustomHandler(DAppHandler *handler);
DAppHandler *customHandler();
protected:
virtual void handleHelpAction();
virtual void handleAboutAction();
virtual void handleQuitAction();
public:
bool notify(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
private:
friend class DTitlebarPrivate;
friend class DMainWindowPrivate;
D_PRIVATE_SLOT(void _q_onNewInstanceStarted())
D_PRIVATE_SLOT(void _q_panWindowContentsForVirtualKeyboard())
D_PRIVATE_SLOT(void _q_resizeWindowContentsForVirtualKeyboard())
D_PRIVATE_SLOT(void _q_sizeModeChanged())
};
class LIBDTKWIDGETSHARED_EXPORT DAppHandler {
public:
inline virtual ~DAppHandler() = default;
virtual void handleHelpAction() = 0;
virtual void handleAboutAction() = 0;
virtual void handleQuitAction() = 0;
};
class DtkBuildVersion {
public:
static int value;
};
#ifndef LIBDTKWIDGET_LIBRARY
class Q_DECL_HIDDEN _DtkBuildVersion {
public:
_DtkBuildVersion() {
DtkBuildVersion::value = DTK_VERSION;
}
};
static _DtkBuildVersion _dtk_build_version;
#endif
DWIDGET_END_NAMESPACE
#endif // DAPPLICATION_H
|