Changeset View
Changeset View
Standalone View
Standalone View
src/job/gravatarresolvurljob.cpp
Show First 20 Lines • Show All 104 Lines • ▼ Show 20 Line(s) | |||||
105 | void GravatarResolvUrlJob::start() | 105 | void GravatarResolvUrlJob::start() | ||
106 | { | 106 | { | ||
107 | d->mHasGravatar = false; | 107 | d->mHasGravatar = false; | ||
108 | d->mFallbackDone = false; | 108 | d->mFallbackDone = false; | ||
109 | if (canStart()) { | 109 | if (canStart()) { | ||
110 | d->mCalculatedHash.clear(); | 110 | d->mCalculatedHash.clear(); | ||
111 | const QUrl url = createUrl(d->mUseLibravatar); | 111 | const QUrl url = createUrl(d->mUseLibravatar); | ||
112 | Q_EMIT resolvUrl(url); | 112 | Q_EMIT resolvUrl(url); | ||
113 | bool haveStoredPixmap = false; | 113 | if (!cacheLookup(d->mCalculatedHash)) | ||
114 | const QPixmap pix = GravatarCache::self()->loadGravatarPixmap(d->mCalculatedHash, haveStoredPixmap); | | |||
115 | if (haveStoredPixmap && !pix.isNull()) { | | |||
116 | d->mPixmap = pix; | | |||
117 | d->mHasGravatar = true; | | |||
118 | Q_EMIT finished(this); | | |||
119 | deleteLater(); | | |||
120 | } else { | | |||
121 | startNetworkManager(url); | 114 | startNetworkManager(url); | ||
122 | } | | |||
123 | } else { | 115 | } else { | ||
124 | qCDebug(GRAVATAR_LOG) << "Gravatar can not start"; | 116 | qCDebug(GRAVATAR_LOG) << "Gravatar can not start"; | ||
125 | deleteLater(); | 117 | deleteLater(); | ||
126 | } | 118 | } | ||
127 | } | 119 | } | ||
128 | 120 | | |||
129 | void GravatarResolvUrlJob::slotFinishLoadPixmap(QNetworkReply *reply) | 121 | void GravatarResolvUrlJob::slotFinishLoadPixmap(QNetworkReply *reply) | ||
130 | { | 122 | { | ||
131 | if (reply->error() == QNetworkReply::NoError) { | 123 | if (reply->error() == QNetworkReply::NoError) { | ||
132 | d->mPixmap.loadFromData(reply->readAll()); | 124 | d->mPixmap.loadFromData(reply->readAll()); | ||
133 | d->mHasGravatar = true; | 125 | d->mHasGravatar = true; | ||
134 | //For the moment don't use cache other we will store a lot of pixmap | 126 | //For the moment don't use cache other we will store a lot of pixmap | ||
135 | if (!d->mUseDefaultPixmap) { | 127 | if (!d->mUseDefaultPixmap) { | ||
136 | GravatarCache::self()->saveGravatarPixmap(d->mCalculatedHash, d->mPixmap); | 128 | GravatarCache::self()->saveGravatarPixmap(d->mCalculatedHash, d->mPixmap); | ||
137 | } | 129 | } | ||
138 | } else if (d->mUseLibravatar && d->mFallbackGravatar && !d->mFallbackDone) { | 130 | } else if (d->mUseLibravatar && d->mFallbackGravatar && !d->mFallbackDone) { | ||
139 | d->mFallbackDone = true; | 131 | d->mFallbackDone = true; | ||
140 | d->mCalculatedHash.clear(); | 132 | d->mCalculatedHash.clear(); | ||
141 | const QUrl url = createUrl(false); | 133 | const QUrl url = createUrl(false); | ||
142 | Q_EMIT resolvUrl(url); | 134 | Q_EMIT resolvUrl(url); | ||
135 | if (!cacheLookup(d->mCalculatedHash)) | ||||
143 | startNetworkManager(url); | 136 | startNetworkManager(url); | ||
144 | return; | 137 | return; | ||
145 | } | 138 | } | ||
146 | reply->deleteLater(); | 139 | reply->deleteLater(); | ||
147 | Q_EMIT finished(this); | 140 | Q_EMIT finished(this); | ||
148 | deleteLater(); | 141 | deleteLater(); | ||
149 | } | 142 | } | ||
150 | 143 | | |||
▲ Show 20 Lines • Show All 98 Lines • ▼ Show 20 Line(s) | 241 | } else { | |||
249 | url.setHost(QStringLiteral("secure.gravatar.com")); | 242 | url.setHost(QStringLiteral("secure.gravatar.com")); | ||
250 | } | 243 | } | ||
251 | url.setPort(443); | 244 | url.setPort(443); | ||
252 | d->mCalculatedHash = calculateHash(useLibravatar); | 245 | d->mCalculatedHash = calculateHash(useLibravatar); | ||
253 | url.setPath(QLatin1String("/avatar/") + d->mCalculatedHash); | 246 | url.setPath(QLatin1String("/avatar/") + d->mCalculatedHash); | ||
254 | url.setQuery(query); | 247 | url.setQuery(query); | ||
255 | return url; | 248 | return url; | ||
256 | } | 249 | } | ||
250 | | ||||
251 | bool GravatarResolvUrlJob::cacheLookup(const QString &hash) | ||||
252 | { | ||||
253 | bool haveStoredPixmap = false; | ||||
254 | const QPixmap pix = GravatarCache::self()->loadGravatarPixmap(hash, haveStoredPixmap); | ||||
255 | if (haveStoredPixmap && !pix.isNull()) { | ||||
256 | d->mPixmap = pix; | ||||
257 | d->mHasGravatar = true; | ||||
258 | Q_EMIT finished(this); | ||||
259 | deleteLater(); | ||||
260 | return true; | ||||
261 | } | ||||
262 | return false; | ||||
263 | } |