FOSSredder 0.5.0
Loading...
Searching...
No Matches
PayloadMapper.h
Go to the documentation of this file.
1
5
6#pragma once
7
8#include <QMetaType>
9#include <QStringList>
10#include <QVariant>
11#include <QVariantList>
12#include <QVariantMap>
13
14#include <string>
15#include <vector>
16
18
20
26inline QStringList toQStringList(const std::vector<std::string>& values) {
27 QStringList out;
28 out.reserve(static_cast<int>(values.size()));
29 for (const auto& value : values) {
30 out.push_back(QString::fromStdString(value));
31 }
32 return out;
33}
34
40inline QVariantList
41toVariantStringList(const std::vector<std::string>& values) {
42 QVariantList out;
43 out.reserve(static_cast<int>(values.size()));
44 for (const auto& value : values) {
45 out.push_back(QString::fromStdString(value));
46 }
47 return out;
48}
49
55inline QVariantList toVariantStringList(const QStringList& values) {
56 QVariantList out;
57 out.reserve(values.size());
58 for (const auto& value : values) {
59 out.push_back(value);
60 }
61 return out;
62}
63
69inline QStringList toQStringList(const QVariantList& values) {
70 QStringList out;
71 out.reserve(values.size());
72 for (const auto& value : values) {
73 out.push_back(value.toString());
74 }
75 return out;
76}
77
83inline QVariantList toVariantList(const QVariant& value) {
84 if (value.metaType() == QMetaType::fromType<QStringList>()) {
85 return toVariantStringList(value.toStringList());
86 }
87 return value.toList();
88}
89
96inline QVariantMap mapAt(const QVariantList& rows, int index) {
97 return index >= 0 && index < rows.size() ? rows.at(index).toMap()
98 : QVariantMap{};
99}
100
106inline QString rowId(const QVariantMap& row) {
107 return row.value(keys::common::kId).toString();
108}
109
115inline QString rowType(const QVariantMap& row) {
116 return row.value(keys::common::kType).toString();
117}
118
124inline QString rowDisplayName(const QVariantMap& row) {
125 return row.value(keys::common::kName, row.value(keys::common::kDisplay))
126 .toString();
127}
128
135inline int rowIntValue(const QVariantMap& row, int fallback = 0) {
136 return row.value(keys::common::kValue, fallback).toInt();
137}
138
145inline QString rowStringValue(const QVariantMap& row,
146 const QString& fallback = {}) {
147 return row.value(keys::common::kValue, fallback).toString();
148}
149
156inline int indexById(const QVariantList& rows, const QString& id) {
157 for (int index = 0; index < rows.size(); ++index) {
158 if (rowId(mapAt(rows, index)) == id) {
159 return index;
160 }
161 }
162 return 0;
163}
164
171inline QString stringValue(const QVariantMap& map, const QString& key) {
172 return map.value(key).toString();
173}
174
181inline QVariantList listValue(const QVariantMap& map, const QString& key) {
182 return toVariantList(map.value(key));
183}
184
191inline QStringList stringListValue(const QVariantMap& map, const QString& key) {
192 const QVariant value = map.value(key);
193 if (value.metaType() == QMetaType::fromType<QStringList>()) {
194 return value.toStringList();
195 }
196 return toQStringList(value.toList());
197}
198
199} // namespace ui::payload::mapper
200
202
203inline constexpr int kNeutral = 0;
204inline constexpr int kUnverified = 1;
205inline constexpr int kVerified = 2;
206inline constexpr int kCompleted = 3;
207
216inline QVariantList options(const QString& neutral, const QString& unverified,
217 const QString& verified, const QString& completed) {
218 return {QVariantMap{{keys::common::kLabel, neutral},
220 QVariantMap{{keys::common::kLabel, unverified},
222 QVariantMap{{keys::common::kLabel, verified},
224 QVariantMap{{keys::common::kLabel, completed},
226}
227
234inline int statusAt(const QVariantList& options, int index) {
236}
237
244inline int indexForStatus(const QVariantList& options, int status) {
245 for (int index = 0; index < options.size(); ++index) {
246 if (statusAt(options, index) == status) {
247 return index;
248 }
249 }
250 return 0;
251}
252
253} // namespace ui::payload::transaction_status
254
256
257inline const auto kMixed = QStringLiteral("mixed");
258inline const auto kAllocatable = QStringLiteral("allocatable");
259inline const auto kNonAllocatable = QStringLiteral("non-allocatable");
260
268inline QVariantList options(const QString& mixed, const QString& allocatable,
269 const QString& nonAllocatable) {
270 return {QVariantMap{{keys::common::kLabel, mixed},
272 QVariantMap{{keys::common::kLabel, allocatable},
274 QVariantMap{{keys::common::kLabel, nonAllocatable},
276}
277
284inline QString modeAt(const QVariantList& options, int index) {
286}
287
294inline int indexForMode(const QVariantList& options, const QString& mode) {
295 for (int index = 0; index < options.size(); ++index) {
296 if (modeAt(options, index) == mode) {
297 return index;
298 }
299 }
300 return 0;
301}
302
303} // namespace ui::payload::contract_allocatable_mode
Declarations for the UI PayloadKeys component.
QVariantList options(const QString &mixed, const QString &allocatable, const QString &nonAllocatable)
Builds contract allocatable mode options.
QString modeAt(const QVariantList &options, int index)
Reads the allocatable mode at an option index.
int indexForMode(const QVariantList &options, const QString &mode)
Finds the option index for an allocatable mode.
int rowIntValue(const QVariantMap &row, int fallback=0)
Reads an integer row value.
QVariantMap mapAt(const QVariantList &rows, int index)
Returns a map at an index in a row list.
QString rowStringValue(const QVariantMap &row, const QString &fallback={})
Reads a string row value.
int indexById(const QVariantList &rows, const QString &id)
Finds the index of a row id.
QVariantList toVariantStringList(const std::vector< std::string > &values)
Converts standard strings to a QVariant string list.
QVariantList listValue(const QVariantMap &map, const QString &key)
Reads a list value from a map.
QString rowType(const QVariantMap &row)
Reads a row type.
QVariantList toVariantList(const QVariant &value)
Converts a QVariant value to a QVariantList.
QString rowId(const QVariantMap &row)
Reads a row id.
QString stringValue(const QVariantMap &map, const QString &key)
Reads a string value from a map.
QString rowDisplayName(const QVariantMap &row)
Reads a row display name.
QStringList stringListValue(const QVariantMap &map, const QString &key)
Reads a string list value from a map.
QStringList toQStringList(const std::vector< std::string > &values)
Converts standard strings to a Qt string list.
QVariantList options(const QString &neutral, const QString &unverified, const QString &verified, const QString &completed)
Builds transaction status options.
int indexForStatus(const QVariantList &options, int status)
Finds the option index for a transaction status.
int statusAt(const QVariantList &options, int index)
Reads the status value at an option index.