File indexing completed on 2024-05-12 17:07:45

0001 /*
0002  *   SPDX-FileCopyrightText: 2021 Aleix Pol <apol@kde.org>
0003  *   SPDX-FileCopyrightText: 2021 Devin Lin <devin@kde.org>
0004  *
0005  *   SPDX-License-Identifier: GPL-2.0-or-later
0006  */
0007 
0008 #pragma once
0009 
0010 #include <QAbstractListModel>
0011 #include <QRect>
0012 
0013 #include <KWayland/Client/connection_thread.h>
0014 #include <KWayland/Client/output.h>
0015 #include <KWayland/Client/plasmashell.h>
0016 #include <KWayland/Client/plasmawindowmanagement.h>
0017 #include <KWayland/Client/registry.h>
0018 #include <KWayland/Client/surface.h>
0019 
0020 class DisplaysModel : public QAbstractListModel
0021 {
0022 public:
0023     enum Roles {
0024         Model = Qt::DisplayRole,
0025         Geometry = Qt::UserRole,
0026         Position,
0027         Output,
0028     };
0029 
0030     DisplaysModel(QObject *parent = nullptr);
0031 
0032     void createOutput(wl_output *output);
0033 
0034     Q_INVOKABLE void sendWindowToOutput(const QString &uuid, KWayland::Client::Output *output);
0035 
0036     QHash<int, QByteArray> roleNames() const override;
0037     int rowCount(const QModelIndex &parent) const override;
0038     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
0039 
0040 private:
0041     KWayland::Client::PlasmaWindowManagement *m_windowManagement = nullptr;
0042 
0043     QVector<KWayland::Client::Output *> m_outputs;
0044 };