File indexing completed on 2024-04-28 16:42:55

0001 // SPDX-FileCopyrightText: 2021 Devin Lin <devin@kde.org>
0002 // SPDX-License-Identifier: GPL-2.0-or-later
0003 
0004 #pragma once
0005 
0006 #include <QAbstractListModel>
0007 #include <QObject>
0008 
0009 class TerminalTabModel : public QAbstractListModel
0010 {
0011     Q_OBJECT
0012     
0013 public:
0014     TerminalTabModel(QObject *parent = nullptr);
0015     
0016     static TerminalTabModel *self()
0017     {
0018         static TerminalTabModel *singleton = new TerminalTabModel();
0019         return singleton;
0020     }
0021     
0022     enum {
0023         NameRole = Qt::DisplayRole
0024     };
0025 
0026     int rowCount(const QModelIndex &parent) const override;
0027     QVariant data(const QModelIndex &index, int role) const override;
0028     bool setData(const QModelIndex &index, const QVariant &value, int role) override;
0029     Qt::ItemFlags flags(const QModelIndex &index) const override;
0030     QHash<int, QByteArray> roleNames() const override;
0031 
0032     Q_INVOKABLE void newTab();
0033     Q_INVOKABLE void removeTab(int index);
0034 
0035 private:
0036     int m_indexCounter;
0037     QList<QString> m_tabNames;
0038 };