Expose network errors to qml
This commit is contained in:
parent
237a6d67ed
commit
d59a1ef1ec
30
src/feed.cpp
30
src/feed.cpp
@ -68,6 +68,14 @@ Feed::Feed(int index)
|
|||||||
setRefreshing(false);
|
setRefreshing(false);
|
||||||
Q_EMIT entryCountChanged();
|
Q_EMIT entryCountChanged();
|
||||||
Q_EMIT unreadEntryCountChanged();
|
Q_EMIT unreadEntryCountChanged();
|
||||||
|
setErrorId(0);
|
||||||
|
setErrorString(QLatin1String(""));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
connect(&Fetcher::instance(), &Fetcher::error, this, [this](QString url, int errorId, QString errorString) {
|
||||||
|
if(url == m_url) {
|
||||||
|
setErrorId(errorId);
|
||||||
|
setErrorString(errorString);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -168,6 +176,16 @@ bool Feed::refreshing() const
|
|||||||
return m_refreshing;
|
return m_refreshing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Feed::errorId() const
|
||||||
|
{
|
||||||
|
return m_errorId;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Feed::errorString() const
|
||||||
|
{
|
||||||
|
return m_errorString;
|
||||||
|
}
|
||||||
|
|
||||||
void Feed::setName(QString name)
|
void Feed::setName(QString name)
|
||||||
{
|
{
|
||||||
m_name = name;
|
m_name = name;
|
||||||
@ -240,6 +258,18 @@ void Feed::setRefreshing(bool refreshing)
|
|||||||
Q_EMIT refreshingChanged(m_refreshing);
|
Q_EMIT refreshingChanged(m_refreshing);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Feed::setErrorId(int errorId)
|
||||||
|
{
|
||||||
|
m_errorId = errorId;
|
||||||
|
Q_EMIT errorIdChanged(m_errorId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Feed::setErrorString(QString errorString)
|
||||||
|
{
|
||||||
|
m_errorString = errorString;
|
||||||
|
Q_EMIT errorStringChanged(m_errorString);
|
||||||
|
}
|
||||||
|
|
||||||
void Feed::refresh()
|
void Feed::refresh()
|
||||||
{
|
{
|
||||||
Fetcher::instance().fetch(m_url);
|
Fetcher::instance().fetch(m_url);
|
||||||
|
10
src/feed.h
10
src/feed.h
@ -46,6 +46,8 @@ class Feed : public QObject
|
|||||||
Q_PROPERTY(bool notify READ notify WRITE setNotify NOTIFY notifyChanged)
|
Q_PROPERTY(bool notify READ notify WRITE setNotify NOTIFY notifyChanged)
|
||||||
Q_PROPERTY(int entryCount READ entryCount NOTIFY entryCountChanged)
|
Q_PROPERTY(int entryCount READ entryCount NOTIFY entryCountChanged)
|
||||||
Q_PROPERTY(int unreadEntryCount READ unreadEntryCount NOTIFY unreadEntryCountChanged)
|
Q_PROPERTY(int unreadEntryCount READ unreadEntryCount NOTIFY unreadEntryCountChanged)
|
||||||
|
Q_PROPERTY(int errorId READ errorId WRITE setErrorId NOTIFY errorIdChanged)
|
||||||
|
Q_PROPERTY(QString errorString READ errorString WRITE setErrorString NOTIFY errorStringChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Feed(int index);
|
Feed(int index);
|
||||||
@ -68,6 +70,8 @@ public:
|
|||||||
int entryCount() const;
|
int entryCount() const;
|
||||||
int unreadEntryCount() const;
|
int unreadEntryCount() const;
|
||||||
bool read() const;
|
bool read() const;
|
||||||
|
int errorId() const;
|
||||||
|
QString errorString() const;
|
||||||
|
|
||||||
bool refreshing() const;
|
bool refreshing() const;
|
||||||
|
|
||||||
@ -83,6 +87,8 @@ public:
|
|||||||
void setAutoUpdateType(int type);
|
void setAutoUpdateType(int type);
|
||||||
void setNotify(bool notify);
|
void setNotify(bool notify);
|
||||||
void setRefreshing(bool refreshing);
|
void setRefreshing(bool refreshing);
|
||||||
|
void setErrorId(int errorId);
|
||||||
|
void setErrorString(QString errorString);
|
||||||
|
|
||||||
Q_INVOKABLE void refresh();
|
Q_INVOKABLE void refresh();
|
||||||
void remove();
|
void remove();
|
||||||
@ -101,6 +107,8 @@ Q_SIGNALS:
|
|||||||
void notifyChanged(bool notify);
|
void notifyChanged(bool notify);
|
||||||
void entryCountChanged();
|
void entryCountChanged();
|
||||||
void unreadEntryCountChanged();
|
void unreadEntryCountChanged();
|
||||||
|
void errorIdChanged(int &errorId);
|
||||||
|
void errorStringChanged(QString &errorString);
|
||||||
|
|
||||||
void refreshingChanged(bool refreshing);
|
void refreshingChanged(bool refreshing);
|
||||||
|
|
||||||
@ -118,6 +126,8 @@ private:
|
|||||||
int m_autoUpdateCount;
|
int m_autoUpdateCount;
|
||||||
int m_autoUpdateType;
|
int m_autoUpdateType;
|
||||||
bool m_notify;
|
bool m_notify;
|
||||||
|
int m_errorId;
|
||||||
|
QString m_errorString;
|
||||||
|
|
||||||
bool m_refreshing = false;
|
bool m_refreshing = false;
|
||||||
};
|
};
|
||||||
|
@ -48,12 +48,16 @@ void Fetcher::fetch(QString url)
|
|||||||
QNetworkRequest request((QUrl(url)));
|
QNetworkRequest request((QUrl(url)));
|
||||||
QNetworkReply *reply = get(request);
|
QNetworkReply *reply = get(request);
|
||||||
connect(reply, &QNetworkReply::finished, this, [this, url, reply]() {
|
connect(reply, &QNetworkReply::finished, this, [this, url, reply]() {
|
||||||
QByteArray data = reply->readAll();
|
if(reply->error()) {
|
||||||
Syndication::DocumentSource *document = new Syndication::DocumentSource(data, url);
|
qWarning() << "Error fetching feed";
|
||||||
Syndication::FeedPtr feed = Syndication::parserCollection()->parse(*document, QStringLiteral("Atom"));
|
qWarning() << reply->errorString();
|
||||||
|
Q_EMIT error(url, reply->error(), reply->errorString());
|
||||||
processFeed(feed, url);
|
} else {
|
||||||
|
QByteArray data = reply->readAll();
|
||||||
|
Syndication::DocumentSource *document = new Syndication::DocumentSource(data, url);
|
||||||
|
Syndication::FeedPtr feed = Syndication::parserCollection()->parse(*document, QStringLiteral("Atom"));
|
||||||
|
processFeed(feed, url);
|
||||||
|
}
|
||||||
delete reply;
|
delete reply;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -56,4 +56,5 @@ Q_SIGNALS:
|
|||||||
void startedFetchingFeed(QString url);
|
void startedFetchingFeed(QString url);
|
||||||
void feedUpdated(QString url);
|
void feedUpdated(QString url);
|
||||||
void feedDetailsUpdated(QString url, QString name, QString image, QString link, QString description, QDateTime lastUpdated);
|
void feedDetailsUpdated(QString url, QString name, QString image, QString link, QString description, QDateTime lastUpdated);
|
||||||
|
void error(QString url, int errorId, QString errorString);
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user