File indexing completed on 2024-12-01 12:36:44
0001 /* 0002 SPDX-FileCopyrightText: %{CURRENT_YEAR} %{AUTHOR} <%{EMAIL}> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #include "mydatasystem.h" 0008 0009 QByteArray DataItem::data() const 0010 { 0011 // simulating content data fetched for the item 0012 return QByteArrayLiteral("Hello world\n"); 0013 } 0014 0015 0016 MyDataSystem::MyDataSystem() 0017 // sample data simulating that in the exposed data system 0018 : m_toplevelGroup({ 0019 { // subgroups 0020 { QStringLiteral("Subgroup"), { 0021 {}, // subgroups 0022 { // items 0023 { QStringLiteral("Item C") }, 0024 { QStringLiteral("Item D") }, 0025 { QStringLiteral("Item E") }, 0026 } 0027 } } 0028 }, 0029 { // items 0030 { QStringLiteral("Item A") }, 0031 { QStringLiteral("Item B") }, 0032 } 0033 }) 0034 { 0035 } 0036 0037 const DataGroup* MyDataSystem::group(const QStringList& groupPath) const 0038 { 0039 const DataGroup* currentGroup = &m_toplevelGroup; 0040 for (const QString &group : groupPath) { 0041 auto it = currentGroup->subGroups.constFind(group); 0042 if (it == currentGroup->subGroups.constEnd()) { 0043 return nullptr; 0044 } 0045 currentGroup = &*it; 0046 } 0047 return currentGroup; 0048 } 0049 0050 bool MyDataSystem::hasGroup(const QStringList& groupPath) const 0051 { 0052 return (group(groupPath) != nullptr); 0053 } 0054 0055 QList<DataItem> MyDataSystem::items(const QStringList& groupPath) const 0056 { 0057 auto* group = this->group(groupPath); 0058 return group ? group->items : QList<DataItem>(); 0059 } 0060 0061 DataItem MyDataSystem::item(const QStringList& groupPath, const QString &itemName) const 0062 { 0063 auto* group = this->group(groupPath); 0064 if (group) { 0065 for (auto &item : group->items) { 0066 if (item.name == itemName) { 0067 return item; 0068 } 0069 } 0070 } 0071 return DataItem(); 0072 } 0073 0074 QStringList MyDataSystem::subGroupNames(const QStringList& groupPath) const 0075 { 0076 auto* group = this->group(groupPath); 0077 return group ? group->subGroups.keys() : QStringList(); 0078 } 0079