// This file was generated by qtwaylandscanner
// source file is treeland-personalization-manager-v1.xml

#ifndef QT_WAYLAND_TREELAND_PERSONALIZATION_MANAGER_V1
#define QT_WAYLAND_TREELAND_PERSONALIZATION_MANAGER_V1

#include "wayland-treeland-personalization-manager-v1-client-protocol.h"
#include <QByteArray>
#include <QString>

struct wl_registry;

QT_BEGIN_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_GCC("-Wmissing-field-initializers")
QT_WARNING_DISABLE_CLANG("-Wmissing-field-initializers")

namespace QtWayland {
    class  treeland_personalization_manager_v1
    {
    public:
        treeland_personalization_manager_v1(struct ::wl_registry *registry, uint32_t id, int version);
        treeland_personalization_manager_v1(struct ::treeland_personalization_manager_v1 *object);
        treeland_personalization_manager_v1();

        virtual ~treeland_personalization_manager_v1();

        void init(struct ::wl_registry *registry, uint32_t id, int version);
        void init(struct ::treeland_personalization_manager_v1 *object);

        struct ::treeland_personalization_manager_v1 *object() { return m_treeland_personalization_manager_v1; }
        const struct ::treeland_personalization_manager_v1 *object() const { return m_treeland_personalization_manager_v1; }
        static treeland_personalization_manager_v1 *fromObject(struct ::treeland_personalization_manager_v1 *object);

        bool isInitialized() const;

        uint32_t version() const;
        static const struct ::wl_interface *interface();

        struct ::treeland_personalization_window_context_v1 *get_window_context(struct ::wl_surface *surface);
        struct ::treeland_personalization_wallpaper_context_v1 *get_wallpaper_context();
        struct ::treeland_personalization_cursor_context_v1 *get_cursor_context();
        struct ::treeland_personalization_font_context_v1 *get_font_context();
        struct ::treeland_personalization_appearance_context_v1 *get_appearance_context();
        void destroy();

    private:
        struct ::treeland_personalization_manager_v1 *m_treeland_personalization_manager_v1;
    };

    class  treeland_personalization_wallpaper_context_v1
    {
    public:
        treeland_personalization_wallpaper_context_v1(struct ::wl_registry *registry, uint32_t id, int version);
        treeland_personalization_wallpaper_context_v1(struct ::treeland_personalization_wallpaper_context_v1 *object);
        treeland_personalization_wallpaper_context_v1();

        virtual ~treeland_personalization_wallpaper_context_v1();

        void init(struct ::wl_registry *registry, uint32_t id, int version);
        void init(struct ::treeland_personalization_wallpaper_context_v1 *object);

        struct ::treeland_personalization_wallpaper_context_v1 *object() { return m_treeland_personalization_wallpaper_context_v1; }
        const struct ::treeland_personalization_wallpaper_context_v1 *object() const { return m_treeland_personalization_wallpaper_context_v1; }
        static treeland_personalization_wallpaper_context_v1 *fromObject(struct ::treeland_personalization_wallpaper_context_v1 *object);

        bool isInitialized() const;

        uint32_t version() const;
        static const struct ::wl_interface *interface();

        enum options {
            options_preview = 1, // whether to show a preview of the picture
            options_background = 2, // configure screen background
            options_lockscreen = 4, // configure screen wallpaper
        };

        void set_fd(int32_t fd, const QString &metadata);
        void set_identifier(const QString &identifier);
        void set_output(const QString &output);
        void set_on(uint32_t options);
        void set_isdark(uint32_t isdark);
        void commit();
        void get_metadata();
        void destroy();

    protected:
        virtual void treeland_personalization_wallpaper_context_v1_metadata(const QString &metadata);

    private:
        void init_listener();
        static const struct treeland_personalization_wallpaper_context_v1_listener m_treeland_personalization_wallpaper_context_v1_listener;
        static void handle_metadata(
            void *data,
            struct ::treeland_personalization_wallpaper_context_v1 *object,
            const char *metadata);
        struct ::treeland_personalization_wallpaper_context_v1 *m_treeland_personalization_wallpaper_context_v1;
    };

    class  treeland_personalization_cursor_context_v1
    {
    public:
        treeland_personalization_cursor_context_v1(struct ::wl_registry *registry, uint32_t id, int version);
        treeland_personalization_cursor_context_v1(struct ::treeland_personalization_cursor_context_v1 *object);
        treeland_personalization_cursor_context_v1();

        virtual ~treeland_personalization_cursor_context_v1();

        void init(struct ::wl_registry *registry, uint32_t id, int version);
        void init(struct ::treeland_personalization_cursor_context_v1 *object);

