Warning, file /frameworks/knewstuff/src/qtquick/searchpresetmodel.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2021 Wolthera van Hövell tot Westerflier <griffinvalley@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "searchpresetmodel.h" 0008 #include "engine.h" 0009 0010 #include "knewstuffquick_debug.h" 0011 0012 #include <KLocalizedString> 0013 0014 class SearchPresetModelPrivate 0015 { 0016 public: 0017 SearchPresetModelPrivate() 0018 { 0019 } 0020 KNSCore::Engine *engine; 0021 }; 0022 0023 SearchPresetModel::SearchPresetModel(Engine *parent) 0024 : QAbstractListModel(parent) 0025 , d(new SearchPresetModelPrivate) 0026 { 0027 d->engine = qobject_cast<KNSCore::Engine *>(parent->engine()); 0028 connect(d->engine, &KNSCore::Engine::signalSearchPresetsLoaded, this, [this]() { 0029 beginResetModel(); 0030 endResetModel(); 0031 }); 0032 } 0033 0034 SearchPresetModel::~SearchPresetModel() = default; 0035 0036 QHash<int, QByteArray> SearchPresetModel::roleNames() const 0037 { 0038 static const QHash<int, QByteArray> roles{{DisplayNameRole, "displayName"}, {IconRole, "iconName"}}; 0039 return roles; 0040 } 0041 0042 QVariant SearchPresetModel::data(const QModelIndex &index, int role) const 0043 { 0044 QVariant result; 0045 if (index.isValid() && checkIndex(index)) { 0046 const QList<KNSCore::Provider::SearchPreset> presets = d->engine->searchPresets(); 0047 const KNSCore::Provider::SearchPreset preset = presets[index.row()]; 0048 0049 if (role == DisplayNameRole) { 0050 QString name = preset.displayName; 0051 0052 if (name.isEmpty()) { 0053 switch (preset.type) { 0054 case KNSCore::Provider::SearchPresetTypes::GoBack: 0055 name = i18nc("Knewstuff5", "Back"); 0056 break; 0057 case KNSCore::Provider::SearchPresetTypes::Popular: 0058 name = i18nc("Knewstuff5", "Popular"); 0059 break; 0060 case KNSCore::Provider::SearchPresetTypes::Featured: 0061 name = i18nc("Knewstuff5", "Featured"); 0062 break; 0063 case KNSCore::Provider::SearchPresetTypes::Start: 0064 name = i18nc("Knewstuff5", "Restart"); 0065 break; 0066 case KNSCore::Provider::SearchPresetTypes::New: 0067 name = i18nc("Knewstuff5", "New"); 0068 break; 0069 case KNSCore::Provider::SearchPresetTypes::Root: 0070 name = i18nc("Knewstuff5", "Home"); 0071 break; 0072 case KNSCore::Provider::SearchPresetTypes::Shelf: 0073 name = i18nc("Knewstuff5", "Shelf"); 0074 break; 0075 case KNSCore::Provider::SearchPresetTypes::FolderUp: 0076 name = i18nc("Knewstuff5", "Up"); 0077 break; 0078 case KNSCore::Provider::SearchPresetTypes::Recommended: 0079 name = i18nc("Knewstuff5", "Recommended"); 0080 break; 0081 case KNSCore::Provider::SearchPresetTypes::Subscription: 0082 name = i18nc("Knewstuff5", "Subscriptions"); 0083 break; 0084 case KNSCore::Provider::SearchPresetTypes::AllEntries: 0085 name = i18nc("Knewstuff5", "All Entries"); 0086 break; 0087 default: 0088 name = i18nc("Knewstuff5", "Search Preset: %1", preset.request.searchTerm); 0089 } 0090 } 0091 0092 result.setValue(name); 0093 } else if (role == IconRole) { 0094 QString name = preset.iconName; 0095 0096 if (name.isEmpty()) { 0097 switch (preset.type) { 0098 case KNSCore::Provider::SearchPresetTypes::GoBack: 0099 name = QStringLiteral("arrow-left"); 0100 break; 0101 case KNSCore::Provider::SearchPresetTypes::Popular: 0102 case KNSCore::Provider::SearchPresetTypes::Featured: 0103 case KNSCore::Provider::SearchPresetTypes::Recommended: 0104 name = QStringLiteral("rating"); 0105 break; 0106 case KNSCore::Provider::SearchPresetTypes::New: 0107 name = QStringLiteral("change-date-symbolic"); 0108 break; 0109 case KNSCore::Provider::SearchPresetTypes::Start: 0110 name = QStringLiteral("start-over"); 0111 break; 0112 case KNSCore::Provider::SearchPresetTypes::Root: 0113 name = QStringLiteral("go-home"); 0114 break; 0115 case KNSCore::Provider::SearchPresetTypes::Shelf: 0116 case KNSCore::Provider::SearchPresetTypes::Subscription: 0117 name = QStringLiteral("bookmark"); 0118 break; 0119 case KNSCore::Provider::SearchPresetTypes::FolderUp: 0120 name = QStringLiteral("arrow-up"); 0121 break; 0122 default: 0123 name = QStringLiteral("search"); 0124 } 0125 } 0126 0127 result.setValue(name); 0128 } 0129 } 0130 return result; 0131 } 0132 0133 int SearchPresetModel::rowCount(const QModelIndex &parent) const 0134 { 0135 if (parent.isValid()) { 0136 return 0; 0137 } 0138 return d->engine->searchPresets().count(); 0139 } 0140 0141 void SearchPresetModel::loadSearch(const QModelIndex &index) 0142 { 0143 if (index.row() >= rowCount() || !index.isValid()) { 0144 qCWarning(KNEWSTUFFQUICK) << "index SearchPresetModel::loadSearch invalid" << index; 0145 return; 0146 } 0147 const KNSCore::Provider::SearchPreset preset = d->engine->searchPresets().at(index.row()); 0148 d->engine->setSearchTerm(preset.request.searchTerm); 0149 } 0150 0151 #include "moc_searchpresetmodel.cpp"