From 3d6a289120bb273f16a8640c304c15c4471a4eda Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Tue, 16 Feb 2021 13:17:21 +0100 Subject: [PATCH] move screnshots, work on feedly --- .../desktop/com.github.rssguard.appdata.xml | 6 +- .../images}/screenshot-linux.png | Bin .../images}/screenshot-windows.png | Bin resources/scripts/7za | 2 +- resources/sql/db_init_mysql.sql | 1 + resources/sql/db_init_sqlite.sql | 1 + resources/sql/db_update_mysql_20_21.sql | 1 + resources/sql/db_update_sqlite_20_21.sql | 1 + .../miscellaneous/databasequeries.cpp | 16 ++-- .../miscellaneous/databasequeries.h | 2 + src/librssguard/services/feedly/definitions.h | 14 +-- .../services/feedly/feedlyfeed.cpp | 20 ++--- .../services/feedly/feedlynetwork.cpp | 85 ++++++++++++++++-- .../services/feedly/feedlynetwork.h | 9 +- .../services/feedly/feedlyserviceroot.cpp | 24 +++-- .../feedly/gui/feedlyaccountdetails.cpp | 9 +- .../feedly/gui/feedlyaccountdetails.ui | 33 ++++--- .../feedly/gui/formeditfeedlyaccount.cpp | 2 + 18 files changed, 169 insertions(+), 57 deletions(-) rename resources/{screenshots => docs/images}/screenshot-linux.png (100%) rename resources/{screenshots => docs/images}/screenshot-windows.png (100%) diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml index af149a451..98487b569 100644 --- a/resources/desktop/com.github.rssguard.appdata.xml +++ b/resources/desktop/com.github.rssguard.appdata.xml @@ -17,11 +17,11 @@ Linux version - https://github.com/martinrotter/rssguard/blob/master/resources/screenshots/screenshot-linux.png?raw=true + https://github.com/martinrotter/rssguard/blob/master/resources/docs/images/screenshot-linux.png?raw=true Windows version - https://github.com/martinrotter/rssguard/blob/master/resources/screenshots/screenshot-windows.png?raw=true + https://github.com/martinrotter/rssguard/blob/master/resources/docs/images/screenshot-windows.png?raw=true https://github.com/martinrotter/rssguard @@ -30,7 +30,7 @@ https://martinrotter.github.io/donate/ - + none diff --git a/resources/screenshots/screenshot-linux.png b/resources/docs/images/screenshot-linux.png similarity index 100% rename from resources/screenshots/screenshot-linux.png rename to resources/docs/images/screenshot-linux.png diff --git a/resources/screenshots/screenshot-windows.png b/resources/docs/images/screenshot-windows.png similarity index 100% rename from resources/screenshots/screenshot-windows.png rename to resources/docs/images/screenshot-windows.png diff --git a/resources/scripts/7za b/resources/scripts/7za index 9c10723bf..47f412575 160000 --- a/resources/scripts/7za +++ b/resources/scripts/7za @@ -1 +1 @@ -Subproject commit 9c10723bfbaf6cb85107d6ee16e0324e9e487749 +Subproject commit 47f4125753452eff8800dbd6600c5a05540b15d9 diff --git a/resources/sql/db_init_mysql.sql b/resources/sql/db_init_mysql.sql index 1a21593bf..9acd6e3d0 100644 --- a/resources/sql/db_init_mysql.sql +++ b/resources/sql/db_init_mysql.sql @@ -91,6 +91,7 @@ CREATE TABLE IF NOT EXISTS FeedlyAccounts ( developer_access_token TEXT, refresh_token TEXT, msg_limit INTEGER NOT NULL DEFAULT -1 CHECK (msg_limit >= -1), + update_only_unread INTEGER(1) NOT NULL DEFAULT 0 CHECK (update_only_unread >= 0 AND update_only_unread <= 1), FOREIGN KEY (id) REFERENCES Accounts (id) ); diff --git a/resources/sql/db_init_sqlite.sql b/resources/sql/db_init_sqlite.sql index 461d0f0f3..680aa856e 100644 --- a/resources/sql/db_init_sqlite.sql +++ b/resources/sql/db_init_sqlite.sql @@ -85,6 +85,7 @@ CREATE TABLE IF NOT EXISTS FeedlyAccounts ( developer_access_token TEXT, refresh_token TEXT, msg_limit INTEGER NOT NULL DEFAULT -1 CHECK (msg_limit >= -1), + update_only_unread INTEGER(1) NOT NULL DEFAULT 0 CHECK (update_only_unread >= 0 AND update_only_unread <= 1), FOREIGN KEY (id) REFERENCES Accounts (id) ); diff --git a/resources/sql/db_update_mysql_20_21.sql b/resources/sql/db_update_mysql_20_21.sql index fc8c2f2e1..ed41302db 100755 --- a/resources/sql/db_update_mysql_20_21.sql +++ b/resources/sql/db_update_mysql_20_21.sql @@ -4,6 +4,7 @@ CREATE TABLE IF NOT EXISTS FeedlyAccounts ( developer_access_token TEXT, refresh_token TEXT, msg_limit INTEGER NOT NULL DEFAULT -1 CHECK (msg_limit >= -1), + update_only_unread INTEGER(1) NOT NULL DEFAULT 0 CHECK (update_only_unread >= 0 AND update_only_unread <= 1), FOREIGN KEY (id) REFERENCES Accounts (id) ); diff --git a/resources/sql/db_update_sqlite_20_21.sql b/resources/sql/db_update_sqlite_20_21.sql index fc8c2f2e1..ed41302db 100755 --- a/resources/sql/db_update_sqlite_20_21.sql +++ b/resources/sql/db_update_sqlite_20_21.sql @@ -4,6 +4,7 @@ CREATE TABLE IF NOT EXISTS FeedlyAccounts ( developer_access_token TEXT, refresh_token TEXT, msg_limit INTEGER NOT NULL DEFAULT -1 CHECK (msg_limit >= -1), + update_only_unread INTEGER(1) NOT NULL DEFAULT 0 CHECK (update_only_unread >= 0 AND update_only_unread <= 1), FOREIGN KEY (id) REFERENCES Accounts (id) ); diff --git a/src/librssguard/miscellaneous/databasequeries.cpp b/src/librssguard/miscellaneous/databasequeries.cpp index 21319f5bb..6b08102b0 100755 --- a/src/librssguard/miscellaneous/databasequeries.cpp +++ b/src/librssguard/miscellaneous/databasequeries.cpp @@ -1846,16 +1846,18 @@ bool DatabaseQueries::overwriteOwnCloudAccount(const QSqlDatabase& db, const QSt bool DatabaseQueries::createFeedlyAccount(const QSqlDatabase& db, const QString& username, const QString& developer_access_token, const QString& refresh_token, - int batch_size, int account_id) { + int batch_size, bool download_only_unread_messages, + int account_id) { QSqlQuery q(db); - q.prepare("INSERT INTO FeedlyAccounts (id, username, developer_access_token, refresh_token, msg_limit) " - "VALUES (:id, :username, :developer_access_token, :refresh_token, :msg_limit);"); + q.prepare("INSERT INTO FeedlyAccounts (id, username, developer_access_token, refresh_token, msg_limit, update_only_unread) " + "VALUES (:id, :username, :developer_access_token, :refresh_token, :msg_limit, :update_only_unread);"); q.bindValue(QSL(":id"), account_id); q.bindValue(QSL(":username"), username); q.bindValue(QSL(":developer_access_token"), developer_access_token); q.bindValue(QSL(":refresh_token"), refresh_token); q.bindValue(QSL(":msg_limit"), batch_size <= 0 ? FEEDLY_UNLIMITED_BATCH_SIZE : batch_size); + q.bindValue(QSL(":update_only_unread"), download_only_unread_messages ? 1 : 0); if (q.exec()) { return true; @@ -1870,18 +1872,21 @@ bool DatabaseQueries::createFeedlyAccount(const QSqlDatabase& db, const QString& bool DatabaseQueries::overwriteFeedlyAccount(const QSqlDatabase& db, const QString& username, const QString& developer_access_token, const QString& refresh_token, - int batch_size, int account_id) { + int batch_size, bool download_only_unread_messages, + int account_id) { QSqlQuery query(db); query.prepare("UPDATE FeedlyAccounts " "SET username = :username, developer_access_token = :developer_access_token, " - "refresh_token = :refresh_token, msg_limit = :msg_limit " + "refresh_token = :refresh_token, msg_limit = :msg_limit, " + "update_only_unread = :update_only_unread " "WHERE id = :id;"); query.bindValue(QSL(":id"), account_id); query.bindValue(QSL(":username"), username); query.bindValue(QSL(":developer_access_token"), developer_access_token); query.bindValue(QSL(":refresh_token"), refresh_token); query.bindValue(QSL(":msg_limit"), batch_size <= 0 ? FEEDLY_UNLIMITED_BATCH_SIZE : batch_size); + query.bindValue(QSL(":update_only_unread"), download_only_unread_messages ? 1 : 0); if (query.exec()) { return true; @@ -2628,6 +2633,7 @@ QList DatabaseQueries::getFeedlyAccounts(const QSqlDatabase& db, b #endif root->network()->setBatchSize(query.value(4).toInt()); + root->network()->setDownloadOnlyUnreadMessages(query.value(5).toBool()); root->updateTitle(); fillBaseAccountData(db, root); diff --git a/src/librssguard/miscellaneous/databasequeries.h b/src/librssguard/miscellaneous/databasequeries.h index 040f16a6a..fbc57e05c 100644 --- a/src/librssguard/miscellaneous/databasequeries.h +++ b/src/librssguard/miscellaneous/databasequeries.h @@ -159,12 +159,14 @@ class DatabaseQueries { const QString& developer_access_token, const QString& refresh_token, int batch_size, + bool download_only_unread_messages, int account_id); static bool overwriteFeedlyAccount(const QSqlDatabase& db, const QString& username, const QString& developer_access_token, const QString& refresh_token, int batch_size, + bool download_only_unread_messages, int account_id); // Greader account. diff --git a/src/librssguard/services/feedly/definitions.h b/src/librssguard/services/feedly/definitions.h index 587d58d94..2fdfeb214 100755 --- a/src/librssguard/services/feedly/definitions.h +++ b/src/librssguard/services/feedly/definitions.h @@ -2,7 +2,8 @@ #define FEEDLY_DEFINITIONS_H #define FEEDLY_UNLIMITED_BATCH_SIZE -1 -#define FEEDLY_MAX_BATCH_SIZE 999 +#define FEEDLY_DEFAULT_BATCH_SIZE 20 +#define FEEDLY_MAX_BATCH_SIZE 500 #define FEEDLY_GENERATE_DAT "https://feedly.com/v3/auth/dev" @@ -15,10 +16,11 @@ #define FEEDLY_API_URL_BASE "https://cloud.feedly.com/v3/" #endif -#define FEEDLY_API_URL_AUTH "auth/auth" -#define FEEDLY_API_URL_TOKEN "auth/token" -#define FEEDLY_API_URL_PROFILE "profile" -#define FEEDLY_API_URL_COLLETIONS "collections" -#define FEEDLY_API_URL_TAGS "tags" +#define FEEDLY_API_URL_AUTH "auth/auth" +#define FEEDLY_API_URL_TOKEN "auth/token" +#define FEEDLY_API_URL_PROFILE "profile" +#define FEEDLY_API_URL_COLLETIONS "collections" +#define FEEDLY_API_URL_TAGS "tags" +#define FEEDLY_API_URL_STREAM_CONTENTS "streams/contents?streamId=%1" #endif // FEEDLY_DEFINITIONS_H diff --git a/src/librssguard/services/feedly/feedlyfeed.cpp b/src/librssguard/services/feedly/feedlyfeed.cpp index 1e2fd3d4e..72efda71f 100755 --- a/src/librssguard/services/feedly/feedlyfeed.cpp +++ b/src/librssguard/services/feedly/feedlyfeed.cpp @@ -16,20 +16,14 @@ FeedlyServiceRoot* FeedlyFeed::serviceRoot() const { } QList FeedlyFeed::obtainNewMessages(bool* error_during_obtaining) { - return {}; + Feed::Status error = Feed::Status::Normal; + QList messages = serviceRoot()->network()->streamContents(customId()); - /* - Feed::Status error = Feed::Status::Normal; - QList messages = serviceRoot()->network()->streamContents(getParentServiceRoot(), - customId(), - error, - getParentServiceRoot()->networkProxy()); + setStatus(error); - setStatus(error); + if (error == Feed::Status::NetworkError || error == Feed::Status::AuthError) { + *error_during_obtaining = true; + } - if (error == Feed::Status::NetworkError || error == Feed::Status::AuthError) { - * error_during_obtaining = true; - } - - return messages;*/ + return messages; } diff --git a/src/librssguard/services/feedly/feedlynetwork.cpp b/src/librssguard/services/feedly/feedlynetwork.cpp index 0f2597c14..a56e6ba9d 100755 --- a/src/librssguard/services/feedly/feedlynetwork.cpp +++ b/src/librssguard/services/feedly/feedlynetwork.cpp @@ -33,7 +33,7 @@ FeedlyNetwork::FeedlyNetwork(QObject* parent) FEEDLY_API_SCOPE, this)), #endif m_username(QString()), - m_developerAccessToken(QString()), m_batchSize(FEEDLY_UNLIMITED_BATCH_SIZE) { + m_developerAccessToken(QString()), m_batchSize(FEEDLY_DEFAULT_BATCH_SIZE), m_downloadOnlyUnreadMessages(false) { #if defined (FEEDLY_OFFICIAL_SUPPORT) m_oauth->setRedirectUrl(QString(OAUTH_REDIRECT_URI) + QL1C(':') + QString::number(FEEDLY_API_REDIRECT_URI_PORT)); @@ -44,6 +44,57 @@ FeedlyNetwork::FeedlyNetwork(QObject* parent) #endif } +QList FeedlyNetwork::streamContents(const QString& stream_id) { + QString bear = bearer(); + + if (bear.isEmpty()) { + qCriticalNN << LOGSEC_FEEDLY << "Cannot obtain personal collections, because bearer is empty."; + throw NetworkException(QNetworkReply::NetworkError::AuthenticationRequiredError); + } + + int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt(); + QByteArray output; + QString continuation; + QList messages; + + // We download in batches. + do { + QString target_url = fullUrl(Service::StreamContents).arg(QString(QUrl::toPercentEncoding(stream_id))); + + if (m_downloadOnlyUnreadMessages) { + target_url += QSL("&unreadOnly=true"); + } + + if (!continuation.isEmpty()) { + target_url += QSL("&continuation=%1").arg(continuation); + } + else if (m_batchSize > 0) { + target_url += QSL("&count=%2").arg(QString::number(m_batchSize)); + } + + auto result = NetworkFactory::performNetworkOperation(target_url, + timeout, + {}, + output, + QNetworkAccessManager::Operation::GetOperation, + { bearerHeader(bear) }, + false, + {}, + {}, + m_service->networkProxy()); + + messages += decodeStreamContents(output); + + } + while (!continuation.isEmpty()); + + return messages; +} + +QList FeedlyNetwork::decodeStreamContents(const QByteArray& stream_contents) const { + return {}; +} + RootItem* FeedlyNetwork::collections(bool obtain_icons) { QString bear = bearer(); @@ -54,11 +105,11 @@ RootItem* FeedlyNetwork::collections(bool obtain_icons) { QString target_url = fullUrl(Service::Collections); int timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt(); - QByteArray output_msgs; + QByteArray output; auto result = NetworkFactory::performNetworkOperation(target_url, timeout, {}, - output_msgs, + output, QNetworkAccessManager::Operation::GetOperation, { bearerHeader(bear) }, false, @@ -70,7 +121,7 @@ RootItem* FeedlyNetwork::collections(bool obtain_icons) { throw NetworkException(result.first); } - return decodeCollections(output_msgs, obtain_icons, m_service->networkProxy(), timeout); + return decodeCollections(output, obtain_icons, m_service->networkProxy(), timeout); } RootItem* FeedlyNetwork::decodeCollections(const QByteArray& json, bool obtain_icons, @@ -190,7 +241,20 @@ QList FeedlyNetwork::tags() { throw NetworkException(result.first); } - return {}; + QJsonDocument json = QJsonDocument::fromJson(output); + QList lbls; + + for (const QJsonValue& tag : json.array()) { + const QJsonObject& tag_obj = tag.toObject(); + QString name_id = tag_obj["id"].toString(); + QString plain_name = tag_obj["label"].toString(); + auto* new_lbl = new Label(plain_name, TextFactory::generateColorFromText(name_id)); + + new_lbl->setCustomId(name_id); + lbls.append(new_lbl); + } + + return lbls; } QString FeedlyNetwork::username() const { @@ -278,6 +342,9 @@ QString FeedlyNetwork::fullUrl(FeedlyNetwork::Service service) const { case Service::Tags: return QSL(FEEDLY_API_URL_BASE) + FEEDLY_API_URL_TAGS; + case Service::StreamContents: + return QSL(FEEDLY_API_URL_BASE) + FEEDLY_API_URL_STREAM_CONTENTS; + default: return FEEDLY_API_URL_BASE; } @@ -297,6 +364,14 @@ QPair FeedlyNetwork::bearerHeader(const QString& bearer) return { QString(HTTP_HEADERS_AUTHORIZATION).toLocal8Bit(), bearer.toLocal8Bit() }; } +bool FeedlyNetwork::downloadOnlyUnreadMessages() const { + return m_downloadOnlyUnreadMessages; +} + +void FeedlyNetwork::setDownloadOnlyUnreadMessages(bool download_only_unread_messages) { + m_downloadOnlyUnreadMessages = download_only_unread_messages; +} + void FeedlyNetwork::setService(FeedlyServiceRoot* service) { m_service = service; } diff --git a/src/librssguard/services/feedly/feedlynetwork.h b/src/librssguard/services/feedly/feedlynetwork.h index 591e01292..e1a3bd51f 100755 --- a/src/librssguard/services/feedly/feedlynetwork.h +++ b/src/librssguard/services/feedly/feedlynetwork.h @@ -21,6 +21,7 @@ class FeedlyNetwork : public QObject { explicit FeedlyNetwork(QObject* parent = nullptr); // API operations. + QList streamContents(const QString& stream_id); QVariantHash profile(const QNetworkProxy& network_proxy); QList tags(); RootItem* collections(bool obtain_icons); @@ -32,6 +33,9 @@ class FeedlyNetwork : public QObject { QString developerAccessToken() const; void setDeveloperAccessToken(const QString& dev_acc_token); + bool downloadOnlyUnreadMessages() const; + void setDownloadOnlyUnreadMessages(bool download_only_unread_messages); + int batchSize() const; void setBatchSize(int batch_size); @@ -51,11 +55,13 @@ class FeedlyNetwork : public QObject { enum class Service { Profile, Collections, - Tags + Tags, + StreamContents }; QString fullUrl(Service service) const; QString bearer() const; + QList decodeStreamContents(const QByteArray& stream_contents) const; RootItem* decodeCollections(const QByteArray& json, bool obtain_icons, const QNetworkProxy& proxy, int timeout = 0) const; QPair bearerHeader(const QString& bearer) const; @@ -69,6 +75,7 @@ class FeedlyNetwork : public QObject { QString m_username; QString m_developerAccessToken; int m_batchSize; + bool m_downloadOnlyUnreadMessages; }; #endif // FEEDLYNETWORK_H diff --git a/src/librssguard/services/feedly/feedlyserviceroot.cpp b/src/librssguard/services/feedly/feedlyserviceroot.cpp index 694da0ddb..748944947 100755 --- a/src/librssguard/services/feedly/feedlyserviceroot.cpp +++ b/src/librssguard/services/feedly/feedlyserviceroot.cpp @@ -3,6 +3,8 @@ #include "services/feedly/feedlyserviceroot.h" #include "definitions/definitions.h" +#include "exceptions/applicationexception.h" +#include "exceptions/networkexception.h" #include "miscellaneous/application.h" #include "miscellaneous/databasequeries.h" #include "miscellaneous/iconfactory.h" @@ -91,6 +93,7 @@ void FeedlyServiceRoot::saveAccountDataToDatabase(bool creating_new) { {}, #endif m_network->batchSize(), + m_network->downloadOnlyUnreadMessages(), accountId())) { updateTitle(); itemChanged(QList() << this); @@ -106,6 +109,7 @@ void FeedlyServiceRoot::saveAccountDataToDatabase(bool creating_new) { {}, #endif m_network->batchSize(), + m_network->downloadOnlyUnreadMessages(), accountId())) { updateTitle(); } @@ -113,14 +117,22 @@ void FeedlyServiceRoot::saveAccountDataToDatabase(bool creating_new) { } RootItem* FeedlyServiceRoot::obtainNewTreeForSyncIn() const { - auto tree = m_network->collections(true); - auto* lblroot = new LabelsNode(tree); - auto labels = m_network->tags(); + try { + auto tree = m_network->collections(true); + auto* lblroot = new LabelsNode(tree); + auto labels = m_network->tags(); - lblroot->setChildItems(labels); - tree->appendChild(lblroot); + lblroot->setChildItems(labels); + tree->appendChild(lblroot); - return tree; + return tree; + } + catch (const ApplicationException& ex) { + qCriticalNN << LOGSEC_FEEDLY + << "Failed to obtain new sync-in tree:" + << QUOTE_W_SPACE_DOT(ex.message()); + return nullptr; + } } void FeedlyServiceRoot::loadFromDatabase() { diff --git a/src/librssguard/services/feedly/gui/feedlyaccountdetails.cpp b/src/librssguard/services/feedly/gui/feedlyaccountdetails.cpp index 2b974dc6c..a5d6c51f9 100755 --- a/src/librssguard/services/feedly/gui/feedlyaccountdetails.cpp +++ b/src/librssguard/services/feedly/gui/feedlyaccountdetails.cpp @@ -65,11 +65,12 @@ FeedlyAccountDetails::FeedlyAccountDetails(QWidget* parent) : QWidget(parent) { m_ui.m_spinLimitMessages->setMinimum(FEEDLY_UNLIMITED_BATCH_SIZE); m_ui.m_spinLimitMessages->setMaximum(FEEDLY_MAX_BATCH_SIZE); - m_ui.m_spinLimitMessages->setValue(FEEDLY_UNLIMITED_BATCH_SIZE); + m_ui.m_spinLimitMessages->setValue(FEEDLY_DEFAULT_BATCH_SIZE); setTabOrder(m_ui.m_txtUsername->lineEdit(), m_ui.m_btnGetToken); setTabOrder(m_ui.m_btnGetToken, m_ui.m_txtDeveloperAccessToken->lineEdit()); - setTabOrder(m_ui.m_txtDeveloperAccessToken->lineEdit(), m_ui.m_spinLimitMessages); + setTabOrder(m_ui.m_txtDeveloperAccessToken->lineEdit(), m_ui.m_checkDownloadOnlyUnreadMessages); + setTabOrder(m_ui.m_checkDownloadOnlyUnreadMessages, m_ui.m_spinLimitMessages); setTabOrder(m_ui.m_spinLimitMessages, m_ui.m_btnTestSetup); onDeveloperAccessTokenChanged(); @@ -116,9 +117,9 @@ void FeedlyAccountDetails::onAuthGranted() { void FeedlyAccountDetails::performTest(const QNetworkProxy& custom_proxy) { #if defined (FEEDLY_OFFICIAL_SUPPORT) - if (m_ui.m_txtDeveloperAccessToken->lineEdit()->text().simplified().isEmpty()) { - m_oauth->logout(false); + m_oauth->logout(false); + if (m_ui.m_txtDeveloperAccessToken->lineEdit()->text().simplified().isEmpty()) { if (m_oauth->login()) { m_ui.m_lblTestResult->setStatus(WidgetWithStatus::StatusType::Ok, tr("You are already logged in."), diff --git a/src/librssguard/services/feedly/gui/feedlyaccountdetails.ui b/src/librssguard/services/feedly/gui/feedlyaccountdetails.ui index 04fb07ef4..9429ec630 100755 --- a/src/librssguard/services/feedly/gui/feedlyaccountdetails.ui +++ b/src/librssguard/services/feedly/gui/feedlyaccountdetails.ui @@ -52,8 +52,18 @@ - + + + + + Only download newest X messages per feed + + + m_spinLimitMessages + + + @@ -67,19 +77,9 @@ - - - - Only download newest X messages per feed - - - m_spinLimitMessages - - - - + Qt::Vertical @@ -92,7 +92,7 @@ - + @@ -110,6 +110,13 @@ + + + + Download only unread messages + + + diff --git a/src/librssguard/services/feedly/gui/formeditfeedlyaccount.cpp b/src/librssguard/services/feedly/gui/formeditfeedlyaccount.cpp index f4c9718a8..def54e2dd 100755 --- a/src/librssguard/services/feedly/gui/formeditfeedlyaccount.cpp +++ b/src/librssguard/services/feedly/gui/formeditfeedlyaccount.cpp @@ -44,6 +44,7 @@ void FormEditFeedlyAccount::apply() { #endif account()->network()->setUsername(m_details->m_ui.m_txtUsername->lineEdit()->text()); + account()->network()->setDownloadOnlyUnreadMessages(m_details->m_ui.m_checkDownloadOnlyUnreadMessages->isChecked()); account()->network()->setBatchSize(m_details->m_ui.m_spinLimitMessages->value()); account()->network()->setDeveloperAccessToken(m_details->m_ui.m_txtDeveloperAccessToken->lineEdit()->text()); @@ -72,6 +73,7 @@ void FormEditFeedlyAccount::setEditableAccount(ServiceRoot* editable_account) { m_details->m_ui.m_txtUsername->lineEdit()->setText(account()->network()->username()); m_details->m_ui.m_txtDeveloperAccessToken->lineEdit()->setText(account()->network()->developerAccessToken()); + m_details->m_ui.m_checkDownloadOnlyUnreadMessages->setChecked(account()->network()->downloadOnlyUnreadMessages()); m_details->m_ui.m_spinLimitMessages->setValue(account()->network()->batchSize()); }