Skip to content

Commit

Permalink
Revert "Downoad all images in the background and keep them in memory"
Browse files Browse the repository at this point in the history
This reverts commit 6e450b7.
  • Loading branch information
jeena committed Oct 24, 2016
1 parent eb40e97 commit 5d05355
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 62 deletions.
53 changes: 1 addition & 52 deletions src/post.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Post::Post(QObject *parent) : QObject(parent)

}

Post::Post(QJsonObject post, QNetworkAccessManager *networkManager, QObject *parent) : QObject(parent)
Post::Post(QJsonObject post, QObject *parent) : QObject(parent)
{
mTitle = html2text(post.value("title").toString().trimmed());
mFeedTitle = html2text(post.value("feed_title").toString().trimmed());
Expand All @@ -48,18 +48,6 @@ Post::Post(QJsonObject post, QNetworkAccessManager *networkManager, QObject *par
QJsonDocument doc(post);
QString result(doc.toJson(QJsonDocument::Indented));
mJsonString = result;

mNetworkManager = networkManager;
cacheImgs();

QObject::connect(this, &Post::contentChanged, [this]() {
QJsonObject obj = QJsonDocument::fromJson(mJsonString.toUtf8()).object();
obj["content"] = QJsonValue(mContent);
QJsonDocument doc(obj);
QString result(doc.toJson(QJsonDocument::Indented));
mJsonString = result;
emit jsonStringChanged(mJsonString);
});
}

Post::~Post()
Expand Down Expand Up @@ -89,42 +77,3 @@ QString Post::html2text(const QString htmlString)
doc.setHtml(htmlString);
return doc.toPlainText();
}

void Post::cacheImgs()
{
QRegExp imgTagRegex("\\<img[^\\>]*src\\s*=\\s*\"([^\"]*)\"[^\\>]*\\>", Qt::CaseInsensitive);
imgTagRegex.setMinimal(true);
QStringList urlmatches;
int offset = 0;
while( (offset = imgTagRegex.indexIn(mContent, offset)) != -1){
offset += imgTagRegex.matchedLength();
urlmatches.append(imgTagRegex.cap(1)); // Should hold only src property
}

for(QString url : urlmatches) {

if(url.startsWith("http")) {
QNetworkRequest request(url);
QNetworkReply *reply = mNetworkManager->get(request);

connect(reply, &QNetworkReply::finished, [url, this, reply] () {
if (reply) {
if (reply->error() == QNetworkReply::NoError) {
QVariant mimeType(reply->header(QNetworkRequest::ContentTypeHeader));
QString imgString = QString("data:") + mimeType.toString() + QString(";base64,") + QString(reply->readAll().toBase64());
if(mimeType == "image/jpeg" || mimeType == "image/gif" || mimeType == "image/png")
{
mContent = mContent.replace(url, imgString);
emit contentChanged(mContent);
}
} else {
int httpStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
//do some error management
qWarning() << "HTTP error: " << httpStatus;
}
reply->deleteLater();
}
});
}
}
}
12 changes: 3 additions & 9 deletions src/post.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
#include <QUrl>
#include <QDate>
#include <QJsonObject>
#include <QNetworkReply>

class Post : public QObject
{
Expand All @@ -36,16 +35,16 @@ class Post : public QObject
Q_PROPERTY(QString author READ author CONSTANT)
Q_PROPERTY(QUrl link READ link CONSTANT)
Q_PROPERTY(QDateTime date READ date CONSTANT)
Q_PROPERTY(QString content READ content NOTIFY contentChanged)
Q_PROPERTY(QString content READ content CONSTANT)
Q_PROPERTY(QString excerpt READ excerpt CONSTANT)
Q_PROPERTY(bool starred READ starred NOTIFY starredChanged)
Q_PROPERTY(bool read READ read WRITE setRead NOTIFY readChanged)
Q_PROPERTY(bool dontChangeRead READ dontChangeRead WRITE setDontChangeRead NOTIFY dontChangeReadChanged)
Q_PROPERTY(QString jsonString READ jsonString NOTIFY jsonStringChanged)
Q_PROPERTY(QString jsonString READ jsonString CONSTANT)

public:
Post(QObject *parent = 0);
Post(QJsonObject post, QNetworkAccessManager *networkManager, QObject *parent = 0);
Post(QJsonObject post, QObject *parent = 0);
~Post();
QString title() const { return mTitle; }
QString feedTitle() const { return mFeedTitle; }
Expand All @@ -64,11 +63,9 @@ class Post : public QObject
QString jsonString() const { return mJsonString; }

signals:
void contentChanged(QString);
void starredChanged(bool);
void readChanged(bool);
void dontChangeReadChanged(bool);
void jsonStringChanged(QString);

public slots:

Expand All @@ -86,10 +83,7 @@ public slots:
bool mRead;
bool mDontChangeRead;
QString mJsonString;

QString html2text(const QString htmlString);
void cacheImgs();
QNetworkAccessManager *mNetworkManager;
};

#endif // POST_H
2 changes: 1 addition & 1 deletion src/tinytinyrss.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ void TinyTinyRSS::reload()
for(int i = 0; i < posts.count(); i++)
{
QJsonObject postJson = posts.at(i).toObject();
Post *post = new Post(postJson, mNetworkManager, this);
Post *post = new Post(postJson, this);
connect(post, SIGNAL(readChanged(bool)), this, SLOT(onPostReadChanged(bool)));
mPosts.append(post);
}
Expand Down

0 comments on commit 5d05355

Please sign in to comment.