Gazebo Sim

API Reference

9.0.0
ResourceSpawner.hh
Go to the documentation of this file.
1/*
2 * Copyright (C) 2020 Open Source Robotics Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16*/
17
18#ifndef GZ_SIM_GUI_RESOURCE_SPAWNER_HH_
19#define GZ_SIM_GUI_RESOURCE_SPAWNER_HH_
20
21#include <qobjectdefs.h>
22#include <algorithm>
23#include <memory>
24#include <string>
25#include <vector>
26#include <gz/fuel_tools/ClientConfig.hh>
27#include <gz/fuel_tools/FuelClient.hh>
28
29#include <gz/gui/Plugin.hh>
30
31namespace gz
32{
33namespace sim
34{
35 class ResourceSpawnerPrivate;
36
38 struct Resource
39 {
42
46
49
53
55 // cppcheck-suppress unusedStructMember
56 bool isFuel = false;
57
60 // cppcheck-suppress unusedStructMember
61 bool isDownloaded = false;
62 };
63
66 struct Display
67 {
71
76
80
83 // cppcheck-suppress unusedStructMember
84 bool isFuel = false;
85 };
86
89 class PathModel : public QStandardItemModel
90 {
91 Q_OBJECT
92
94 public: explicit PathModel();
95
97 public: ~PathModel() override = default;
98
101 public: void AddPath(const std::string &_path);
102
105 public: void RemovePath(const std::string &_path);
106
107 // Documentation inherited
108 public: QHash<int, QByteArray> roleNames() const override;
109 };
110
113 class ResourceModel : public QStandardItemModel
114 {
115 Q_OBJECT
116
119 Q_PROPERTY(int totalCount MEMBER gridIndex NOTIFY sizeChanged)
120
121
122 public: explicit ResourceModel();
123
125 public: ~ResourceModel() override = default;
126
129 public: void AddResource(const Resource &_resource);
130
133 public: void AddResources(std::vector<Resource> &_resources);
134
136 public: void Clear();
137
143 public: void UpdateResourceModel(int index, Resource &_resource);
144
145 // Documentation inherited
146 public: QHash<int, QByteArray> roleNames() const override;
147
149 public: signals: void sizeChanged();
150
151 // \brief Index to keep track of the position of each resource in the qml
152 // grid, used primarily to access currently loaded resources for updates.
153 public: int gridIndex = 0;
154 };
155
158 class ResourceSpawner : public gz::gui::Plugin
159 {
160 Q_OBJECT
161
164
166 public: ~ResourceSpawner() override;
167
168 // Documentation inherited
169 public: void LoadConfig(const tinyxml2::XMLElement *_pluginElem) override;
170
173 public slots: void OnResourceSpawn(const QString &_sdfPath);
174
178 public: Resource LocalResource(const std::string &_path);
179
182 public: void AddPath(const std::string &_path);
183
189
195
199 public: void Resources(std::vector<Resource> &_resources);
200
204 public: void FilterResources(std::vector<Resource> &_resources);
205
211 public: void SortResources(std::vector<Resource> &_resources);
212
215 public slots: void DisplayResources();
216
220 public slots: void OnPathClicked(const QString &_path);
221
226 public slots: void OnOwnerClicked(const QString &_owner);
227
233 public slots: void OnDownloadFuelResource(const QString &_path,
234 const QString &_name, const QString &_owner, int index);
235
240 public slots: void OnSortChosen(const QString &_sortType);
241
245 public slots: void OnSearchEntered(const QString &_searchKeyword);
246
252 public: void SetThumbnail(const std::string &_thumbnailPath,
253 Resource &_resource);
254
260 public: Q_INVOKABLE void UpdateOwnerListModel(gz::sim::Resource _resource);
261
266 public: Q_INVOKABLE bool AddOwner(const QString &_owner);
267
271 public: Q_INVOKABLE void RemoveOwner(const QString &_owner);
272
275 public: Q_INVOKABLE bool IsDefaultOwner(const QString &_owner) const;
276
279 signals: void resourceSpawnerError(const QString &_errorMsg);
280
283 private: void RunFetchResourceListThread(const std::string &_owner);
284
288 };
289}
290}
291
292#endif