diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml
index 303260415..b043f7602 100644
--- a/resources/desktop/com.github.rssguard.appdata.xml
+++ b/resources/desktop/com.github.rssguard.appdata.xml
@@ -30,7 +30,7 @@
https://martinrotter.github.io/donate/
-
+
none
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/database/databasequeries.cpp b/src/librssguard/database/databasequeries.cpp
index 4dc8d3a95..310292bca 100755
--- a/src/librssguard/database/databasequeries.cpp
+++ b/src/librssguard/database/databasequeries.cpp
@@ -2002,7 +2002,7 @@ void DatabaseQueries::removeMessageFilterFromFeed(const QSqlDatabase& db, const
}
}
-QStringList DatabaseQueries::getAllRecipients(const QSqlDatabase& db, int account_id) {
+QStringList DatabaseQueries::getAllGmailRecipients(const QSqlDatabase& db, int account_id) {
QSqlQuery query(db);
QStringList rec;
diff --git a/src/librssguard/database/databasequeries.h b/src/librssguard/database/databasequeries.h
index d02e71982..955c32f25 100644
--- a/src/librssguard/database/databasequeries.h
+++ b/src/librssguard/database/databasequeries.h
@@ -139,7 +139,7 @@ class DatabaseQueries {
int account_id, bool* ok = nullptr);
// Gmail account.
- static QStringList getAllRecipients(const QSqlDatabase& db, int account_id);
+ static QStringList getAllGmailRecipients(const QSqlDatabase& db, int account_id);
private:
static QString unnulifyString(const QString& str);
diff --git a/src/librssguard/services/abstract/accountcheckmodel.cpp b/src/librssguard/services/abstract/accountcheckmodel.cpp
index 736aff3fd..6266c14ef 100644
--- a/src/librssguard/services/abstract/accountcheckmodel.cpp
+++ b/src/librssguard/services/abstract/accountcheckmodel.cpp
@@ -234,9 +234,9 @@ bool AccountCheckModel::setData(const QModelIndex& index, const QVariant& value,
// Check children of this new parent item.
bool all_checked = true;
bool all_unchecked = true;
- auto chi = item->childItems();
+ auto childr = item->childItems();
- for (RootItem* child_of_parent : qAsConst(chi)) {
+ for (RootItem* child_of_parent : qAsConst(childr)) {
if (m_checkStates.contains(child_of_parent)) {
all_checked &= m_checkStates[child_of_parent] == Qt::CheckState::Checked;
all_unchecked &= m_checkStates[child_of_parent] == Qt::CheckState::Unchecked;
diff --git a/src/librssguard/services/gmail/gmailnetworkfactory.cpp b/src/librssguard/services/gmail/gmailnetworkfactory.cpp
index add256255..3621d3184 100755
--- a/src/librssguard/services/gmail/gmailnetworkfactory.cpp
+++ b/src/librssguard/services/gmail/gmailnetworkfactory.cpp
@@ -391,8 +391,9 @@ void GmailNetworkFactory::onAuthFailed() {
bool GmailNetworkFactory::fillFullMessage(Message& msg, const QJsonObject& json, const QString& feed_id) {
QHash headers;
+ auto json_headers = json["payload"].toObject()["headers"].toArray();
- for (const QJsonValue& header : json["payload"].toObject()["headers"].toArray()) {
+ for (const QJsonValue& header : qAsConst(json_headers)) {
headers.insert(header.toObject()["name"].toString(), header.toObject()["value"].toString());
}
@@ -400,7 +401,9 @@ bool GmailNetworkFactory::fillFullMessage(Message& msg, const QJsonObject& json,
msg.m_rawContents = QJsonDocument(json).toJson(QJsonDocument::JsonFormat::Compact);
// Assign correct main labels/states.
- for (const QVariant& label : json["labelIds"].toArray().toVariantList()) {
+ auto labelids = json["labelIds"].toArray().toVariantList();
+
+ for (const QVariant& label : qAsConst(labelids)) {
QString lbl = label.toString();
if (lbl == QL1S(GMAIL_SYSTEM_LABEL_UNREAD)) {
@@ -569,8 +572,7 @@ bool GmailNetworkFactory::obtainAndDecodeFullMessages(QList& messages,
if (res.first == QNetworkReply::NetworkError::NoError) {
// We parse each part of HTTP response (it contains HTTP headers and payload with msg full data).
- for (const HttpResponse& part : output) {
- auto xx = part.body();
+ for (const HttpResponse& part : qAsConst(output)) {
QJsonObject msg_doc = QJsonDocument::fromJson(part.body().toUtf8()).object();
QString msg_id = msg_doc["id"].toString();
diff --git a/src/librssguard/services/gmail/gmailserviceroot.cpp b/src/librssguard/services/gmail/gmailserviceroot.cpp
index e34ab7a8d..b7b8e44a0 100644
--- a/src/librssguard/services/gmail/gmailserviceroot.cpp
+++ b/src/librssguard/services/gmail/gmailserviceroot.cpp
@@ -2,8 +2,8 @@
#include "services/gmail/gmailserviceroot.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"
@@ -171,7 +171,9 @@ void GmailServiceRoot::start(bool freshly_activated) {
syncIn();
}
- for (RootItem* feed : childItems()) {
+ auto chi = childItems();
+
+ for (RootItem* feed : qAsConst(chi)) {
if (feed->customId() == QL1S("INBOX")) {
feed->setKeepOnTop(true);
}
diff --git a/src/librssguard/services/gmail/gui/formaddeditemail.cpp b/src/librssguard/services/gmail/gui/formaddeditemail.cpp
index f56a8ae58..c55c3f455 100644
--- a/src/librssguard/services/gmail/gui/formaddeditemail.cpp
+++ b/src/librssguard/services/gmail/gui/formaddeditemail.cpp
@@ -3,11 +3,11 @@
#include "services/gmail/gui/formaddeditemail.h"
#include "3rd-party/mimesis/mimesis.hpp"
+#include "database/databasequeries.h"
#include "exceptions/applicationexception.h"
#include "gui/guiutilities.h"
#include "gui/messagebox.h"
#include "miscellaneous/application.h"
-#include "database/databasequeries.h"
#include "miscellaneous/iconfactory.h"
#include "services/gmail/gmailnetworkfactory.h"
#include "services/gmail/gmailserviceroot.h"
@@ -38,11 +38,12 @@ FormAddEditEmail::FormAddEditEmail(GmailServiceRoot* root, QWidget* parent)
this,
&FormAddEditEmail::onOkClicked);
- QSqlDatabase db = qApp->database()->driver()->connection(metaObject()->className());
+ QSqlDatabase db = qApp->database()->driver()->connection(QSL("FormAddEditEmail"));
- m_possibleRecipients = DatabaseQueries::getAllRecipients(db, m_root->accountId());
+ m_possibleRecipients = DatabaseQueries::getAllGmailRecipients(db, m_root->accountId());
+ auto ctrls = recipientControls();
- for (auto* rec: recipientControls()) {
+ for (auto* rec: qAsConst(ctrls)) {
rec->setPossibleRecipients(m_possibleRecipients);
}
}
diff --git a/src/librssguard/services/greader/greadernetwork.cpp b/src/librssguard/services/greader/greadernetwork.cpp
index dd1b49d85..44cab5e2b 100755
--- a/src/librssguard/services/greader/greadernetwork.cpp
+++ b/src/librssguard/services/greader/greadernetwork.cpp
@@ -35,7 +35,6 @@ QNetworkReply::NetworkError GreaderNetwork::editLabels(const QString& state,
}
QStringList trimmed_ids;
- QRegularExpression regex_short_id(QSL("[0-9a-zA-Z]+$"));
for (const QString& id : msg_custom_ids) {
trimmed_ids.append(QString("i=") + id);
@@ -202,10 +201,11 @@ RootItem* GreaderNetwork::decodeTagsSubscriptions(const QString& categories, con
// We need to process subscription list first and extract categories.
json = QJsonDocument::fromJson(feeds.toUtf8()).object()["subscriptions"].toArray();
- for (const QJsonValue& feed : json) {
+ for (const QJsonValue& feed : qAsConst(json)) {
auto subscription = feed.toObject();
+ auto json_cats = subscription["categories"].toArray();
- for (const QJsonValue& cat : subscription["categories"].toArray()) {
+ for (const QJsonValue& cat : qAsConst(json_cats)) {
auto cat_obj = cat.toObject();
auto cat_id = cat_obj["id"].toString();
@@ -225,7 +225,7 @@ RootItem* GreaderNetwork::decodeTagsSubscriptions(const QString& categories, con
json = QJsonDocument::fromJson(categories.toUtf8()).object()["tags"].toArray();
cats.insert(QString(), parent);
- for (const QJsonValue& obj : json) {
+ for (const QJsonValue& obj : qAsConst(json)) {
auto label = obj.toObject();
QString label_id = label["id"].toString();
@@ -266,7 +266,7 @@ RootItem* GreaderNetwork::decodeTagsSubscriptions(const QString& categories, con
json = QJsonDocument::fromJson(feeds.toUtf8()).object()["subscriptions"].toArray();
- for (const QJsonValue& obj : json) {
+ for (const QJsonValue& obj : qAsConst(json)) {
auto subscription = obj.toObject();
QString id = subscription["id"].toString();
QString title = subscription["title"].toString();
@@ -278,7 +278,7 @@ RootItem* GreaderNetwork::decodeTagsSubscriptions(const QString& categories, con
continue;
}
- for (const QJsonValue& cat : assigned_categories) {
+ for (const QJsonValue& cat : qAsConst(assigned_categories)) {
QString potential_id = cat.toObject()["id"].toString();
if (potential_id.contains(QSL("/label/"))) {
@@ -301,8 +301,6 @@ RootItem* GreaderNetwork::decodeTagsSubscriptions(const QString& categories, con
: subscription["htmlUrl"].toString();
if (!icon_url.isEmpty()) {
- QByteArray icon_data;
-
if (icon_url.startsWith(QSL("//"))) {
icon_url = QUrl(baseUrl()).scheme() + QSL(":") + icon_url;
}
diff --git a/src/librssguard/services/inoreader/inoreadernetworkfactory.cpp b/src/librssguard/services/inoreader/inoreadernetworkfactory.cpp
index c479384bd..5d7bbda1c 100755
--- a/src/librssguard/services/inoreader/inoreadernetworkfactory.cpp
+++ b/src/librssguard/services/inoreader/inoreadernetworkfactory.cpp
@@ -144,8 +144,9 @@ QList InoreaderNetworkFactory::getLabels() {
{},
m_service->networkProxy());
QJsonDocument json_lbls = QJsonDocument::fromJson(output);
+ auto json_tags = json_lbls.object()["tags"].toArray();
- for (const QJsonValue& lbl_val : json_lbls.object()["tags"].toArray()) {
+ for (const QJsonValue& lbl_val : qAsConst(json_tags)) {
QJsonObject lbl_obj = lbl_val.toObject();
if (lbl_obj["type"] == QL1S("tag")) {
@@ -400,7 +401,7 @@ RootItem* InoreaderNetworkFactory::decodeFeedCategoriesData(const QString& categ
json = QJsonDocument::fromJson(feeds.toUtf8()).object()["subscriptions"].toArray();
- for (const QJsonValue& obj : json) {
+ for (const QJsonValue& obj : qAsConst(json)) {
auto subscription = obj.toObject();
QString id = subscription["id"].toString();
QString title = subscription["title"].toString();
diff --git a/src/librssguard/services/owncloud/owncloudnetworkfactory.cpp b/src/librssguard/services/owncloud/owncloudnetworkfactory.cpp
index 4c314a1ac..4873aa1ac 100755
--- a/src/librssguard/services/owncloud/owncloudnetworkfactory.cpp
+++ b/src/librssguard/services/owncloud/owncloudnetworkfactory.cpp
@@ -494,7 +494,9 @@ RootItem* OwnCloudGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons)
cats.insert(QSL("0"), parent);
// Process categories first, then process feeds.
- for (const QJsonValue& cat : QJsonDocument::fromJson(m_contentCategories.toUtf8()).object()["folders"].toArray()) {
+ auto json_folders = QJsonDocument::fromJson(m_contentCategories.toUtf8()).object()["folders"].toArray();
+
+ for (const QJsonValue& cat : qAsConst(json_folders)) {
QJsonObject item = cat.toObject();
auto* category = new Category();
@@ -507,7 +509,9 @@ RootItem* OwnCloudGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons)
}
// We have categories added, now add all feeds.
- for (const QJsonValue& fed : QJsonDocument::fromJson(m_contentFeeds.toUtf8()).object()["feeds"].toArray()) {
+ auto json_feeds = QJsonDocument::fromJson(m_contentFeeds.toUtf8()).object()["feeds"].toArray();
+
+ for (const QJsonValue& fed : qAsConst(json_feeds)) {
QJsonObject item = fed.toObject();
auto* feed = new OwnCloudFeed();
@@ -571,8 +575,9 @@ OwnCloudGetMessagesResponse::~OwnCloudGetMessagesResponse() = default;
QListOwnCloudGetMessagesResponse::messages() const {
QListmsgs;
+ auto json_items = m_rawContent["items"].toArray();
- for (const QJsonValue& message : m_rawContent["items"].toArray()) {
+ for (const QJsonValue& message : qAsConst(json_items)) {
QJsonObject message_map = message.toObject();
Message msg;
diff --git a/src/librssguard/services/standard/feedparser.cpp b/src/librssguard/services/standard/feedparser.cpp
index 1a498574a..e0ea9ca25 100755
--- a/src/librssguard/services/standard/feedparser.cpp
+++ b/src/librssguard/services/standard/feedparser.cpp
@@ -112,7 +112,7 @@ QStringList FeedParser::textsFromPath(const QDomElement& element, const QString&
}
if (!current_elements.isEmpty()) {
- for (const QDomElement& elem : current_elements) {
+ for (const QDomElement& elem : qAsConst(current_elements)) {
result.append(elem.text());
}
}
diff --git a/src/librssguard/services/standard/gui/standardfeeddetails.h b/src/librssguard/services/standard/gui/standardfeeddetails.h
index 1e1d726c8..4c6ce0dd6 100755
--- a/src/librssguard/services/standard/gui/standardfeeddetails.h
+++ b/src/librssguard/services/standard/gui/standardfeeddetails.h
@@ -22,6 +22,8 @@ class StandardFeedDetails : public QWidget {
public:
explicit StandardFeedDetails(QWidget* parent = nullptr);
+ StandardFeed::SourceType sourceType() const;
+
private slots:
void guessIconOnly(StandardFeed::SourceType source_type,
const QString& source,
@@ -43,8 +45,6 @@ class StandardFeedDetails : public QWidget {
void onLoadIconFromFile();
void onUseDefaultIcon();
- StandardFeed::SourceType sourceType() const;
-
private:
void prepareForNewFeed(RootItem* parent_to_select, const QString& url);
void setExistingFeed(StandardFeed* feed);
diff --git a/src/librssguard/services/standard/jsonparser.cpp b/src/librssguard/services/standard/jsonparser.cpp
index 231b117c1..9d8476c44 100644
--- a/src/librssguard/services/standard/jsonparser.cpp
+++ b/src/librssguard/services/standard/jsonparser.cpp
@@ -19,7 +19,9 @@ QList JsonParser::messages() const {
global_author = json.object()["authors"].toArray().at(0).toObject()["name"].toString();
}
- for (const QJsonValue& msg_val : json.object()["items"].toArray()) {
+ auto json_items = json.object()["items"].toArray();
+
+ for (const QJsonValue& msg_val : qAsConst(json_items)) {
QJsonObject msg_obj = msg_val.toObject();
Message msg;
@@ -50,9 +52,10 @@ QList JsonParser::messages() const {
msg.m_author = global_author;
}
- for (const QJsonValue& att : msg_obj["attachments"].toArray()) {
+ auto json_att = msg_obj["attachments"].toArray();
+
+ for (const QJsonValue& att : qAsConst(json_att)) {
QJsonObject att_obj = att.toObject();
- auto xx = att_obj["url"].toString();
msg.m_enclosures.append(Enclosure(att_obj["url"].toString(), att_obj["mime_type"].toString()));
}
diff --git a/src/librssguard/services/standard/standardcategory.cpp b/src/librssguard/services/standard/standardcategory.cpp
index 8a9f8f913..bb60c1ede 100644
--- a/src/librssguard/services/standard/standardcategory.cpp
+++ b/src/librssguard/services/standard/standardcategory.cpp
@@ -80,7 +80,9 @@ bool StandardCategory::removeItself() {
// Remove all child items (feeds and categories)
// from the database.
- for (RootItem* child : childItems()) {
+ auto chi = childItems();
+
+ for (RootItem* child : qAsConst(chi)) {
if (child->kind() == RootItem::Kind::Category) {
children_removed &= dynamic_cast(child)->removeItself();
}
diff --git a/src/librssguard/services/standard/standardfeedsimportexportmodel.cpp b/src/librssguard/services/standard/standardfeedsimportexportmodel.cpp
index 43dd97b8c..b06d43191 100644
--- a/src/librssguard/services/standard/standardfeedsimportexportmodel.cpp
+++ b/src/librssguard/services/standard/standardfeedsimportexportmodel.cpp
@@ -65,8 +65,9 @@ bool FeedsImportExportModel::exportToOMPL20(QByteArray& result) {
while (!items_to_process.isEmpty()) {
QDomElement active_element = elements_to_use.pop();
RootItem* active_item = items_to_process.pop();
+ auto chi = active_item->childItems();
- for (RootItem* child_item : active_item->childItems()) {
+ for (RootItem* child_item : qAsConst(chi)) {
if (!sourceModel()->isItemChecked(child_item)) {
continue;
}
@@ -313,7 +314,9 @@ void FeedsImportExportModel::importAsOPML20(const QByteArray& data, bool fetch_m
}
bool FeedsImportExportModel::exportToTxtURLPerLine(QByteArray& result) {
- for (const Feed* const feed : sourceModel()->rootItem()->getSubTreeFeeds()) {
+ auto stf = sourceModel()->rootItem()->getSubTreeFeeds();
+
+ for (const Feed* const feed : qAsConst(stf)) {
result += feed->source() + QL1S("\n");
}
diff --git a/src/librssguard/services/standard/standardserviceroot.cpp b/src/librssguard/services/standard/standardserviceroot.cpp
index 94ca2c96e..fb0e1e570 100644
--- a/src/librssguard/services/standard/standardserviceroot.cpp
+++ b/src/librssguard/services/standard/standardserviceroot.cpp
@@ -272,7 +272,9 @@ QList StandardServiceRoot::obtainNewMessages(const QList& feeds,
}
void StandardServiceRoot::checkArgumentsForFeedAdding() {
- for (const QString& arg : qApp->arguments().mid(1)) {
+ auto args = qApp->arguments().mid(1);
+
+ for (const QString& arg : qAsConst(args)) {
checkArgumentForFeedAdding(arg);
}
}
@@ -333,8 +335,9 @@ bool StandardServiceRoot::mergeImportExportModel(FeedsImportExportModel* model,
while (!new_parents.isEmpty()) {
RootItem* target_parent = original_parents.pop();
RootItem* source_parent = new_parents.pop();
+ auto sour_chi = source_parent->childItems();
- for (RootItem* source_item : source_parent->childItems()) {
+ for (RootItem* source_item : qAsConst(sour_chi)) {
if (!model->sourceModel()->isItemChecked(source_item)) {
// We can skip this item, because it is not checked and should not be imported.
// NOTE: All descendants are thus skipped too.
@@ -366,8 +369,9 @@ bool StandardServiceRoot::mergeImportExportModel(FeedsImportExportModel* model,
// already exists. If such a category exists in current parent, then find it and
// add descendants to it.
RootItem* existing_category = nullptr;
+ auto tar_chi = target_parent->childItems();
- for (RootItem* child : target_parent->childItems()) {
+ for (RootItem* child : qAsConst(tar_chi)) {
if (child->kind() == RootItem::Kind::Category && child->title() == new_category_title) {
existing_category = child;
}
diff --git a/src/librssguard/services/tt-rss/ttrssnetworkfactory.cpp b/src/librssguard/services/tt-rss/ttrssnetworkfactory.cpp
index 5141c79d3..3e3934b5a 100755
--- a/src/librssguard/services/tt-rss/ttrssnetworkfactory.cpp
+++ b/src/librssguard/services/tt-rss/ttrssnetworkfactory.cpp
@@ -697,7 +697,9 @@ RootItem* TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, QS
if (item_id == 0) {
// This is "Uncategorized" category, all its feeds belong to top-level root.
if (item.contains("items")) {
- for (const QJsonValue& child_feed : item["items"].toArray()) {
+ auto ite = item["items"].toArray();
+
+ for (const QJsonValue& child_feed : qAsConst(ite)) {
pairs.append(QPair(parent, child_feed));
}
}
@@ -710,7 +712,9 @@ RootItem* TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, QS
act_parent->appendChild(category);
if (item.contains("items")) {
- for (const QJsonValue& child : item["items"].toArray()) {
+ auto ite = item["items"].toArray();
+
+ for (const QJsonValue& child : qAsConst(ite)) {
pairs.append(QPair(category, child));
}
}
@@ -758,8 +762,9 @@ TtRssGetHeadlinesResponse::~TtRssGetHeadlinesResponse() = default;
QList TtRssGetHeadlinesResponse::messages(ServiceRoot* root) const {
QList messages;
auto active_labels = root->labelsNode() != nullptr ? root->labelsNode()->labels() : QList