#pragma once

#include "WaylandPointerInterface.h"
#include "WaylandKeyboard.h"

#include "wayland-client.h"

#include <memory>

class WaylandSeatInterface
{
public:
    WaylandSeatInterface(wl_seat* seat);

private:
    static void seatCapabilitiesEvent(void *data, struct wl_seat *wl_seat, uint32_t capabilities);

    static void seatNameEvent(void *data, struct wl_seat *wl_seat, const char *name);

    void onSeatCapabilitiesEvent(uint32_t capabilities);

    wl_seat* mSeat{nullptr};
    wl_seat_listener mSeatListener;

    std::unique_ptr<WaylandKeyboard> mKeyboard;
    std::unique_ptr<WaylandPointerInterface> mPointerInterface;
};
