From e5e12c30c906d53ab0bb6f77c7ce6d2ad983d5b8 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Wed, 27 Sep 2017 07:49:31 +0200 Subject: [PATCH] Bound batch size. --- resources/binaries | 2 +- src/miscellaneous/databasequeries.cpp | 5 +++-- src/services/inoreader/definitions.h | 3 ++- .../inoreader/gui/formeditinoreaderaccount.cpp | 11 ++--------- .../inoreader/gui/formeditinoreaderaccount.ui | 11 +---------- .../network/inoreadernetworkfactory.cpp | 18 +++++++++++++++++- 6 files changed, 26 insertions(+), 24 deletions(-) diff --git a/resources/binaries b/resources/binaries index d44aacc99..e9833a2e4 160000 --- a/resources/binaries +++ b/resources/binaries @@ -1 +1 @@ -Subproject commit d44aacc99fdc997648c924f0d5444566164f142e +Subproject commit e9833a2e45d8d3241f662d3a03ed19d3446386ce diff --git a/src/miscellaneous/databasequeries.cpp b/src/miscellaneous/databasequeries.cpp index 1f08e20df..5dd826df4 100755 --- a/src/miscellaneous/databasequeries.cpp +++ b/src/miscellaneous/databasequeries.cpp @@ -22,6 +22,7 @@ #include "miscellaneous/iconfactory.h" #include "miscellaneous/textfactory.h" #include "services/abstract/category.h" +#include "services/inoreader/definitions.h" #include "services/owncloud/definitions.h" #include "services/owncloud/network/owncloudnetworkfactory.h" #include "services/owncloud/owncloudfeed.h" @@ -1585,7 +1586,7 @@ bool DatabaseQueries::overwriteInoreaderAccount(QSqlDatabase db, const QString& query.bindValue(QSL(":access_token"), access_token); query.bindValue(QSL(":refresh_token"), refresh_token); query.bindValue(QSL(":id"), account_id); - query.bindValue(QSL(":msg_limit"), batch_size <= 0 ? UNLIMITED_BATCH_SIZE : batch_size); + query.bindValue(QSL(":msg_limit"), batch_size <= 0 ? INOREADER_DEFAULT_BATCH_SIZE : batch_size); if (query.exec()) { return true; @@ -1606,7 +1607,7 @@ bool DatabaseQueries::createInoreaderAccount(QSqlDatabase db, int id_to_assign, q.bindValue(QSL(":username"), username); q.bindValue(QSL(":access_token"), access_token); q.bindValue(QSL(":refresh_token"), refresh_token); - q.bindValue(QSL(":msg_limit"), batch_size <= 0 ? UNLIMITED_BATCH_SIZE : batch_size); + q.bindValue(QSL(":msg_limit"), batch_size <= 0 ? INOREADER_DEFAULT_BATCH_SIZE : batch_size); if (q.exec()) { return true; diff --git a/src/services/inoreader/definitions.h b/src/services/inoreader/definitions.h index 2cd708e93..d75232d92 100755 --- a/src/services/inoreader/definitions.h +++ b/src/services/inoreader/definitions.h @@ -27,7 +27,8 @@ #define INOREADER_REFRESH_TOKEN_KEY "refresh_token" #define INOREADER_ACCESS_TOKEN_KEY "access_token" #define INOREADER_DEFAULT_BATCH_SIZE 100 -#define INOREADER_UNLIMITED_BATCH_SIZE -1 +#define INOREADER_MAX_BATCH_SIZE 999 +#define INOREADER_MIN_BATCH_SIZE 20 #define INOREADER_API_FEED_CONTENTS "https://www.inoreader.com/reader/api/0/stream/contents" #define INOREADER_API_LIST_LABELS "https://www.inoreader.com/reader/api/0/tag/list" diff --git a/src/services/inoreader/gui/formeditinoreaderaccount.cpp b/src/services/inoreader/gui/formeditinoreaderaccount.cpp index 2a72561b0..99e36ca0d 100755 --- a/src/services/inoreader/gui/formeditinoreaderaccount.cpp +++ b/src/services/inoreader/gui/formeditinoreaderaccount.cpp @@ -39,21 +39,14 @@ FormEditInoreaderAccount::FormEditInoreaderAccount(QWidget* parent) : QDialog(pa setTabOrder(m_ui.m_spinLimitMessages, m_ui.m_btnTestSetup); setTabOrder(m_ui.m_btnTestSetup, m_ui.m_buttonBox); - connect(m_ui.m_spinLimitMessages, static_cast(&QSpinBox::valueChanged), [=](int value) { - if (value <= 0) { - m_ui.m_spinLimitMessages->setSuffix(QSL(" ") + tr("= unlimited")); - } - else { - m_ui.m_spinLimitMessages->setSuffix(QSL(" ") + tr("messages")); - } - }); connect(m_ui.m_txtUsername->lineEdit(), &BaseLineEdit::textChanged, this, &FormEditInoreaderAccount::checkUsername); connect(m_ui.m_btnTestSetup, &QPushButton::clicked, this, &FormEditInoreaderAccount::testSetup); connect(m_ui.m_buttonBox, &QDialogButtonBox::accepted, this, &FormEditInoreaderAccount::onClickedOk); connect(m_ui.m_buttonBox, &QDialogButtonBox::rejected, this, &FormEditInoreaderAccount::onClickedCancel); m_ui.m_spinLimitMessages->setValue(INOREADER_DEFAULT_BATCH_SIZE); - m_ui.m_spinLimitMessages->setMinimum(INOREADER_UNLIMITED_BATCH_SIZE); + m_ui.m_spinLimitMessages->setMinimum(INOREADER_MIN_BATCH_SIZE); + m_ui.m_spinLimitMessages->setMaximum(INOREADER_MAX_BATCH_SIZE); checkUsername(m_ui.m_txtUsername->lineEdit()->text()); } diff --git a/src/services/inoreader/gui/formeditinoreaderaccount.ui b/src/services/inoreader/gui/formeditinoreaderaccount.ui index 0c2fbf93f..a08bb1cb3 100755 --- a/src/services/inoreader/gui/formeditinoreaderaccount.ui +++ b/src/services/inoreader/gui/formeditinoreaderaccount.ui @@ -39,16 +39,7 @@ - = unlimited - - - -1 - - - 1000 - - - -1 + message(s) diff --git a/src/services/inoreader/network/inoreadernetworkfactory.cpp b/src/services/inoreader/network/inoreadernetworkfactory.cpp index 6936fd26e..3503ea142 100755 --- a/src/services/inoreader/network/inoreadernetworkfactory.cpp +++ b/src/services/inoreader/network/inoreadernetworkfactory.cpp @@ -101,7 +101,23 @@ RootItem* InoreaderNetworkFactory::feedsCategories(bool obtain_icons) { return decodeFeedCategoriesData(category_data, feed_data, obtain_icons); } -QList InoreaderNetworkFactory::messages(const QString& stream_id, bool* is_error) {} +QList InoreaderNetworkFactory::messages(const QString& stream_id, bool* is_error) { + QList messages; + Downloader downloader; + QEventLoop loop; + QString target_url = INOREADER_API_FEED_CONTENTS; + + target_url += QSL("/") + QUrl::toPercentEncoding(stream_id) + QString("/?n=").arg(batchSize()); + + downloader.appendRawHeader(QString("Authorization").toLocal8Bit(), m_oauth2->bearer().toLocal8Bit()); + + // We need to quit event loop when the download finishes. + connect(&downloader, &Downloader::completed, &loop, &QEventLoop::quit); + downloader.manipulateData(INOREADER_API_FEED_CONTENTS, QNetworkAccessManager::Operation::GetOperation); + loop.exec(); + + return messages; +} RootItem* InoreaderNetworkFactory::decodeFeedCategoriesData(const QString& categories, const QString& feeds, bool obtain_icons) { RootItem* parent = new RootItem();