DtkGui
DTK Gui module
载入中...
搜索中...
未找到
personalizationwaylandclientextension.h
1// SPDX-FileCopyrightText: 2024 - 2026 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);
52};
53
54class PersonalizationAppearanceContext : public QWaylandClientExtensionTemplate<PersonalizationAppearanceContext>,
55 public QtWayland::treeland_personalization_appearance_context_v1
56{
57 Q_OBJECT
58public:
59 explicit PersonalizationAppearanceContext(struct ::treeland_personalization_appearance_context_v1 *context, DTreelandPlatformInterface *interface);
61
62protected:
63 void treeland_personalization_appearance_context_v1_round_corner_radius(int32_t radius) override;
64 void treeland_personalization_appearance_context_v1_icon_theme(const QString &theme_name) override;
65 void treeland_personalization_appearance_context_v1_active_color(const QString &active_color) override;
66 void treeland_personalization_appearance_context_v1_window_theme_type(uint32_t type) override;
67 void treeland_personalization_appearance_context_v1_window_opacity(uint32_t opacity) override;
68private:
69 DTreelandPlatformInterface *m_interface;
70};
71
72class PersonalizationFontContext : public QWaylandClientExtensionTemplate<PersonalizationFontContext>,
73 public QtWayland::treeland_personalization_font_context_v1
74{
75 Q_OBJECT
76public:
77 explicit PersonalizationFontContext(struct ::treeland_personalization_font_context_v1 *context, DTreelandPlatformInterface *interface);
79
80protected:
81 void treeland_personalization_font_context_v1_font(const QString &font_name) override;
82 void treeland_personalization_font_context_v1_monospace_font(const QString &font_name) override;
83 void treeland_personalization_font_context_v1_font_size(uint32_t font_size) override;
84private:
85 DTreelandPlatformInterface *m_interface;
86};
87
88DGUI_END_NAMESPACE
89
90#endif // PERSONALIZATIONWAYLANDCLIENTEXTENSION_H
Definition dtreelandplatforminterface.h:23
Definition personalizationwaylandclientextension.h:56
Definition personalizationwaylandclientextension.h:74
Definition personalizationwaylandclientextension.h:26
Definition personalizationwaylandclientextension.h:47