* @brief Handles the Iconify search API response. */
| 168 | * @brief Handles the Iconify search API response. |
| 169 | */ |
| 170 | void Misc::IconEngine::onSearchFinished(QNetworkReply* reply) |
| 171 | { |
| 172 | reply->deleteLater(); |
| 173 | |
| 174 | m_iconNames.clear(); |
| 175 | m_iconPreviews.clear(); |
| 176 | |
| 177 | if (reply->error() == QNetworkReply::NoError) { |
| 178 | const auto data = reply->readAll(); |
| 179 | const auto doc = QJsonDocument::fromJson(data); |
| 180 | const auto obj = doc.object(); |
| 181 | const auto icons = obj.value(QStringLiteral("icons")).toArray(); |
| 182 | |
| 183 | for (const auto& iconRef : icons) { |
| 184 | const auto name = iconRef.toString(); |
| 185 | if (name.isEmpty()) |
| 186 | continue; |
| 187 | |
| 188 | m_iconNames.append(name); |
| 189 | |
| 190 | const auto parts = name.split(QStringLiteral(":")); |
| 191 | if (parts.size() == 2) { |
| 192 | m_iconPreviews.append( |
| 193 | QStringLiteral("https://api.iconify.design/%1/%2.svg").arg(parts[0], parts[1])); |
| 194 | } else { |
| 195 | m_iconPreviews.append(QString()); |
| 196 | } |
| 197 | } |
| 198 | } |
| 199 | |
| 200 | m_busy = false; |
| 201 | Q_EMIT busyChanged(); |
| 202 | Q_EMIT searchResultsChanged(); |
| 203 | } |
| 204 | |
| 205 | /** |
| 206 | * @brief Handles the SVG download response. |