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 };