14#include <KConfigGroup>
15#include <KLocalizedString>
16#include <KSharedConfig>
19#include <QJsonDocument>
27 : QAbstractItemModel(parent)
28 , m_tileManager(parent)
39 {
TileRole, QByteArrayLiteral(
"tile")},
45 if (!
index.isValid()) {
50 return QVariant::fromValue(
static_cast<CustomTile *
>(
index.internalPointer()));
58 if (!
index.isValid()) {
59 return Qt::NoItemFlags;
62 return QAbstractItemModel::flags(
index);
67 if (column > 0 || !hasIndex(row, column,
parent)) {
74 parentItem = m_tileManager->
rootTile();
81 return createIndex(row, column, childItem);
88 if (!
index.isValid()) {
95 if (!parentItem || parentItem == m_tileManager->
rootTile()) {
99 return createIndex(parentItem->
row(), 0, parentItem);
105 if (
parent.column() > 0) {
110 parentItem = m_tileManager->
rootTile();
123void TileModel::beginInsertTile(
CustomTile *tile,
int position)
125 Q_ASSERT(position >= 0);
127 Q_ASSERT(parentTile);
129 auto index = parentTile == m_tileManager->
rootTile() ? QModelIndex() : createIndex(parentTile->row(), 0, parentTile);
130 const int pos = std::clamp(position, 0, parentTile->
childCount());
132 beginInsertRows(
index, pos, pos);
135void TileModel::endInsertTile()
140void TileModel::beginRemoveTile(CustomTile *tile)
142 const auto parentTile =
static_cast<CustomTile *
>(tile->parentTile());
144 qCWarning(KWIN_CORE) <<
"Can't remove the root tile";
148 QModelIndex parentIndex = parentTile == m_tileManager->
rootTile() ? QModelIndex() : createIndex(parentTile->row(), 0, parentTile);
149 beginRemoveRows(parentIndex, tile->row(), tile->row());
152void TileModel::endRemoveTile()
159#include "moc_tilemodel.cpp"
Tile * childTile(int row)
Tile * parentTile() const
Qt::ItemFlags flags(const QModelIndex &index) const override
QHash< int, QByteArray > roleNames() const override
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
QVariant data(const QModelIndex &index, int role) const override
int rowCount(const QModelIndex &parent=QModelIndex()) const override
QModelIndex parent(const QModelIndex &index) const override
int columnCount(const QModelIndex &parent=QModelIndex()) const override
TileModel(TileManager *parent=nullptr)