DtkWidget 5.6.0.2
DTK Widget module
dapplication.h
1// SPDX-FileCopyrightText: 2015 - 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DAPPLICATION_H
6#define DAPPLICATION_H
7
8#include <dtkwidget_global.h>
9#include <DObject>
10#include <DPalette>
11
12#include <QApplication>
13
14DGUI_USE_NAMESPACE
15DWIDGET_BEGIN_NAMESPACE
16
17#define DAPPLICATION_XSTRING(s) DAPPLICATION_STRING(s)
18#define DAPPLICATION_STRING(s) #s
19
20class DApplication;
21class DApplicationPrivate;
22class DAboutDialog;
23class DAppHandler;
24
25#if defined(qApp)
26#undef qApp
27#endif
28#define qApp (static_cast<DApplication *>(QCoreApplication::instance()))
29
30class LIBDTKWIDGETSHARED_EXPORT DApplication : public QApplication, public DTK_CORE_NAMESPACE::DObject
31{
32 Q_OBJECT
33 D_DECLARE_PRIVATE(DApplication)
34 Q_PROPERTY(bool visibleMenuShortcutText READ visibleMenuShortcutText WRITE setVisibleMenuShortcutText)
35 Q_PROPERTY(bool visibleMenuCheckboxWidget READ visibleMenuCheckboxWidget WRITE setVisibleMenuCheckboxWidget)
36 Q_PROPERTY(bool visibleMenuIcon READ visibleMenuIcon WRITE setVisibleMenuIcon)
37 Q_PROPERTY(bool autoActivateWindows READ autoActivateWindows WRITE setAutoActivateWindows)
38
39public:
40 static DApplication *globalApplication(int &argc, char **argv);
41
42 DApplication(int &argc, char **argv);
43
44 enum SingleScope {
45 UserScope,
46 SystemScope
47 };
48
49 D_DECL_DEPRECATED QString theme() const;
50 D_DECL_DEPRECATED void setTheme(const QString &theme);
51
52#ifdef Q_OS_UNIX
53 void setOOMScoreAdj(const int score);
54#endif
55
56 bool setSingleInstance(const QString &key);
57 bool setSingleInstance(const QString &key, SingleScope singleScope);
58
59 bool loadTranslator(QList<QLocale> localeFallback = QList<QLocale>() << QLocale::system());
60
62 D_DECL_DEPRECATED static bool loadDXcbPlugin();
63 static bool isDXcbPlatform();
64
65 // return the libdtkwidget version of build application
66 static int buildDtkVersion();
67 // return the libdtkwidget version of runing application
68 static int runtimeDtkVersion();
69
70 // let startdde know that we've already started.
71 static void registerDDESession();
72
73 static void customQtThemeConfigPathByUserHome(const QString &home);
74 static void customQtThemeConfigPath(const QString &path);
75 static QString customizedQtThemeConfigPath();
76
77 // meta information that necessary to create a about dialog for the application.
78 QString productName() const;
79 void setProductName(const QString &productName);
80
81 const QIcon &productIcon() const;
82 void setProductIcon(const QIcon &productIcon);
83
84 QString applicationLicense() const;
85 void setApplicationLicense(const QString &license);
86
87 QString applicationDescription() const;
88 void setApplicationDescription(const QString &description);
89
90 QString applicationHomePage() const;
91 void setApplicationHomePage(const QString &link);
92
93 QString applicationAcknowledgementPage() const;
94 void setApplicationAcknowledgementPage(const QString &link);
95
96 bool applicationAcknowledgementVisible() const;
97 void setApplicationAcknowledgementVisible(bool visible);
98
99 DAboutDialog *aboutDialog();
100 void setAboutDialog(DAboutDialog *aboutDialog);
101
102 bool visibleMenuShortcutText() const;
103 void setVisibleMenuShortcutText(bool value);
104
105 bool visibleMenuCheckboxWidget() const;
106 void setVisibleMenuCheckboxWidget(bool value);
107
108 bool visibleMenuIcon() const;
109 void setVisibleMenuIcon(bool value);
110
111 bool autoActivateWindows() const;
112 void setAutoActivateWindows(bool autoActivateWindows);
113
114 // 使窗口内的输入框自动适应虚拟键盘
115 void acclimatizeVirtualKeyboard(QWidget *window);
116 void ignoreVirtualKeyboard(QWidget *window);
117 bool isAcclimatizedVirtualKeyboard(QWidget *window) const;
118
119#ifdef VERSION
120 static inline QString buildVersion(const QString &fallbackVersion)
121 {
122 QString autoVersion = DAPPLICATION_XSTRING(VERSION);
123 if (autoVersion.isEmpty()) {
124 autoVersion = fallbackVersion;
125 }
126 return autoVersion;
127 }
128#else
129 static inline QString buildVersion(const QString &fallbackVersion)
130 {
131 return fallbackVersion;
132 }
133#endif
134
135Q_SIGNALS:
137
138 //###(zccrs): Depend the Qt platform theme plugin(from the package: dde-qt5integration)
140 //###(zccrs): Emit form the Qt platform theme plugin(from the package: dde-qt5integration)
141 void screenDevicePixelRatioChanged(QScreen *screen);
142
143public:
144 void setCustomHandler(DAppHandler *handler);
145 DAppHandler *customHandler();
146
147protected:
148 virtual void handleHelpAction();
149 virtual void handleAboutAction();
150 virtual void handleQuitAction();
151
152public:
153 bool notify(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
154
155private:
156 friend class DTitlebarPrivate;
157 friend class DMainWindowPrivate;
158
159 D_PRIVATE_SLOT(void _q_onNewInstanceStarted())
160 D_PRIVATE_SLOT(void _q_panWindowContentsForVirtualKeyboard())
161 D_PRIVATE_SLOT(void _q_resizeWindowContentsForVirtualKeyboard())
162};
163
164class LIBDTKWIDGETSHARED_EXPORT DAppHandler {
165public:
166 inline virtual ~DAppHandler() = default;
167
168 virtual void handleHelpAction() = 0;
169 virtual void handleAboutAction() = 0;
170 virtual void handleQuitAction() = 0;
171};
172
174public:
175 static int value;
176};
177
178#ifndef LIBDTKWIDGET_LIBRARY
179class Q_DECL_HIDDEN _DtkBuildVersion {
180public:
182 DtkBuildVersion::value = DTK_VERSION;
183 }
184};
185
186static _DtkBuildVersion _dtk_build_version;
187#endif
188
189DWIDGET_END_NAMESPACE
190
191#endif // DAPPLICATION_H
DAboutDialog 类提供了应用程序的关于对话框,规范所有 deepin 应用关于窗口设计规范,符合 Deepin 风格.
Definition: daboutdialog.h:14
Definition: dapplication.h:164
DApplication 是 DTK 中用于替换 QCoreApplication 相关功能实现的类.
Definition: dapplication.h:31
void iconThemeChanged()
该信号在系统图标主题发生改变的时候被触发.
void newInstanceStarted()
该信号会在程序的一个新实例启动的时候被触发.
void screenDevicePixelRatioChanged(QScreen *screen)
该信号在对应屏幕 screen 的缩放比可能发现变化时触发.
Definition: dmainwindow_p.h:21
Definition: dtitlebar.cpp:52
Definition: dapplication.h:173
Definition: dapplication.h:179
QLocale system()
bool isEmpty() const const