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