File indexing completed on 2024-05-12 17:07:45
0001 // SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org> 0002 // SPDX-License-Identifier: LGPL-2.0-or-later 0003 0004 #include "savedquicksettingsmodel.h" 0005 0006 SavedQuickSettingsModel::SavedQuickSettingsModel(QObject *parent) 0007 : QAbstractListModel{parent} 0008 { 0009 } 0010 0011 QVariant SavedQuickSettingsModel::data(const QModelIndex &index, int role) const 0012 { 0013 if (!index.isValid() || index.row() >= m_data.count()) { 0014 return QVariant(); 0015 } 0016 0017 if (role == NameRole) { 0018 return m_data[index.row()]->name(); 0019 } else if (role == IconRole) { 0020 return m_data[index.row()]->iconName(); 0021 } else if (role == IdRole) { 0022 return m_data[index.row()]->pluginId(); 0023 } 0024 return QVariant(); 0025 } 0026 0027 int SavedQuickSettingsModel::rowCount(const QModelIndex &parent) const 0028 { 0029 Q_UNUSED(parent); 0030 return m_data.count(); 0031 } 0032 0033 QHash<int, QByteArray> SavedQuickSettingsModel::roleNames() const 0034 { 0035 return {{NameRole, "name"}, {IdRole, "id"}, {IconRole, "icon"}}; 0036 } 0037 0038 void SavedQuickSettingsModel::moveRow(int oldIndex, int newIndex) 0039 { 0040 if (oldIndex < 0 || oldIndex >= m_data.count() || newIndex < 0 || newIndex >= m_data.count()) { 0041 return; 0042 } 0043 0044 Q_EMIT beginMoveRows(QModelIndex(), oldIndex, oldIndex, QModelIndex(), newIndex + (oldIndex < newIndex ? 1 : 0)); 0045 std::iter_swap(m_data.begin() + oldIndex, m_data.begin() + newIndex); 0046 Q_EMIT endMoveRows(); 0047 0048 Q_EMIT dataUpdated(m_data); 0049 } 0050 0051 void SavedQuickSettingsModel::insertRow(KPluginMetaData *metaData, int index) 0052 { 0053 Q_EMIT beginInsertRows(QModelIndex(), index, index); 0054 m_data.insert(index, metaData); 0055 Q_EMIT endInsertRows(); 0056 0057 Q_EMIT dataUpdated(m_data); 0058 } 0059 0060 void SavedQuickSettingsModel::removeRow(int index) 0061 { 0062 if (index < 0 || index >= m_data.size()) { 0063 return; 0064 } 0065 0066 Q_EMIT beginRemoveRows(QModelIndex(), index, index); 0067 m_data.erase(m_data.begin() + index); 0068 Q_EMIT endRemoveRows(); 0069 0070 Q_EMIT dataUpdated(m_data); 0071 } 0072 0073 QList<KPluginMetaData *> SavedQuickSettingsModel::list() const 0074 { 0075 return m_data; 0076 } 0077 0078 void SavedQuickSettingsModel::updateData(QList<KPluginMetaData *> data) 0079 { 0080 Q_EMIT beginResetModel(); 0081 0082 m_data.clear(); 0083 for (auto metaData : data) { 0084 m_data.push_back(metaData); 0085 } 0086 0087 Q_EMIT endResetModel(); 0088 0089 Q_EMIT dataUpdated(m_data); 0090 }