File indexing completed on 2024-05-19 05:32:25
0001 /* 0002 SPDX-FileCopyrightText: 2021 Vlad Zahorodnii <vlad.zahorodnii@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QAbstractListModel> 0010 0011 namespace KWin 0012 { 0013 class VirtualDesktop; 0014 0015 /** 0016 * The VirtualDesktopModel class provides a data model for the virtual desktops. 0017 */ 0018 class VirtualDesktopModel : public QAbstractListModel 0019 { 0020 Q_OBJECT 0021 0022 public: 0023 enum Role { 0024 DesktopRole = Qt::UserRole + 1, 0025 }; 0026 0027 explicit VirtualDesktopModel(QObject *parent = nullptr); 0028 0029 QHash<int, QByteArray> roleNames() const override; 0030 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0031 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0032 0033 public Q_SLOTS: 0034 KWin::VirtualDesktop *create(uint position, const QString &name = QString()); 0035 void remove(uint position); 0036 0037 private: 0038 KWin::VirtualDesktop *desktopFromIndex(const QModelIndex &index) const; 0039 0040 void handleVirtualDesktopAdded(KWin::VirtualDesktop *desktop); 0041 void handleVirtualDesktopRemoved(KWin::VirtualDesktop *desktop); 0042 0043 QList<KWin::VirtualDesktop *> m_virtualDesktops; 0044 }; 0045 0046 } // namespace KWin