        struct ::treeland_personalization_cursor_context_v1 *object() { return m_treeland_personalization_cursor_context_v1; }
        const struct ::treeland_personalization_cursor_context_v1 *object() const { return m_treeland_personalization_cursor_context_v1; }
        static treeland_personalization_cursor_context_v1 *fromObject(struct ::treeland_personalization_cursor_context_v1 *object);

        bool isInitialized() const;

        uint32_t version() const;
        static const struct ::wl_interface *interface();

        void set_theme(const QString &name);
        void get_theme();
        void set_size(uint32_t size);
        void get_size();
        void commit();
        void destroy();

    protected:
        virtual void treeland_personalization_cursor_context_v1_verfity(int32_t success);
        virtual void treeland_personalization_cursor_context_v1_theme(const QString &name);
        virtual void treeland_personalization_cursor_context_v1_size(uint32_t size);

    private:
        void init_listener();
        static const struct treeland_personalization_cursor_context_v1_listener m_treeland_personalization_cursor_context_v1_listener;
        static void handle_verfity(
            void *data,
            struct ::treeland_personalization_cursor_context_v1 *object,
            int32_t success);
        static void handle_theme(
            void *data,
            struct ::treeland_personalization_cursor_context_v1 *object,
            const char *name);
        static void handle_size(
            void *data,
            struct ::treeland_personalization_cursor_context_v1 *object,
            uint32_t size);
        struct ::treeland_personalization_cursor_context_v1 *m_treeland_personalization_cursor_context_v1;
    };

    class  treeland_personalization_window_context_v1
    {
    public:
        treeland_personalization_window_context_v1(struct ::wl_registry *registry, uint32_t id, int version);
        treeland_personalization_window_context_v1(struct ::treeland_personalization_window_context_v1 *object);
        treeland_personalization_window_context_v1();

        virtual ~treeland_personalization_window_context_v1();

        void init(struct ::wl_registry *registry, uint32_t id, int version);
        void init(struct ::treeland_personalization_window_context_v1 *object);

        struct ::treeland_personalization_window_context_v1 *object() { return m_treeland_personalization_window_context_v1; }
        const struct ::treeland_personalization_window_context_v1 *object() const { return m_treeland_personalization_window_context_v1; }
        static treeland_personalization_window_context_v1 *fromObject(struct ::treeland_personalization_window_context_v1 *object);

        bool isInitialized() const;

        uint32_t version() const;
        static const struct ::wl_interface *interface();

        enum blend_mode {
            blend_mode_transparent = 0, // Normal blend mode, just composite over background with alpha channel
            blend_mode_wallpaper = 1, // Composite window over wallpaper
            blend_mode_blur = 2, // Blur the content of the window background
        };

        enum enable_mode {
            enable_mode_enable = 0, // force enable titlebar
            enable_mode_disable = 1, // force disable titlebar
        };

        void set_blend_mode(int32_t mode);
        void set_round_corner_radius(int32_t radius);
        void set_shadow(int32_t radius, int32_t offset_x, int32_t offset_y, int32_t r, int32_t g, int32_t b, int32_t a);
        void set_border(int32_t width, int32_t r, int32_t g, int32_t b, int32_t a);
        void set_titlebar(int32_t mode);
        void destroy();

    private:
        struct ::treeland_personalization_window_context_v1 *m_treeland_personalization_window_context_v1;
    };

    class  treeland_personalization_font_context_v1
    {
    public:
        treeland_personalization_font_context_v1(struct ::wl_registry *registry, uint32_t id, int version);
        treeland_personalization_font_context_v1(struct ::treeland_personalization_font_context_v1 *object);
        treeland_personalization_font_context_v1();

        virtual ~treeland_personalization_font_context_v1();

        void init(struct ::wl_registry *registry, uint32_t id, int version);
        void init(struct ::treeland_personalization_font_context_v1 *object);

        struct ::treeland_personalization_font_context_v1 *object() { return m_treeland_personalization_font_context_v1; }
        const struct ::treeland_personalization_font_context_v1 *object() const { return m_treeland_personalization_font_context_v1; }
        static treeland_personalization_font_context_v1 *fromObject(struct ::treeland_personalization_font_context_v1 *object);

        bool isInitialized() const;

        uint32_t version() const;
        static const struct ::wl_interface *interface();

        void set_font_size(uint32_t size);
        void get_font_size();
        void set_font(const QString &font_name);
        void get_font();
        void set_monospace_font(const QString &font_name);
        void get_monospace_font();
        void destroy();

