Changeset View
Changeset View
Standalone View
Standalone View
src/job/gravatarresolvurljob.cpp
Show First 20 Lines • Show All 108 Lines • ▼ Show 20 Line(s) | |||||
109 | void GravatarResolvUrlJob::start() | 109 | void GravatarResolvUrlJob::start() | ||
110 | { | 110 | { | ||
111 | d->mHasGravatar = false; | 111 | d->mHasGravatar = false; | ||
112 | d->mFallbackDone = false; | 112 | d->mFallbackDone = false; | ||
113 | if (canStart()) { | 113 | if (canStart()) { | ||
114 | d->mCalculatedHash.clear(); | 114 | d->mCalculatedHash.clear(); | ||
115 | const QUrl url = createUrl(d->mUseLibravatar); | 115 | const QUrl url = createUrl(d->mUseLibravatar); | ||
116 | Q_EMIT resolvUrl(url); | 116 | Q_EMIT resolvUrl(url); | ||
117 | bool haveStoredPixmap = false; | 117 | if (!cacheLookup(d->mCalculatedHash)) | ||
118 | const QPixmap pix = GravatarCache::self()->loadGravatarPixmap(d->mCalculatedHash, haveStoredPixmap); | | |||
119 | if (haveStoredPixmap && !pix.isNull()) { | | |||
120 | d->mPixmap = pix; | | |||
121 | d->mHasGravatar = true; | | |||
122 | Q_EMIT finished(this); | | |||
123 | deleteLater(); | | |||
124 | } else { | | |||
125 | startNetworkManager(url); | 118 | startNetworkManager(url); | ||
126 | } | | |||
127 | } else { | 119 | } else { | ||
128 | qCDebug(GRAVATAR_LOG) << "Gravatar can not start"; | 120 | qCDebug(GRAVATAR_LOG) << "Gravatar can not start"; | ||
129 | deleteLater(); | 121 | deleteLater(); | ||
130 | } | 122 | } | ||
131 | } | 123 | } | ||
132 | 124 | | |||
133 | void GravatarResolvUrlJob::slotFinishLoadPixmap(QNetworkReply *reply) | 125 | void GravatarResolvUrlJob::slotFinishLoadPixmap(QNetworkReply *reply) | ||
134 | { | 126 | { | ||
135 | if (reply->error() == QNetworkReply::NoError) { | 127 | if (reply->error() == QNetworkReply::NoError) { | ||
136 | d->mPixmap.loadFromData(reply->readAll()); | 128 | d->mPixmap.loadFromData(reply->readAll()); | ||
137 | d->mHasGravatar = true; | 129 | d->mHasGravatar = true; | ||
138 | //For the moment don't use cache other we will store a lot of pixmap | 130 | //For the moment don't use cache other we will store a lot of pixmap | ||
139 | if (!d->mUseDefaultPixmap) { | 131 | if (!d->mUseDefaultPixmap) { | ||
140 | GravatarCache::self()->saveGravatarPixmap(d->mCalculatedHash, d->mPixmap); | 132 | GravatarCache::self()->saveGravatarPixmap(d->mCalculatedHash, d->mPixmap); | ||
141 | } | 133 | } | ||
142 | } else if (d->mUseLibravatar && d->mFallbackGravatar && !d->mFallbackDone) { | 134 | } else if (d->mUseLibravatar && d->mFallbackGravatar && !d->mFallbackDone) { | ||
143 | d->mFallbackDone = true; | 135 | d->mFallbackDone = true; | ||
144 | d->mCalculatedHash.clear(); | 136 | d->mCalculatedHash.clear(); | ||
145 | const QUrl url = createUrl(false); | 137 | const QUrl url = createUrl(false); | ||
146 | Q_EMIT resolvUrl(url); | 138 | Q_EMIT resolvUrl(url); | ||
139 | if (!cacheLookup(d->mCalculatedHash)) | ||||
147 | startNetworkManager(url); | 140 | startNetworkManager(url); | ||
148 | return; | 141 | return; | ||
149 | } | 142 | } | ||
150 | reply->deleteLater(); | 143 | reply->deleteLater(); | ||
151 | Q_EMIT finished(this); | 144 | Q_EMIT finished(this); | ||
152 | deleteLater(); | 145 | deleteLater(); | ||
153 | } | 146 | } | ||
154 | 147 | | |||
▲ Show 20 Lines • Show All 118 Lines • ▼ Show 20 Line(s) | 265 | } else { | |||
273 | url.setHost(d->mUseHttps ? QStringLiteral("secure.gravatar.com") : QStringLiteral("www.gravatar.com")); | 266 | url.setHost(d->mUseHttps ? QStringLiteral("secure.gravatar.com") : QStringLiteral("www.gravatar.com")); | ||
274 | } | 267 | } | ||
275 | url.setPort(d->mUseHttps ? 443 : 80); | 268 | url.setPort(d->mUseHttps ? 443 : 80); | ||
276 | d->mCalculatedHash = calculateHash(useLibravatar); | 269 | d->mCalculatedHash = calculateHash(useLibravatar); | ||
277 | url.setPath(QLatin1String("/avatar/") + d->mCalculatedHash); | 270 | url.setPath(QLatin1String("/avatar/") + d->mCalculatedHash); | ||
278 | url.setQuery(query); | 271 | url.setQuery(query); | ||
279 | return url; | 272 | return url; | ||
280 | } | 273 | } | ||
274 | | ||||
275 | bool GravatarResolvUrlJob::cacheLookup(const QString &hash) | ||||
276 | { | ||||
277 | bool haveStoredPixmap = false; | ||||
278 | const QPixmap pix = GravatarCache::self()->loadGravatarPixmap(hash, haveStoredPixmap); | ||||
279 | if (haveStoredPixmap && !pix.isNull()) { | ||||
280 | d->mPixmap = pix; | ||||
281 | d->mHasGravatar = true; | ||||
282 | Q_EMIT finished(this); | ||||
283 | deleteLater(); | ||||
284 | return true; | ||||
285 | } | ||||
286 | return false; | ||||
287 | } |