| 170 | } |
| 171 | |
| 172 | void ListModel::requestLogo(QString logo, QString url) |
| 173 | { |
| 174 | if (m_loadingLogos.contains(logo) || m_failedLogos.contains(logo) || url.isEmpty()) { |
| 175 | return; |
| 176 | } |
| 177 | |
| 178 | MetaEntryPtr entry = |
| 179 | APPLICATION->metacache()->resolveEntry(m_parent->metaEntryBase(), QString("logos/%1").arg(logo.section(".", 0, 0))); |
| 180 | auto job = new NetJob(QString("%1 Icon Download %2").arg(m_parent->debugName()).arg(logo), APPLICATION->network()); |
| 181 | job->addNetAction(Net::Download::makeCached(QUrl(url), entry)); |
| 182 | |
| 183 | auto fullPath = entry->getFullPath(); |
| 184 | QObject::connect(job, &NetJob::succeeded, this, [this, logo, fullPath, job] { |
| 185 | job->deleteLater(); |
| 186 | emit logoLoaded(logo, QIcon(fullPath)); |
| 187 | if (waitingCallbacks.contains(logo)) { |
| 188 | waitingCallbacks.value(logo)(fullPath); |
| 189 | } |
| 190 | }); |
| 191 | |
| 192 | QObject::connect(job, &NetJob::failed, this, [this, logo, job] { |
| 193 | job->deleteLater(); |
| 194 | emit logoFailed(logo); |
| 195 | }); |
| 196 | |
| 197 | job->start(); |
| 198 | m_loadingLogos.append(logo); |
| 199 | } |
| 200 | |
| 201 | /******** Request callbacks ********/ |
| 202 |
no test coverage detected