File indexing completed on 2024-05-12 09:36:13

0001 /*
0002  *  SPDX-FileCopyrightText: 2014-2015 Sebastian Kügler <sebas@kde.org>
0003  *  SPDX-FileCopyrightText: 2021 Méven Car <meven.car@enioka.com>
0004  *
0005  *  SPDX-License-Identifier: LGPL-2.1-or-later
0006  */
0007 #pragma once
0008 
0009 #include "qwayland-kde-output-management-v2.h"
0010 #include "qwayland-kde-output-order-v1.h"
0011 
0012 #include <QObject>
0013 #include <QSize>
0014 
0015 namespace KScreen
0016 {
0017 class WaylandConfig;
0018 class WaylandOutputDevice;
0019 
0020 class WaylandOutputConfiguration : public QObject, public QtWayland::kde_output_configuration_v2
0021 {
0022     Q_OBJECT
0023 public:
0024     WaylandOutputConfiguration(struct ::kde_output_configuration_v2 *object);
0025 
0026 Q_SIGNALS:
0027     void applied();
0028     void failed();
0029 
0030 protected:
0031     void kde_output_configuration_v2_applied() override;
0032     void kde_output_configuration_v2_failed() override;
0033 };
0034 
0035 class WaylandOutputManagement : public QObject, public QtWayland::kde_output_management_v2
0036 {
0037     Q_OBJECT
0038 public:
0039     WaylandOutputManagement(struct ::wl_registry *registry, int id, int version);
0040 
0041     WaylandOutputConfiguration *createConfiguration();
0042 };
0043 
0044 class WaylandOutputOrder : public QObject, public QtWayland::kde_output_order_v1
0045 {
0046     Q_OBJECT
0047 public:
0048     WaylandOutputOrder(struct ::wl_registry *registry, int id, int version);
0049     ~WaylandOutputOrder();
0050 
0051     QList<QString> order() const;
0052 
0053 Q_SIGNALS:
0054     void outputOrderChanged(const QList<QString> &outputs);
0055 
0056 private:
0057     void kde_output_order_v1_output(const QString &output_name) override;
0058     void kde_output_order_v1_done() override;
0059 
0060     QList<QString> m_outputOrder;
0061     QList<QString> m_pendingOutputOrder;
0062 };
0063 }