From b1d394b6e56656aafa794f50d56b37fb48666bc7 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Fri, 9 Apr 2021 13:27:00 +0200 Subject: [PATCH] download unread only for inoreader too --- .../services/greader/gui/greaderaccountdetails.cpp | 3 ++- .../inoreader/gui/formeditinoreaderaccount.cpp | 2 ++ .../inoreader/gui/inoreaderaccountdetails.cpp | 4 +++- .../inoreader/gui/inoreaderaccountdetails.ui | 13 ++++++++++--- .../services/inoreader/inoreadernetworkfactory.cpp | 14 +++++++++++++- .../services/inoreader/inoreadernetworkfactory.h | 4 ++++ .../services/inoreader/inoreaderserviceroot.cpp | 4 +++- 7 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/librssguard/services/greader/gui/greaderaccountdetails.cpp b/src/librssguard/services/greader/gui/greaderaccountdetails.cpp index e0b4d56d3..a12ad7037 100755 --- a/src/librssguard/services/greader/gui/greaderaccountdetails.cpp +++ b/src/librssguard/services/greader/gui/greaderaccountdetails.cpp @@ -40,7 +40,8 @@ GreaderAccountDetails::GreaderAccountDetails(QWidget* parent) : QWidget(parent) connect(m_ui.m_cmbService, QOverload::of(&QComboBox::currentIndexChanged), this, &GreaderAccountDetails::fillPredefinedUrl); setTabOrder(m_ui.m_cmbService, m_ui.m_txtUrl->lineEdit()); - setTabOrder(m_ui.m_txtUrl->lineEdit(), m_ui.m_spinLimitMessages); + setTabOrder(m_ui.m_txtUrl->lineEdit(), m_ui.m_cbDownloadOnlyUnreadMessages); + setTabOrder(m_ui.m_cbDownloadOnlyUnreadMessages, m_ui.m_spinLimitMessages); setTabOrder(m_ui.m_spinLimitMessages, m_ui.m_txtUsername->lineEdit()); setTabOrder(m_ui.m_txtUsername->lineEdit(), m_ui.m_txtPassword->lineEdit()); setTabOrder(m_ui.m_txtPassword->lineEdit(), m_ui.m_checkShowPassword); diff --git a/src/librssguard/services/inoreader/gui/formeditinoreaderaccount.cpp b/src/librssguard/services/inoreader/gui/formeditinoreaderaccount.cpp index ff38b4efa..81179166b 100644 --- a/src/librssguard/services/inoreader/gui/formeditinoreaderaccount.cpp +++ b/src/librssguard/services/inoreader/gui/formeditinoreaderaccount.cpp @@ -32,6 +32,7 @@ void FormEditInoreaderAccount::apply() { account()->network()->setUsername(m_details->m_ui.m_txtUsername->lineEdit()->text()); account()->network()->setBatchSize(m_details->m_ui.m_spinLimitMessages->value()); + account()->network()->setDownloadOnlyUnreadMessages(m_details->m_ui.m_cbDownloadOnlyUnreadMessages->isChecked()); account()->saveAccountDataToDatabase(); accept(); @@ -55,4 +56,5 @@ void FormEditInoreaderAccount::loadAccountData() { m_details->m_ui.m_txtUsername->lineEdit()->setText(account()->network()->username()); m_details->m_ui.m_spinLimitMessages->setValue(account()->network()->batchSize()); + m_details->m_ui.m_cbDownloadOnlyUnreadMessages->setChecked(account()->network()->downloadOnlyUnreadMessages()); } diff --git a/src/librssguard/services/inoreader/gui/inoreaderaccountdetails.cpp b/src/librssguard/services/inoreader/gui/inoreaderaccountdetails.cpp index 4704978a7..c4d725c7d 100755 --- a/src/librssguard/services/inoreader/gui/inoreaderaccountdetails.cpp +++ b/src/librssguard/services/inoreader/gui/inoreaderaccountdetails.cpp @@ -34,7 +34,9 @@ InoreaderAccountDetails::InoreaderAccountDetails(QWidget* parent) setTabOrder(m_ui.m_txtUsername->lineEdit(), m_ui.m_txtAppId); setTabOrder(m_ui.m_txtAppId, m_ui.m_txtAppKey); setTabOrder(m_ui.m_txtAppKey, m_ui.m_txtRedirectUrl); - setTabOrder(m_ui.m_txtRedirectUrl, m_ui.m_spinLimitMessages); + setTabOrder(m_ui.m_txtRedirectUrl, m_ui.m_btnRegisterApi); + setTabOrder(m_ui.m_btnRegisterApi, m_ui.m_cbDownloadOnlyUnreadMessages); + setTabOrder(m_ui.m_cbDownloadOnlyUnreadMessages, m_ui.m_spinLimitMessages); setTabOrder(m_ui.m_spinLimitMessages, m_ui.m_btnTestSetup); connect(m_ui.m_txtAppId->lineEdit(), &BaseLineEdit::textChanged, this, &InoreaderAccountDetails::checkOAuthValue); diff --git a/src/librssguard/services/inoreader/gui/inoreaderaccountdetails.ui b/src/librssguard/services/inoreader/gui/inoreaderaccountdetails.ui index 2bdca0600..578bd0e48 100755 --- a/src/librssguard/services/inoreader/gui/inoreaderaccountdetails.ui +++ b/src/librssguard/services/inoreader/gui/inoreaderaccountdetails.ui @@ -115,7 +115,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -160,7 +160,7 @@ - + Qt::Vertical @@ -173,6 +173,13 @@ + + + + Download only unread messages + + + diff --git a/src/librssguard/services/inoreader/inoreadernetworkfactory.cpp b/src/librssguard/services/inoreader/inoreadernetworkfactory.cpp index 5d7bbda1c..8af17f6bd 100755 --- a/src/librssguard/services/inoreader/inoreadernetworkfactory.cpp +++ b/src/librssguard/services/inoreader/inoreadernetworkfactory.cpp @@ -25,7 +25,7 @@ #include InoreaderNetworkFactory::InoreaderNetworkFactory(QObject* parent) : QObject(parent), - m_service(nullptr), m_username(QString()), m_batchSize(INOREADER_DEFAULT_BATCH_SIZE), + m_service(nullptr), m_username(QString()), m_downloadOnlyUnreadMessages(false), m_batchSize(INOREADER_DEFAULT_BATCH_SIZE), m_oauth2(new OAuth2Service(INOREADER_OAUTH_AUTH_URL, INOREADER_OAUTH_TOKEN_URL, {}, {}, INOREADER_OAUTH_SCOPE, this)) { initializeOauth(); @@ -75,6 +75,14 @@ void InoreaderNetworkFactory::initializeOauth() { }); } +bool InoreaderNetworkFactory::downloadOnlyUnreadMessages() const { + return m_downloadOnlyUnreadMessages; +} + +void InoreaderNetworkFactory::setDownloadOnlyUnreadMessages(bool download_only_unread) { + m_downloadOnlyUnreadMessages = download_only_unread; +} + void InoreaderNetworkFactory::setUsername(const QString& username) { m_username = username; } @@ -177,6 +185,10 @@ QList InoreaderNetworkFactory::messages(ServiceRoot* root, const QStrin target_url += QSL("/") + QUrl::toPercentEncoding(stream_id) + QString("?n=%1").arg(batchSize()); + if (downloadOnlyUnreadMessages()) { + target_url += QSL("&xt=%1").arg(INOREADER_FULL_STATE_READ); + } + QByteArray output_msgs; auto result = NetworkFactory::performNetworkOperation(target_url, qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt(), diff --git a/src/librssguard/services/inoreader/inoreadernetworkfactory.h b/src/librssguard/services/inoreader/inoreadernetworkfactory.h index 7ebb86fc3..580c66350 100755 --- a/src/librssguard/services/inoreader/inoreadernetworkfactory.h +++ b/src/librssguard/services/inoreader/inoreadernetworkfactory.h @@ -45,6 +45,9 @@ class InoreaderNetworkFactory : public QObject { QNetworkReply::NetworkError markMessagesRead(RootItem::ReadStatus status, const QStringList& msg_custom_ids); QNetworkReply::NetworkError markMessagesStarred(RootItem::Importance importance, const QStringList& msg_custom_ids); + bool downloadOnlyUnreadMessages() const; + void setDownloadOnlyUnreadMessages(bool download_only_unread); + private slots: void onTokensError(const QString& error, const QString& error_description); void onAuthFailed(); @@ -58,6 +61,7 @@ class InoreaderNetworkFactory : public QObject { private: InoreaderServiceRoot* m_service; QString m_username; + bool m_downloadOnlyUnreadMessages; int m_batchSize; OAuth2Service* m_oauth2; }; diff --git a/src/librssguard/services/inoreader/inoreaderserviceroot.cpp b/src/librssguard/services/inoreader/inoreaderserviceroot.cpp index 275bfb2cf..d5f21a2d8 100644 --- a/src/librssguard/services/inoreader/inoreaderserviceroot.cpp +++ b/src/librssguard/services/inoreader/inoreaderserviceroot.cpp @@ -2,8 +2,8 @@ #include "services/inoreader/inoreaderserviceroot.h" -#include "miscellaneous/application.h" #include "database/databasequeries.h" +#include "miscellaneous/application.h" #include "miscellaneous/iconfactory.h" #include "network-web/oauth2service.h" #include "services/abstract/importantnode.h" @@ -35,6 +35,7 @@ QVariantHash InoreaderServiceRoot::customDatabaseData() const { QVariantHash data; data["username"] = m_network->username(); + data["download_only_unread"] = m_network->downloadOnlyUnreadMessages(); data["batch_size"] = m_network->batchSize(); data["client_id"] = m_network->oauth()->clientId(); data["client_secret"] = m_network->oauth()->clientSecret(); @@ -47,6 +48,7 @@ QVariantHash InoreaderServiceRoot::customDatabaseData() const { void InoreaderServiceRoot::setCustomDatabaseData(const QVariantHash& data) { m_network->setUsername(data["username"].toString()); m_network->setBatchSize(data["batch_size"].toInt()); + m_network->setDownloadOnlyUnreadMessages(data["download_only_unread"].toBool()); m_network->oauth()->setClientId(data["client_id"].toString()); m_network->oauth()->setClientSecret(data["client_secret"].toString()); m_network->oauth()->setRefreshToken(data["refresh_token"].toString());