DtkGui
DTK Gui module
载入中...
搜索中...
未找到
personalizationwaylandclientextension.h
1// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef PERSONALIZATIONWAYLANDCLIENTEXTENSION_H
6#define PERSONALIZATIONWAYLANDCLIENTEXTENSION_H
7
8#include "dtreelandplatforminterface.h"
9#include "qwayland-treeland-personalization-manager-v1.h"
10
11#include <dtkgui_global.h>
12#include <private/qwaylanddisplay_p.h>
13
14#include <QtWaylandClient/QWaylandClientExtension>
15#include <QWaylandClientExtensionTemplate>
16
17DGUI_BEGIN_NAMESPACE
18
19class PersonalizationAppearanceContext;
20class PersonalizationCursorContext;
21class PersonalizationFontContext;
22class DTreelandPlatformInterfacePrivate;
23
24class PersonalizationManager: public QWaylandClientExtensionTemplate<PersonalizationManager>,
25 public QtWayland::treeland_personalization_manager_v1
26{
27 Q_OBJECT
28public:
29 static PersonalizationManager *instance();
30
31 [[nodiscard]]inline bool isSupported() const { return m_isSupported; }
32
33private:
34 void addListener();
35 void removeListener();
36
37 explicit PersonalizationManager();
38 static void handleListenerGlobal(void *data, wl_registry *registry, uint32_t id, const QString &interface, uint32_t version);
39
40private:
41 QtWaylandClient::QWaylandDisplay *m_waylandDisplay;
42 bool m_isSupported;
43};
44
45class PersonalizationWindowContext : public QWaylandClientExtensionTemplate<PersonalizationWindowContext>,
46 public QtWayland::treeland_personalization_window_context_v1
47{
48 Q_OBJECT
49public:
50 explicit PersonalizationWindowContext(struct ::treeland_personalization_window_context_v1 *context);
51};
52
53class PersonalizationAppearanceContext : public QWaylandClientExtensionTemplate<PersonalizationAppearanceContext>,
54 public QtWayland::treeland_personalization_appearance_context_v1
55{
56 Q_OBJECT
57public:
58 explicit PersonalizationAppearanceContext(struct ::treeland_personalization_appearance_context_v1 *context, DTreelandPlatformInterface *interface);
59
60protected:
61 void treeland_personalization_appearance_context_v1_round_corner_radius(int32_t radius) override;
62 void treeland_personalization_appearance_context_v1_icon_theme(const QString &theme_name) override;
63 void treeland_personalization_appearance_context_v1_active_color(const QString &active_color) override;
64 void treeland_personalization_appearance_context_v1_window_theme_type(uint32_t type) override;
65 void treeland_personalization_appearance_context_v1_window_opacity(uint32_t opacity) override;
66private:
67 DTreelandPlatformInterface *m_interface;
68};
69
70class PersonalizationFontContext : public QWaylandClientExtensionTemplate<PersonalizationFontContext>,
71 public QtWayland::treeland_personalization_font_context_v1
72{
73 Q_OBJECT
74public:
75 explicit PersonalizationFontContext(struct ::treeland_personalization_font_context_v1 *context, DTreelandPlatformInterface *interface);
76
77protected:
78 void treeland_personalization_font_context_v1_font(const QString &font_name) override;
79 void treeland_personalization_font_context_v1_monospace_font(const QString &font_name) override;
80 void treeland_personalization_font_context_v1_font_size(uint32_t font_size) override;
81private:
82 DTreelandPlatformInterface *m_interface;
83};
84
85DGUI_END_NAMESPACE
86
87#endif // PERSONALIZATIONWAYLANDCLIENTEXTENSION_H
Definition dtreelandplatforminterface.h:23
Definition personalizationwaylandclientextension.h:55
Definition personalizationwaylandclientextension.h:72
Definition personalizationwaylandclientextension.h:26
Definition personalizationwaylandclientextension.h:47