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/src/librssguard/services/gmail/gmailnetworkfactory.cpp b/src/librssguard/services/gmail/gmailnetworkfactory.cpp index 3621d3184..a85429879 100755 --- a/src/librssguard/services/gmail/gmailnetworkfactory.cpp +++ b/src/librssguard/services/gmail/gmailnetworkfactory.cpp @@ -26,6 +26,7 @@ GmailNetworkFactory::GmailNetworkFactory(QObject* parent) : QObject(parent), m_service(nullptr), m_username(QString()), m_batchSize(GMAIL_DEFAULT_BATCH_SIZE), + m_downloadOnlyUnreadMessages(false), m_oauth2(new OAuth2Service(GMAIL_OAUTH_AUTH_URL, GMAIL_OAUTH_TOKEN_URL, {}, {}, GMAIL_OAUTH_SCOPE, this)) { initializeOauth(); @@ -140,6 +141,14 @@ void GmailNetworkFactory::initializeOauth() { }); } +bool GmailNetworkFactory::downloadOnlyUnreadMessages() const { + return m_downloadOnlyUnreadMessages; +} + +void GmailNetworkFactory::setDownloadOnlyUnreadMessages(bool download_only_unread_messages) { + m_downloadOnlyUnreadMessages = download_only_unread_messages; +} + void GmailNetworkFactory::setOauth(OAuth2Service* oauth) { m_oauth2 = oauth; } @@ -191,6 +200,10 @@ QList GmailNetworkFactory::messages(const QString& stream_id, target_url = GMAIL_API_MSGS_LIST; target_url += QString("?labelIds=%1").arg(stream_id); + if (downloadOnlyUnreadMessages()) { + target_url += QString("?labelIds=%1").arg(GMAIL_SYSTEM_LABEL_UNREAD); + } + if (batchSize() > 0) { target_url += QString("&maxResults=%1").arg(batchSize()); } diff --git a/src/librssguard/services/gmail/gmailnetworkfactory.h b/src/librssguard/services/gmail/gmailnetworkfactory.h index 38737a1dc..90d1e9038 100755 --- a/src/librssguard/services/gmail/gmailnetworkfactory.h +++ b/src/librssguard/services/gmail/gmailnetworkfactory.h @@ -32,10 +32,12 @@ class GmailNetworkFactory : public QObject { QString username() const; void setUsername(const QString& username); - // Gets/sets the amount of messages to obtain during single feed update. int batchSize() const; void setBatchSize(int batch_size); + bool downloadOnlyUnreadMessages() const; + void setDownloadOnlyUnreadMessages(bool download_only_unread_messages); + // API methods. QString sendEmail(Mimesis::Message msg, const QNetworkProxy& custom_proxy, Message* reply_to_message = nullptr); Downloader* downloadAttachment(const QString& msg_id, const QString& attachment_id, const QNetworkProxy& custom_proxy); @@ -67,6 +69,7 @@ class GmailNetworkFactory : public QObject { GmailServiceRoot* m_service; QString m_username; int m_batchSize; + bool m_downloadOnlyUnreadMessages; OAuth2Service* m_oauth2; }; diff --git a/src/librssguard/services/gmail/gmailserviceroot.cpp b/src/librssguard/services/gmail/gmailserviceroot.cpp index b7b8e44a0..b1acd63d3 100644 --- a/src/librssguard/services/gmail/gmailserviceroot.cpp +++ b/src/librssguard/services/gmail/gmailserviceroot.cpp @@ -54,6 +54,7 @@ QVariantHash GmailServiceRoot::customDatabaseData() const { data["username"] = m_network->username(); data["batch_size"] = m_network->batchSize(); + data["download_only_unread"] = m_network->downloadOnlyUnreadMessages(); data["client_id"] = m_network->oauth()->clientId(); data["client_secret"] = m_network->oauth()->clientSecret(); data["refresh_token"] = m_network->oauth()->refreshToken(); @@ -65,6 +66,7 @@ QVariantHash GmailServiceRoot::customDatabaseData() const { void GmailServiceRoot::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()); diff --git a/src/librssguard/services/gmail/gui/formeditgmailaccount.cpp b/src/librssguard/services/gmail/gui/formeditgmailaccount.cpp index c80660eec..db2d55007 100644 --- a/src/librssguard/services/gmail/gui/formeditgmailaccount.cpp +++ b/src/librssguard/services/gmail/gui/formeditgmailaccount.cpp @@ -30,6 +30,7 @@ void FormEditGmailAccount::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(); @@ -53,4 +54,5 @@ void FormEditGmailAccount::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/gmail/gui/gmailaccountdetails.ui b/src/librssguard/services/gmail/gui/gmailaccountdetails.ui index 9203c80fc..3ef0f0112 100644 --- a/src/librssguard/services/gmail/gui/gmailaccountdetails.ui +++ b/src/librssguard/services/gmail/gui/gmailaccountdetails.ui @@ -115,7 +115,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -160,7 +160,7 @@ - + Qt::Vertical @@ -173,6 +173,13 @@ + + + + Download only unread messages + + + @@ -189,6 +196,12 @@ 1 + + m_btnRegisterApi + m_cbDownloadOnlyUnreadMessages + m_spinLimitMessages + m_btnTestSetup +