* @brief Selects an extension by index in the filtered list. */
| 305 | * @brief Selects an extension by index in the filtered list. |
| 306 | */ |
| 307 | void Misc::ExtensionManager::setSelectedIndex(int index) |
| 308 | { |
| 309 | if (m_selectedIndex == index) |
| 310 | return; |
| 311 | |
| 312 | m_selectedIndex = index; |
| 313 | Q_EMIT selectedIndexChanged(); |
| 314 | |
| 315 | m_selectedReadme.clear(); |
| 316 | Q_EMIT selectedReadmeChanged(); |
| 317 | |
| 318 | if (index >= 0 && index < m_filteredExtensions.count()) { |
| 319 | const auto ext = m_filteredExtensions.at(index).toMap(); |
| 320 | const auto base = ext.value("_repoBase").toString(); |
| 321 | const auto local = ext.value("_isLocal").toBool(); |
| 322 | |
| 323 | if (local && !base.isEmpty()) { |
| 324 | QFile file(base + "README.md"); |
| 325 | if (file.open(QIODevice::ReadOnly)) { |
| 326 | m_selectedReadme = QString::fromUtf8(file.readAll()); |
| 327 | Q_EMIT selectedReadmeChanged(); |
| 328 | } |
| 329 | } |
| 330 | |
| 331 | else if (!base.isEmpty()) { |
| 332 | auto* reply = m_nam.get(QNetworkRequest(QUrl(base + "README.md"))); |
| 333 | m_activeReplies.insert(reply); |
| 334 | connect(reply, &QNetworkReply::finished, this, &ExtensionManager::onReadmeReply); |
| 335 | } |
| 336 | } |
| 337 | } |
| 338 | |
| 339 | /** |
| 340 | * @brief Sets the search filter and re-applies filtering. |