    protected:
        virtual void treeland_personalization_font_context_v1_font(const QString &font_name);
        virtual void treeland_personalization_font_context_v1_monospace_font(const QString &font_name);
        virtual void treeland_personalization_font_context_v1_font_size(uint32_t font_size);

    private:
        void init_listener();
        static const struct treeland_personalization_font_context_v1_listener m_treeland_personalization_font_context_v1_listener;
        static void handle_font(
            void *data,
            struct ::treeland_personalization_font_context_v1 *object,
            const char *font_name);
        static void handle_monospace_font(
            void *data,
            struct ::treeland_personalization_font_context_v1 *object,
            const char *font_name);
        static void handle_font_size(
            void *data,
            struct ::treeland_personalization_font_context_v1 *object,
            uint32_t font_size);
        struct ::treeland_personalization_font_context_v1 *m_treeland_personalization_font_context_v1;
    };

    class  treeland_personalization_appearance_context_v1
    {
    public:
        treeland_personalization_appearance_context_v1(struct ::wl_registry *registry, uint32_t id, int version);
        treeland_personalization_appearance_context_v1(struct ::treeland_personalization_appearance_context_v1 *object);
        treeland_personalization_appearance_context_v1();

        virtual ~treeland_personalization_appearance_context_v1();

        void init(struct ::wl_registry *registry, uint32_t id, int version);
        void init(struct ::treeland_personalization_appearance_context_v1 *object);

        struct ::treeland_personalization_appearance_context_v1 *object() { return m_treeland_personalization_appearance_context_v1; }
        const struct ::treeland_personalization_appearance_context_v1 *object() const { return m_treeland_personalization_appearance_context_v1; }
        static treeland_personalization_appearance_context_v1 *fromObject(struct ::treeland_personalization_appearance_context_v1 *object);

        bool isInitialized() const;

        uint32_t version() const;
        static const struct ::wl_interface *interface();

        enum theme_type {
            theme_type_auto = 1, // window auto theme
            theme_type_light = 2, // window light theme
            theme_type_dark = 4, // window dark theme
        };

        enum error {
            error_invalid_round_corner_radius = 0, // Wrong round corner radius
            error_invalid_icon_theme = 1, // Wrong icon theme
            error_invalid_active_color = 2, // Wrong active color
            error_invalid_window_opacity = 4, // Wrong window opacity
            error_invalid_window_theme_type = 8, // Wrong theme type
            error_invalid_window_titlebar_height = 16, // Wrong window titlebar height
        };

        void set_round_corner_radius(int32_t radius);
        void get_round_corner_radius();
        void set_icon_theme(const QString &theme);
        void get_icon_theme();
        void set_active_color(const QString &color);
        void get_active_color();
        void set_window_opacity(uint32_t opacity);
        void get_window_opacity();
        void set_window_theme_type(uint32_t type);
        void get_window_theme_type();
        void set_window_titlebar_height(uint32_t height);
        void get_window_titlebar_height();
        void destroy();

    protected:
        virtual void treeland_personalization_appearance_context_v1_round_corner_radius(int32_t radius);
        virtual void treeland_personalization_appearance_context_v1_icon_theme(const QString &theme_name);
        virtual void treeland_personalization_appearance_context_v1_active_color(const QString &active_color);
        virtual void treeland_personalization_appearance_context_v1_window_opacity(uint32_t opacity);
        virtual void treeland_personalization_appearance_context_v1_window_theme_type(uint32_t type);
        virtual void treeland_personalization_appearance_context_v1_window_titlebar_height(uint32_t height);

    private:
        void init_listener();
        static const struct treeland_personalization_appearance_context_v1_listener m_treeland_personalization_appearance_context_v1_listener;
        static void handle_round_corner_radius(
            void *data,
            struct ::treeland_personalization_appearance_context_v1 *object,
            int32_t radius);
        static void handle_icon_theme(
            void *data,
            struct ::treeland_personalization_appearance_context_v1 *object,
            const char *theme_name);
        static void handle_active_color(
            void *data,
            struct ::treeland_personalization_appearance_context_v1 *object,
            const char *active_color);
        static void handle_window_opacity(
            void *data,
            struct ::treeland_personalization_appearance_context_v1 *object,
            uint32_t opacity);
        static void handle_window_theme_type(
            void *data,
            struct ::treeland_personalization_appearance_context_v1 *object,
            uint32_t type);
        static void handle_window_titlebar_height(
            void *data,
            struct ::treeland_personalization_appearance_context_v1 *object,
            uint32_t height);
        struct ::treeland_personalization_appearance_context_v1 *m_treeland_personalization_appearance_context_v1;
    };
}

QT_WARNING_POP
QT_END_NAMESPACE

#endif
