Added network statuses indication to feeds list.
This commit is contained in:
parent
7227d39c9b
commit
91ba9676ce
@ -39,6 +39,7 @@
|
|||||||
FeedsModelFeed::FeedsModelFeed(FeedsModelRootItem *parent_item)
|
FeedsModelFeed::FeedsModelFeed(FeedsModelRootItem *parent_item)
|
||||||
: FeedsModelRootItem(parent_item),
|
: FeedsModelRootItem(parent_item),
|
||||||
m_status(Normal),
|
m_status(Normal),
|
||||||
|
m_networkError(QNetworkReply::NoError),
|
||||||
m_type(Rss0X),
|
m_type(Rss0X),
|
||||||
m_totalCount(0),
|
m_totalCount(0),
|
||||||
m_unreadCount(0),
|
m_unreadCount(0),
|
||||||
@ -83,7 +84,7 @@ QString FeedsModelFeed::typeToString(FeedsModelFeed::Type type) {
|
|||||||
|
|
||||||
void FeedsModelFeed::updateCounts(bool including_total_count, bool update_feed_statuses) {
|
void FeedsModelFeed::updateCounts(bool including_total_count, bool update_feed_statuses) {
|
||||||
QSqlDatabase database = qApp->database()->connection("FeedsModelFeed",
|
QSqlDatabase database = qApp->database()->connection("FeedsModelFeed",
|
||||||
DatabaseFactory::FromSettings);
|
DatabaseFactory::FromSettings);
|
||||||
QSqlQuery query_all(database);
|
QSqlQuery query_all(database);
|
||||||
query_all.setForwardOnly(true);
|
query_all.setForwardOnly(true);
|
||||||
|
|
||||||
@ -312,12 +313,14 @@ QVariant FeedsModelFeed::data(int column, int role) const {
|
|||||||
//: Tooltip for feed.
|
//: Tooltip for feed.
|
||||||
return tr("%1 (%2)\n"
|
return tr("%1 (%2)\n"
|
||||||
"%3\n\n"
|
"%3\n\n"
|
||||||
|
"Network status: %6\n"
|
||||||
"Encoding: %4\n"
|
"Encoding: %4\n"
|
||||||
"Auto-update status: %5").arg(m_title,
|
"Auto-update status: %5").arg(m_title,
|
||||||
FeedsModelFeed::typeToString(m_type),
|
FeedsModelFeed::typeToString(m_type),
|
||||||
m_description,
|
m_description,
|
||||||
m_encoding,
|
m_encoding,
|
||||||
auto_update_string);
|
auto_update_string,
|
||||||
|
NetworkFactory::networkErrorText(m_networkError));
|
||||||
}
|
}
|
||||||
else if (column == FDS_MODEL_COUNTS_INDEX) {
|
else if (column == FDS_MODEL_COUNTS_INDEX) {
|
||||||
//: Tooltip for "unread" column of feed list.
|
//: Tooltip for "unread" column of feed list.
|
||||||
@ -339,7 +342,16 @@ QVariant FeedsModelFeed::data(int column, int role) const {
|
|||||||
return countOfUnreadMessages() > 0 ? m_boldFont : m_normalFont;
|
return countOfUnreadMessages() > 0 ? m_boldFont : m_normalFont;
|
||||||
|
|
||||||
case Qt::ForegroundRole:
|
case Qt::ForegroundRole:
|
||||||
return m_status == NewMessages ? QColor(Qt::blue) : QVariant();
|
switch (m_status) {
|
||||||
|
case NewMessages:
|
||||||
|
return QColor(Qt::blue);
|
||||||
|
|
||||||
|
case NetworkError:
|
||||||
|
return QColor(Qt::red);
|
||||||
|
|
||||||
|
default:
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return QVariant();
|
return QVariant();
|
||||||
@ -349,16 +361,19 @@ QVariant FeedsModelFeed::data(int column, int role) const {
|
|||||||
void FeedsModelFeed::update() {
|
void FeedsModelFeed::update() {
|
||||||
QByteArray feed_contents;
|
QByteArray feed_contents;
|
||||||
int download_timeout = qApp->settings()->value(APP_CFG_FEEDS, "feed_update_timeout", DOWNLOAD_TIMEOUT).toInt();
|
int download_timeout = qApp->settings()->value(APP_CFG_FEEDS, "feed_update_timeout", DOWNLOAD_TIMEOUT).toInt();
|
||||||
QNetworkReply::NetworkError download_result = NetworkFactory::downloadFile(url(), download_timeout,
|
m_networkError = NetworkFactory::downloadFile(url(), download_timeout,
|
||||||
feed_contents, passwordProtected(),
|
feed_contents, passwordProtected(),
|
||||||
username(), password());
|
username(), password());
|
||||||
|
|
||||||
|
if (m_networkError != QNetworkReply::NoError) {
|
||||||
|
qWarning("Error during fetching of new messages for feed '%s' (id %d).", qPrintable(url()), id());
|
||||||
|
m_status = NetworkError;
|
||||||
|
|
||||||
if (download_result != QNetworkReply::NoError) {
|
|
||||||
qWarning("Error during fetching of new messages for feed '%s' (id %d).",
|
|
||||||
qPrintable(url()),
|
|
||||||
id());
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
m_status = Normal;
|
||||||
|
}
|
||||||
|
|
||||||
// Encode downloaded data for further parsing.
|
// Encode downloaded data for further parsing.
|
||||||
QTextCodec *codec = QTextCodec::codecForName(encoding().toLocal8Bit());
|
QTextCodec *codec = QTextCodec::codecForName(encoding().toLocal8Bit());
|
||||||
@ -399,7 +414,7 @@ void FeedsModelFeed::update() {
|
|||||||
|
|
||||||
bool FeedsModelFeed::removeItself() {
|
bool FeedsModelFeed::removeItself() {
|
||||||
QSqlDatabase database = qApp->database()->connection("FeedsModelFeed",
|
QSqlDatabase database = qApp->database()->connection("FeedsModelFeed",
|
||||||
DatabaseFactory::FromSettings);
|
DatabaseFactory::FromSettings);
|
||||||
QSqlQuery query_remove(database);
|
QSqlQuery query_remove(database);
|
||||||
|
|
||||||
query_remove.setForwardOnly(true);
|
query_remove.setForwardOnly(true);
|
||||||
@ -422,7 +437,7 @@ bool FeedsModelFeed::removeItself() {
|
|||||||
void FeedsModelFeed::updateMessages(const QList<Message> &messages) {
|
void FeedsModelFeed::updateMessages(const QList<Message> &messages) {
|
||||||
int feed_id = id();
|
int feed_id = id();
|
||||||
QSqlDatabase database = qApp->database()->connection("FeedsModelFeed",
|
QSqlDatabase database = qApp->database()->connection("FeedsModelFeed",
|
||||||
DatabaseFactory::FromSettings);
|
DatabaseFactory::FromSettings);
|
||||||
|
|
||||||
// Prepare queries.
|
// Prepare queries.
|
||||||
QSqlQuery query_select(database);
|
QSqlQuery query_select(database);
|
||||||
|
@ -199,6 +199,7 @@ class FeedsModelFeed : public FeedsModelRootItem {
|
|||||||
QString m_password;
|
QString m_password;
|
||||||
|
|
||||||
Status m_status;
|
Status m_status;
|
||||||
|
QNetworkReply::NetworkError m_networkError;
|
||||||
Type m_type;
|
Type m_type;
|
||||||
int m_totalCount;
|
int m_totalCount;
|
||||||
int m_unreadCount;
|
int m_unreadCount;
|
||||||
|
@ -80,7 +80,7 @@ QString NetworkFactory::networkErrorText(QNetworkReply::NetworkError error_code)
|
|||||||
|
|
||||||
case QNetworkReply::NoError:
|
case QNetworkReply::NoError:
|
||||||
//: Network status.
|
//: Network status.
|
||||||
return tr("success");
|
return tr("no errors");
|
||||||
|
|
||||||
case QNetworkReply::UnknownContentError:
|
case QNetworkReply::UnknownContentError:
|
||||||
//: Network status.
|
//: Network status.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user