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

#ifndef QT_WAYLAND_PLUGIN_MANAGER_V1
#define QT_WAYLAND_PLUGIN_MANAGER_V1

#include "wayland-plugin-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  plugin_manager_v1
    {
    public:
        plugin_manager_v1(struct ::wl_registry *registry, uint32_t id, int version);
        plugin_manager_v1(struct ::plugin_manager_v1 *object);
        plugin_manager_v1();

        virtual ~plugin_manager_v1();

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

        struct ::plugin_manager_v1 *object() { return m_plugin_manager_v1; }
        const struct ::plugin_manager_v1 *object() const { return m_plugin_manager_v1; }
        static plugin_manager_v1 *fromObject(struct ::plugin_manager_v1 *object);

        bool isInitialized() const;

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

        enum error {
            error_role = 0, // given wl_surface has another role
            error_plugin_id = 1, // given wl_surface has another plugin_id
        };

        void destroy();
        void request_message(const QString &plugin_id, const QString &item_key, const QString &msg);
        struct ::plugin_popup *create_popup_at(const QString &plugin_id, const QString &item_key, int32_t type, int32_t x, int32_t y, struct ::wl_surface *surface);
        struct ::plugin *create_plugin(const QString &plugin_id, const QString &item_key, const QString &display_name, int32_t plugin_flags, int32_t type, int32_t size_policy, struct ::wl_surface *surface);
        struct ::wl_callback *move_xembed_window(uint32_t xembed_winid, const QString &plugin_id, const QString &item_key);

    protected:
        virtual void plugin_manager_v1_position_changed(uint32_t dock_position);
        virtual void plugin_manager_v1_color_theme_changed(uint32_t dock_color_theme);
        virtual void plugin_manager_v1_active_color_changed(const QString &active_color, const QString &dark_active_color);
        virtual void plugin_manager_v1_font_changed(const QString &font_name, int32_t font_point_size);
        virtual void plugin_manager_v1_theme_changed(const QString &theme_name, const QString &icon_theme_name);
        virtual void plugin_manager_v1_event_message(const QString &msg);

    private:
        void init_listener();
        static const struct plugin_manager_v1_listener m_plugin_manager_v1_listener;
        static void handle_position_changed(
            void *data,
            struct ::plugin_manager_v1 *object,
            uint32_t dock_position);
        static void handle_color_theme_changed(
            void *data,
            struct ::plugin_manager_v1 *object,
            uint32_t dock_color_theme);
        static void handle_active_color_changed(
            void *data,
            struct ::plugin_manager_v1 *object,
            const char *active_color,
            const char *dark_active_color);
        static void handle_font_changed(
            void *data,
            struct ::plugin_manager_v1 *object,
            const char *font_name,
            int32_t font_point_size);
        static void handle_theme_changed(
            void *data,
            struct ::plugin_manager_v1 *object,
            const char *theme_name,
            const char *icon_theme_name);
        static void handle_event_message(
            void *data,
            struct ::plugin_manager_v1 *object,
            const char *msg);
        struct ::plugin_manager_v1 *m_plugin_manager_v1;
    };

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

        virtual ~plugin_popup();

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

        struct ::plugin_popup *object() { return m_plugin_popup; }
        const struct ::plugin_popup *object() const { return m_plugin_popup; }
        static plugin_popup *fromObject(struct ::plugin_popup *object);

        bool isInitialized() const;

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

        void destroy();
        void set_position(int32_t x, int32_t y);
        void source_size(int32_t width, int32_t height);
        void set_cursor(int32_t cursor_shape);

    protected:
        virtual void plugin_popup_close();
        virtual void plugin_popup_geometry(int32_t x, int32_t y, int32_t width, int32_t height);

    private:
        void init_listener();
        static const struct plugin_popup_listener m_plugin_popup_listener;
        static void handle_close(
            void *data,
            struct ::plugin_popup *object);
        static void handle_geometry(
            void *data,
            struct ::plugin_popup *object,
            int32_t x,
            int32_t y,
            int32_t width,
            int32_t height);
        struct ::plugin_popup *m_plugin_popup;
    };

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

        virtual ~plugin();

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

        struct ::plugin *object() { return m_plugin; }
        const struct ::plugin *object() const { return m_plugin; }
        static plugin *fromObject(struct ::plugin *object);

        bool isInitialized() const;

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

        void destroy();
        void mouse_event(int32_t type);
        void dcc_icon(const QString &type);
        void request_shutdown(const QString &type);
        void source_size(int32_t width, int32_t height);
        void close_quick_panel();

    protected:
        virtual void plugin_close();
        virtual void plugin_geometry(int32_t x, int32_t y, int32_t width, int32_t height);
        virtual void plugin_margin(int32_t spacing);
        virtual void plugin_raw_global_pos(int32_t x, int32_t y);

    private:
        void init_listener();
        static const struct plugin_listener m_plugin_listener;
        static void handle_close(
            void *data,
            struct ::plugin *object);
        static void handle_geometry(
            void *data,
            struct ::plugin *object,
            int32_t x,
            int32_t y,
            int32_t width,
            int32_t height);
        static void handle_margin(
            void *data,
            struct ::plugin *object,
            int32_t spacing);
        static void handle_raw_global_pos(
            void *data,
            struct ::plugin *object,
            int32_t x,
            int32_t y);
        struct ::plugin *m_plugin;
    };
}

QT_WARNING_POP
QT_END_NAMESPACE

#endif
