1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
// SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
// SPDX-License-Identifier: LGPL-2.0-or-later
#include "savedquicksettingsmodel.h"
SavedQuickSettingsModel::SavedQuickSettingsModel(QObject *parent)
: QAbstractListModel{parent}
{
}
QVariant SavedQuickSettingsModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid() || index.row() >= m_data.count()) {
return QVariant();
}
if (role == NameRole) {
return m_data[index.row()].name();
} else if (role == IconRole) {
return m_data[index.row()].iconName();
} else if (role == IdRole) {
return m_data[index.row()].pluginId();
}
return QVariant();
}
int SavedQuickSettingsModel::rowCount(const QModelIndex &parent) const
{
Q_UNUSED(parent)
return m_data.count();
}
QHash<int, QByteArray> SavedQuickSettingsModel::roleNames() const
{
return {{NameRole, "name"}, {IdRole, "id"}, {IconRole, "icon"}};
}
void SavedQuickSettingsModel::moveRow(int oldIndex, int newIndex)
{
if (oldIndex < 0 || oldIndex >= m_data.count() || newIndex < 0 || newIndex >= m_data.count()) {
return;
}
Q_EMIT beginMoveRows(QModelIndex(), oldIndex, oldIndex, QModelIndex(), newIndex + (oldIndex < newIndex ? 1 : 0));
std::iter_swap(m_data.begin() + oldIndex, m_data.begin() + newIndex);
Q_EMIT endMoveRows();
Q_EMIT dataUpdated(m_data);
}
void SavedQuickSettingsModel::insertRow(KPluginMetaData metaData, int index)
{
beginInsertRows(QModelIndex(), index, index);
m_data.insert(index, metaData);
endInsertRows();
Q_EMIT dataUpdated(m_data);
}
KPluginMetaData SavedQuickSettingsModel::takeRow(int index)
{
if (index < 0 || index >= m_data.size()) {
return {};
}
Q_EMIT beginRemoveRows(QModelIndex(), index, index);
KPluginMetaData tmp = m_data.takeAt(index);
Q_EMIT endRemoveRows();
Q_EMIT dataUpdated(m_data);
return tmp;
}
void SavedQuickSettingsModel::removeRow(int index)
{
if (index < 0 || index >= m_data.size()) {
return;
}
Q_EMIT beginRemoveRows(QModelIndex(), index, index);
m_data.erase(m_data.begin() + index);
Q_EMIT endRemoveRows();
Q_EMIT dataUpdated(m_data);
}
QList<KPluginMetaData> SavedQuickSettingsModel::list() const
{
return m_data;
}
void SavedQuickSettingsModel::updateData(QList<KPluginMetaData> data)
{
Q_EMIT beginResetModel();
m_data.clear();
for (auto metaData : data) {
m_data.push_back(metaData);
}
Q_EMIT endResetModel();
Q_EMIT dataUpdated(m_data);
}
|