From 1415da7d9678511cd44a8450fe3643bf22d4a53e Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Fri, 9 Apr 2021 10:30:30 +0200 Subject: [PATCH] download unread only for greader too --- .../services/greader/greadernetwork.cpp | 14 +++++++++++++- .../services/greader/greadernetwork.h | 4 ++++ .../services/greader/greaderserviceroot.cpp | 2 ++ .../greader/gui/formeditgreaderaccount.cpp | 2 ++ .../greader/gui/greaderaccountdetails.ui | 19 ++++++++++++++----- 5 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/librssguard/services/greader/greadernetwork.cpp b/src/librssguard/services/greader/greadernetwork.cpp index 44cab5e2b..31ca89567 100755 --- a/src/librssguard/services/greader/greadernetwork.cpp +++ b/src/librssguard/services/greader/greadernetwork.cpp @@ -17,7 +17,7 @@ GreaderNetwork::GreaderNetwork(QObject* parent) : QObject(parent), m_service(GreaderServiceRoot::Service::FreshRss), m_username(QString()), m_password(QString()), - m_baseUrl(QString()), m_batchSize(GREADER_DEFAULT_BATCH_SIZE) { + m_baseUrl(QString()), m_batchSize(GREADER_DEFAULT_BATCH_SIZE), m_downloadOnlyUnreadMessages(false) { clearCredentials(); } @@ -117,6 +117,10 @@ QList GreaderNetwork::streamContents(ServiceRoot* root, const QString& return {}; } + if (downloadOnlyUnreadMessages()) { + full_url += QSL("&xt=%1").arg(GREADER_API_FULL_STATE_READ); + } + QByteArray output_stream; auto result_stream = NetworkFactory::performNetworkOperation(full_url, timeout, @@ -617,3 +621,11 @@ QString GreaderNetwork::generateFullUrl(GreaderNetwork::Operations operation) co return sanitizedBaseUrl(); } } + +bool GreaderNetwork::downloadOnlyUnreadMessages() const { + return m_downloadOnlyUnreadMessages; +} + +void GreaderNetwork::setDownloadOnlyUnreadMessages(bool download_only_unread) { + m_downloadOnlyUnreadMessages = download_only_unread; +} diff --git a/src/librssguard/services/greader/greadernetwork.h b/src/librssguard/services/greader/greadernetwork.h index df81ba4ee..0b09ea4df 100755 --- a/src/librssguard/services/greader/greadernetwork.h +++ b/src/librssguard/services/greader/greadernetwork.h @@ -65,6 +65,9 @@ class GreaderNetwork : public QObject { static QString serviceToString(GreaderServiceRoot::Service service); + bool downloadOnlyUnreadMessages() const; + void setDownloadOnlyUnreadMessages(bool download_only_unread); + private: QPair authHeader() const; @@ -83,6 +86,7 @@ class GreaderNetwork : public QObject { QString m_password; QString m_baseUrl; int m_batchSize; + bool m_downloadOnlyUnreadMessages; QString m_authSid; QString m_authAuth; QString m_authToken; diff --git a/src/librssguard/services/greader/greaderserviceroot.cpp b/src/librssguard/services/greader/greaderserviceroot.cpp index b0367c6cc..ea7d0ad05 100755 --- a/src/librssguard/services/greader/greaderserviceroot.cpp +++ b/src/librssguard/services/greader/greaderserviceroot.cpp @@ -42,6 +42,7 @@ QVariantHash GreaderServiceRoot::customDatabaseData() const { data["password"] = TextFactory::encrypt(m_network->password()); data["url"] = m_network->baseUrl(); data["batch_size"] = m_network->batchSize(); + data["download_only_unread"] = m_network->downloadOnlyUnreadMessages(); return data; } @@ -52,6 +53,7 @@ void GreaderServiceRoot::setCustomDatabaseData(const QVariantHash& data) { m_network->setPassword(TextFactory::decrypt(data["password"].toString())); m_network->setBaseUrl(data["url"].toString()); m_network->setBatchSize(data["batch_size"].toInt()); + m_network->setDownloadOnlyUnreadMessages(data["download_only_unread"].toBool()); } QList GreaderServiceRoot::obtainNewMessages(const QList& feeds, bool* error_during_obtaining) { diff --git a/src/librssguard/services/greader/gui/formeditgreaderaccount.cpp b/src/librssguard/services/greader/gui/formeditgreaderaccount.cpp index 801095805..a1141a7c6 100755 --- a/src/librssguard/services/greader/gui/formeditgreaderaccount.cpp +++ b/src/librssguard/services/greader/gui/formeditgreaderaccount.cpp @@ -27,6 +27,7 @@ void FormEditGreaderAccount::apply() { account()->network()->setUsername(m_details->m_ui.m_txtUsername->lineEdit()->text()); account()->network()->setPassword(m_details->m_ui.m_txtPassword->lineEdit()->text()); account()->network()->setBatchSize(m_details->m_ui.m_spinLimitMessages->value()); + account()->network()->setDownloadOnlyUnreadMessages(m_details->m_ui.m_cbDownloadOnlyUnreadMessages->isChecked()); account()->network()->setService(m_details->service()); account()->saveAccountDataToDatabase(); @@ -48,6 +49,7 @@ void FormEditGreaderAccount::loadAccountData() { m_details->m_ui.m_txtPassword->lineEdit()->setText(existing_root->network()->password()); m_details->m_ui.m_txtUrl->lineEdit()->setText(existing_root->network()->baseUrl()); m_details->m_ui.m_spinLimitMessages->setValue(existing_root->network()->batchSize()); + m_details->m_ui.m_cbDownloadOnlyUnreadMessages->setChecked(existing_root->network()->downloadOnlyUnreadMessages()); } void FormEditGreaderAccount::performTest() { diff --git a/src/librssguard/services/greader/gui/greaderaccountdetails.ui b/src/librssguard/services/greader/gui/greaderaccountdetails.ui index 7b8843d76..8cf1b842c 100755 --- a/src/librssguard/services/greader/gui/greaderaccountdetails.ui +++ b/src/librssguard/services/greader/gui/greaderaccountdetails.ui @@ -34,7 +34,7 @@ - + @@ -51,7 +51,7 @@ - + @@ -61,7 +61,7 @@ - + Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported. @@ -112,7 +112,7 @@ - + @@ -136,7 +136,7 @@ - + Qt::Vertical @@ -149,6 +149,13 @@ + + + + Download only unread messages + + + @@ -171,9 +178,11 @@ + m_cbDownloadOnlyUnreadMessages m_spinLimitMessages m_checkShowPassword m_btnTestSetup + m_cmbService