Changeset View
Changeset View
Standalone View
Standalone View
src/providermanager.cpp
Show First 20 Lines • Show All 42 Lines • ▼ Show 20 Line(s) | |||||
43 | 43 | | |||
44 | using namespace Attica; | 44 | using namespace Attica; | ||
45 | 45 | | |||
46 | class ProviderManager::Private | 46 | class ProviderManager::Private | ||
47 | { | 47 | { | ||
48 | public: | 48 | public: | ||
49 | PlatformDependent *m_internals; | 49 | PlatformDependent *m_internals; | ||
50 | QHash<QUrl, Provider> m_providers; | 50 | QHash<QUrl, Provider> m_providers; | ||
51 | QHash<QUrl, QList<QString> > m_providerFiles; | 51 | QHash<QUrl, QUrl> m_providerTargets; | ||
52 | QSignalMapper m_downloadMapping; | 52 | QSignalMapper m_downloadMapping; | ||
53 | QHash<QString, QNetworkReply *> m_downloads; | 53 | QHash<QString, QNetworkReply *> m_downloads; | ||
54 | bool m_authenticationSuppressed; | 54 | bool m_authenticationSuppressed; | ||
55 | 55 | | |||
56 | Private() | 56 | Private() | ||
57 | : m_internals(0) | 57 | : m_internals(0) | ||
58 | , m_authenticationSuppressed(false) | 58 | , m_authenticationSuppressed(false) | ||
59 | { | 59 | { | ||
Show All 31 Lines | |||||
91 | 91 | | |||
92 | void ProviderManager::setAuthenticationSuppressed(bool suppressed) | 92 | void ProviderManager::setAuthenticationSuppressed(bool suppressed) | ||
93 | { | 93 | { | ||
94 | d->m_authenticationSuppressed = suppressed; | 94 | d->m_authenticationSuppressed = suppressed; | ||
95 | } | 95 | } | ||
96 | 96 | | |||
97 | void ProviderManager::clear() | 97 | void ProviderManager::clear() | ||
98 | { | 98 | { | ||
99 | d->m_providerFiles.clear(); | 99 | d->m_providerTargets.clear(); | ||
100 | d->m_providers.clear(); | 100 | d->m_providers.clear(); | ||
101 | } | 101 | } | ||
102 | 102 | | |||
103 | void ProviderManager::slotLoadDefaultProvidersInternal() | 103 | void ProviderManager::slotLoadDefaultProvidersInternal() | ||
104 | { | 104 | { | ||
105 | foreach (const QUrl &url, d->m_internals->getDefaultProviderFiles()) { | 105 | foreach (const QUrl &url, d->m_internals->getDefaultProviderFiles()) { | ||
106 | addProviderFile(url); | 106 | addProviderFile(url); | ||
107 | } | 107 | } | ||
Show All 26 Lines | |||||
134 | void ProviderManager::addProviderFile(const QUrl &url) | 134 | void ProviderManager::addProviderFile(const QUrl &url) | ||
135 | { | 135 | { | ||
136 | if (url.isLocalFile()) { | 136 | if (url.isLocalFile()) { | ||
137 | QFile file(url.toLocalFile()); | 137 | QFile file(url.toLocalFile()); | ||
138 | if (!file.open(QIODevice::ReadOnly)) { | 138 | if (!file.open(QIODevice::ReadOnly)) { | ||
139 | qWarning() << "ProviderManager::addProviderFile: could not open provider file: " << url.toString(); | 139 | qWarning() << "ProviderManager::addProviderFile: could not open provider file: " << url.toString(); | ||
140 | return; | 140 | return; | ||
141 | } | 141 | } | ||
142 | addProviderFromXml(QLatin1String(file.readAll())); | 142 | parseProviderFile(QLatin1String(file.readAll()), url); | ||
143 | } else { | 143 | } else { | ||
144 | if (!d->m_downloads.contains(url.toString())) { | 144 | if (!d->m_downloads.contains(url.toString())) { | ||
145 | QNetworkReply *reply = d->m_internals->get(QNetworkRequest(url)); | 145 | QNetworkReply *reply = d->m_internals->get(QNetworkRequest(url)); | ||
146 | connect(reply, SIGNAL(finished()), &d->m_downloadMapping, SLOT(map())); | 146 | connect(reply, SIGNAL(finished()), &d->m_downloadMapping, SLOT(map())); | ||
147 | d->m_downloadMapping.setMapping(reply, url.toString()); | 147 | d->m_downloadMapping.setMapping(reply, url.toString()); | ||
148 | d->m_downloads.insert(url.toString(), reply); | 148 | d->m_downloads.insert(url.toString(), reply); | ||
149 | } | 149 | } | ||
150 | } | 150 | } | ||
151 | } | 151 | } | ||
152 | 152 | | |||
153 | void ProviderManager::fileFinished(const QString &url) | 153 | void ProviderManager::fileFinished(const QString &url) | ||
154 | { | 154 | { | ||
155 | QNetworkReply *reply = d->m_downloads.take(url); | 155 | QNetworkReply *reply = d->m_downloads.take(url); | ||
156 | parseProviderFile(QLatin1String(reply->readAll()), url); | 156 | parseProviderFile(QLatin1String(reply->readAll()), QUrl(url)); | ||
157 | reply->deleteLater(); | 157 | reply->deleteLater(); | ||
158 | } | 158 | } | ||
159 | 159 | | |||
160 | void ProviderManager::addProviderFromXml(const QString &providerXml) | 160 | void ProviderManager::addProviderFromXml(const QString &providerXml) | ||
161 | { | 161 | { | ||
162 | parseProviderFile(providerXml, QString()); | 162 | parseProviderFile(providerXml, QUrl()); | ||
163 | } | 163 | } | ||
164 | 164 | | |||
165 | void ProviderManager::parseProviderFile(const QString &xmlString, const QString &url) | 165 | void ProviderManager::parseProviderFile(const QString &xmlString, const QUrl &url) | ||
166 | { | 166 | { | ||
167 | Q_UNUSED(url) | | |||
168 | QXmlStreamReader xml(xmlString); | 167 | QXmlStreamReader xml(xmlString); | ||
169 | while (!xml.atEnd() && xml.readNext()) { | 168 | while (!xml.atEnd() && xml.readNext()) { | ||
170 | if (xml.isStartElement() && xml.name() == QLatin1String("provider")) { | 169 | if (xml.isStartElement() && xml.name() == QLatin1String("provider")) { | ||
171 | QUrl baseUrl; | 170 | QUrl baseUrl; | ||
172 | QString name; | 171 | QString name; | ||
173 | QUrl icon; | 172 | QUrl icon; | ||
174 | QString person; | 173 | QString person; | ||
175 | QString friendV; | 174 | QString friendV; | ||
▲ Show 20 Lines • Show All 45 Lines • ▼ Show 20 Line(s) | 219 | } else if (xml.isEndElement() && xml.name() == QLatin1String("provider")) { | |||
221 | break; | 220 | break; | ||
222 | } | 221 | } | ||
223 | } | 222 | } | ||
224 | if (!baseUrl.isEmpty()) { | 223 | if (!baseUrl.isEmpty()) { | ||
225 | //qDebug() << "Adding provider" << baseUrl; | 224 | //qDebug() << "Adding provider" << baseUrl; | ||
226 | d->m_providers.insert(baseUrl, Provider(d->m_internals, baseUrl, name, icon, | 225 | d->m_providers.insert(baseUrl, Provider(d->m_internals, baseUrl, name, icon, | ||
227 | person, friendV, message, achievement, activity, content, fan, forum, knowledgebase, | 226 | person, friendV, message, achievement, activity, content, fan, forum, knowledgebase, | ||
228 | event, comment, registerUrl)); | 227 | event, comment, registerUrl)); | ||
228 | d->m_providerTargets[url] = baseUrl; | ||||
229 | emit providerAdded(d->m_providers.value(baseUrl)); | 229 | emit providerAdded(d->m_providers.value(baseUrl)); | ||
230 | } | 230 | } | ||
231 | } | 231 | } | ||
232 | } | 232 | } | ||
233 | 233 | | |||
234 | if (xml.error() != QXmlStreamReader::NoError) { | ||||
235 | qDebug() << "error:" << xml.errorString() << "in" << url; | ||||
236 | } | ||||
237 | | ||||
234 | if (d->m_downloads.isEmpty()) { | 238 | if (d->m_downloads.isEmpty()) { | ||
235 | emit defaultProvidersLoaded(); | 239 | emit defaultProvidersLoaded(); | ||
236 | } | 240 | } | ||
237 | } | 241 | } | ||
238 | 242 | | |||
243 | Provider ProviderManager::providerFor(const QUrl &url) const | ||||
244 | { | ||||
245 | return providerByUrl(d->m_providerTargets.value(url)); | ||||
246 | } | ||||
247 | | ||||
239 | Provider ProviderManager::providerByUrl(const QUrl &url) const | 248 | Provider ProviderManager::providerByUrl(const QUrl &url) const | ||
240 | { | 249 | { | ||
241 | return d->m_providers.value(url); | 250 | return d->m_providers.value(url); | ||
242 | } | 251 | } | ||
243 | 252 | | |||
244 | QList<Provider> ProviderManager::providers() const | 253 | QList<Provider> ProviderManager::providers() const | ||
245 | { | 254 | { | ||
246 | return d->m_providers.values(); | 255 | return d->m_providers.values(); | ||
247 | } | 256 | } | ||
248 | 257 | | |||
249 | bool ProviderManager::contains(const QString &provider) const | 258 | bool ProviderManager::contains(const QString &provider) const | ||
250 | { | 259 | { | ||
251 | return d->m_providers.contains(QUrl(provider)); | 260 | return d->m_providers.contains(QUrl(provider)); | ||
252 | } | 261 | } | ||
253 | 262 | | |||
254 | QList<QUrl> ProviderManager::providerFiles() const | 263 | QList<QUrl> ProviderManager::providerFiles() const | ||
255 | { | 264 | { | ||
256 | return d->m_providerFiles.keys(); | 265 | return d->m_providerTargets.keys(); | ||
257 | } | 266 | } | ||
258 | 267 | | |||
259 | void ProviderManager::authenticate(QNetworkReply *reply, QAuthenticator *auth) | 268 | void ProviderManager::authenticate(QNetworkReply *reply, QAuthenticator *auth) | ||
260 | { | 269 | { | ||
261 | QUrl baseUrl; | 270 | QUrl baseUrl; | ||
262 | QList<QUrl> urls = d->m_providers.keys(); | 271 | QList<QUrl> urls = d->m_providers.keys(); | ||
263 | foreach (const QUrl &url, urls) { | 272 | foreach (const QUrl &url, urls) { | ||
264 | if (url.isParentOf(reply->url())) { | 273 | if (url.isParentOf(reply->url())) { | ||
▲ Show 20 Lines • Show All 44 Lines • Show Last 20 Lines |