Replaced all foreach instances with for.

This commit is contained in:
Martin Rotter 2020-06-03 09:54:52 +02:00
parent 2c6afa1bb7
commit d7d3be2914
65 changed files with 189 additions and 190 deletions

View file

@ -25,7 +25,7 @@
#include <algorithm> #include <algorithm>
using RootItemPtr = RootItem *; using RootItemPtr = RootItem*;
FeedsModel::FeedsModel(QObject* parent) : QAbstractItemModel(parent), m_itemHeight(-1) { FeedsModel::FeedsModel(QObject* parent) : QAbstractItemModel(parent), m_itemHeight(-1) {
setObjectName(QSL("FeedsModel")); setObjectName(QSL("FeedsModel"));
@ -61,7 +61,7 @@ QMimeData* FeedsModel::mimeData(const QModelIndexList& indexes) const {
QByteArray encoded_data; QByteArray encoded_data;
QDataStream stream(&encoded_data, QIODevice::WriteOnly); QDataStream stream(&encoded_data, QIODevice::WriteOnly);
foreach (const QModelIndex& index, indexes) { for (const QModelIndex& index : indexes) {
if (index.column() != 0) { if (index.column() != 0) {
continue; continue;
} }
@ -293,7 +293,7 @@ void FeedsModel::reassignNodeToNewParent(RootItem* original_node, RootItem* new_
QList<ServiceRoot*>FeedsModel::serviceRoots() const { QList<ServiceRoot*>FeedsModel::serviceRoots() const {
QList<ServiceRoot*>roots; QList<ServiceRoot*>roots;
foreach (RootItem* root, m_rootItem->childItems()) { for (RootItem* root : m_rootItem->childItems()) {
if (root->kind() == RootItemKind::ServiceRoot) { if (root->kind() == RootItemKind::ServiceRoot) {
roots.append(root->toServiceRoot()); roots.append(root->toServiceRoot());
} }
@ -303,7 +303,7 @@ QList<ServiceRoot*>FeedsModel::serviceRoots() const {
} }
bool FeedsModel::containsServiceRootFromEntryPoint(const ServiceEntryPoint* point) const { bool FeedsModel::containsServiceRootFromEntryPoint(const ServiceEntryPoint* point) const {
foreach (const ServiceRoot* root, serviceRoots()) { for (const ServiceRoot* root : serviceRoots()) {
if (root->code() == point->code()) { if (root->code() == point->code()) {
return true; return true;
} }
@ -313,7 +313,7 @@ bool FeedsModel::containsServiceRootFromEntryPoint(const ServiceEntryPoint* poin
} }
StandardServiceRoot* FeedsModel::standardServiceRoot() const { StandardServiceRoot* FeedsModel::standardServiceRoot() const {
foreach (ServiceRoot* root, serviceRoots()) { for (ServiceRoot* root : serviceRoots()) {
StandardServiceRoot* std_service_root; StandardServiceRoot* std_service_root;
if ((std_service_root = dynamic_cast<StandardServiceRoot*>(root)) != nullptr) { if ((std_service_root = dynamic_cast<StandardServiceRoot*>(root)) != nullptr) {
@ -327,7 +327,7 @@ StandardServiceRoot* FeedsModel::standardServiceRoot() const {
QList<Feed*>FeedsModel::feedsForScheduledUpdate(bool auto_update_now) { QList<Feed*>FeedsModel::feedsForScheduledUpdate(bool auto_update_now) {
QList<Feed*>feeds_for_update; QList<Feed*>feeds_for_update;
foreach (Feed* feed, m_rootItem->getSubTreeFeeds()) { for (Feed* feed : m_rootItem->getSubTreeFeeds()) {
switch (feed->autoUpdateType()) { switch (feed->autoUpdateType()) {
case Feed::DontAutoUpdate: case Feed::DontAutoUpdate:
@ -412,7 +412,7 @@ QModelIndex FeedsModel::indexForItem(const RootItem* item) const {
} }
bool FeedsModel::hasAnyFeedNewMessages() const { bool FeedsModel::hasAnyFeedNewMessages() const {
foreach (const Feed* feed, m_rootItem->getSubTreeFeeds()) { for (const Feed* feed : m_rootItem->getSubTreeFeeds()) {
if (feed->status() == Feed::NewMessages) { if (feed->status() == Feed::NewMessages) {
return true; return true;
} }
@ -456,7 +456,7 @@ void FeedsModel::onItemDataChanged(const QList<RootItem*>& items) {
else { else {
qDebug("There is request to reload feed model, reloading the %d items individually.", items.size()); qDebug("There is request to reload feed model, reloading the %d items individually.", items.size());
foreach (RootItem* item, items) { for (RootItem* item : items) {
reloadChangedItem(item); reloadChangedItem(item);
} }
} }
@ -508,7 +508,7 @@ bool FeedsModel::addServiceAccount(ServiceRoot* root, bool freshly_activated) {
bool FeedsModel::restoreAllBins() { bool FeedsModel::restoreAllBins() {
bool result = true; bool result = true;
foreach (ServiceRoot* root, serviceRoots()) { for (ServiceRoot* root : serviceRoots()) {
RecycleBin* bin_of_root = root->recycleBin(); RecycleBin* bin_of_root = root->recycleBin();
if (bin_of_root != nullptr) { if (bin_of_root != nullptr) {
@ -522,7 +522,7 @@ bool FeedsModel::restoreAllBins() {
bool FeedsModel::emptyAllBins() { bool FeedsModel::emptyAllBins() {
bool result = true; bool result = true;
foreach (ServiceRoot* root, serviceRoots()) { for (ServiceRoot* root : serviceRoots()) {
RecycleBin* bin_of_root = root->recycleBin(); RecycleBin* bin_of_root = root->recycleBin();
if (bin_of_root != nullptr) { if (bin_of_root != nullptr) {
@ -535,11 +535,11 @@ bool FeedsModel::emptyAllBins() {
void FeedsModel::loadActivatedServiceAccounts() { void FeedsModel::loadActivatedServiceAccounts() {
// Iterate all globally available feed "service plugins". // Iterate all globally available feed "service plugins".
foreach (const ServiceEntryPoint* entry_point, qApp->feedReader()->feedServices()) { for (const ServiceEntryPoint* entry_point : qApp->feedReader()->feedServices()) {
// Load all stored root nodes from the entry point and add those to the model. // Load all stored root nodes from the entry point and add those to the model.
QList<ServiceRoot*>roots = entry_point->initializeSubtree(); QList<ServiceRoot*>roots = entry_point->initializeSubtree();
foreach (ServiceRoot* root, roots) { for (ServiceRoot* root : roots) {
addServiceAccount(root, false); addServiceAccount(root, false);
} }
} }
@ -554,7 +554,7 @@ void FeedsModel::loadActivatedServiceAccounts() {
} }
void FeedsModel::stopServiceAccounts() { void FeedsModel::stopServiceAccounts() {
foreach (ServiceRoot* account, serviceRoots()) { for (ServiceRoot* account : serviceRoots()) {
account->stop(); account->stop();
} }
} }

View file

@ -255,7 +255,7 @@ void FeedsProxyModel::setShowUnreadOnly(bool show_unread_only) {
QModelIndexList FeedsProxyModel::mapListToSource(const QModelIndexList& indexes) const { QModelIndexList FeedsProxyModel::mapListToSource(const QModelIndexList& indexes) const {
QModelIndexList source_indexes; QModelIndexList source_indexes;
foreach (const QModelIndex& index, indexes) { for (const QModelIndex& index : indexes) {
source_indexes << mapToSource(index); source_indexes << mapToSource(index);
} }

View file

@ -11,7 +11,7 @@ Enclosure::Enclosure(QString url, QString mime) : m_url(std::move(url)), m_mimeT
QList<Enclosure> Enclosures::decodeEnclosuresFromString(const QString& enclosures_data) { QList<Enclosure> Enclosures::decodeEnclosuresFromString(const QString& enclosures_data) {
QList<Enclosure> enclosures; QList<Enclosure> enclosures;
foreach (const QString& single_enclosure, enclosures_data.split(ENCLOSURES_OUTER_SEPARATOR, QString::SkipEmptyParts)) { for (const QString& single_enclosure : enclosures_data.split(ENCLOSURES_OUTER_SEPARATOR, QString::SkipEmptyParts)) {
Enclosure enclosure; Enclosure enclosure;
if (single_enclosure.contains(ECNLOSURES_INNER_SEPARATOR)) { if (single_enclosure.contains(ECNLOSURES_INNER_SEPARATOR)) {
@ -33,7 +33,7 @@ QList<Enclosure> Enclosures::decodeEnclosuresFromString(const QString& enclosure
QString Enclosures::encodeEnclosuresToString(const QList<Enclosure>& enclosures) { QString Enclosures::encodeEnclosuresToString(const QList<Enclosure>& enclosures) {
QStringList enclosures_str; QStringList enclosures_str;
foreach (const Enclosure& enclosure, enclosures) { for (const Enclosure& enclosure : enclosures) {
if (enclosure.m_mimeType.isEmpty()) { if (enclosure.m_mimeType.isEmpty()) {
enclosures_str.append(enclosure.m_url.toLocal8Bit().toBase64()); enclosures_str.append(enclosure.m_url.toLocal8Bit().toBase64());
} }

View file

@ -419,7 +419,7 @@ bool MessagesModel::switchBatchMessageImportance(const QModelIndexList& messages
QList<QPair<Message, RootItem::Importance>> message_states; QList<QPair<Message, RootItem::Importance>> message_states;
// Obtain IDs of all desired messages. // Obtain IDs of all desired messages.
foreach (const QModelIndex& message, messages) { for (const QModelIndex& message : messages) {
const Message msg = messageAt(message.row()); const Message msg = messageAt(message.row());
RootItem::Importance message_importance = messageImportance((message.row())); RootItem::Importance message_importance = messageImportance((message.row()));
@ -454,7 +454,7 @@ bool MessagesModel::setBatchMessagesDeleted(const QModelIndexList& messages) {
QList<Message> msgs; QList<Message> msgs;
// Obtain IDs of all desired messages. // Obtain IDs of all desired messages.
foreach (const QModelIndex& message, messages) { for (const QModelIndex& message : messages) {
const Message msg = messageAt(message.row()); const Message msg = messageAt(message.row());
msgs.append(msg); msgs.append(msg);
@ -497,7 +497,7 @@ bool MessagesModel::setBatchMessagesRead(const QModelIndexList& messages, RootIt
QList<Message> msgs; QList<Message> msgs;
// Obtain IDs of all desired messages. // Obtain IDs of all desired messages.
foreach (const QModelIndex& message, messages) { for (const QModelIndex& message : messages) {
Message msg = messageAt(message.row()); Message msg = messageAt(message.row());
msgs.append(msg); msgs.append(msg);
@ -525,7 +525,7 @@ bool MessagesModel::setBatchMessagesRestored(const QModelIndexList& messages) {
QList<Message> msgs; QList<Message> msgs;
// Obtain IDs of all desired messages. // Obtain IDs of all desired messages.
foreach (const QModelIndex& message, messages) { for (const QModelIndex& message : messages) {
const Message msg = messageAt(message.row()); const Message msg = messageAt(message.row());
msgs.append(msg); msgs.append(msg);

View file

@ -63,7 +63,7 @@ bool MessagesProxyModel::lessThan(const QModelIndex& left, const QModelIndex& ri
QModelIndexList MessagesProxyModel::mapListFromSource(const QModelIndexList& indexes, bool deep) const { QModelIndexList MessagesProxyModel::mapListFromSource(const QModelIndexList& indexes, bool deep) const {
QModelIndexList mapped_indexes; QModelIndexList mapped_indexes;
foreach (const QModelIndex& index, indexes) { for (const QModelIndex& index : indexes) {
if (deep) { if (deep) {
// Construct new source index. // Construct new source index.
mapped_indexes << mapFromSource(m_sourceModel->index(index.row(), index.column())); mapped_indexes << mapFromSource(m_sourceModel->index(index.row(), index.column()));
@ -180,7 +180,7 @@ void MessagesProxyModel::sort(int column, Qt::SortOrder order) {
QModelIndexList MessagesProxyModel::mapListToSource(const QModelIndexList& indexes) const { QModelIndexList MessagesProxyModel::mapListToSource(const QModelIndexList& indexes) const {
QModelIndexList source_indexes; QModelIndexList source_indexes;
foreach (const QModelIndex& index, indexes) { for (const QModelIndex& index : indexes) {
source_indexes << mapToSource(index); source_indexes << mapToSource(index);
} }

View file

@ -11,7 +11,7 @@
void DynamicShortcuts::save(const QList<QAction*>& actions) { void DynamicShortcuts::save(const QList<QAction*>& actions) {
Settings* settings = qApp->settings(); Settings* settings = qApp->settings();
foreach (const QAction* action, actions) { for (const QAction* action : actions) {
settings->setValue(GROUP(Keyboard), action->objectName(), action->shortcut().toString(QKeySequence::PortableText)); settings->setValue(GROUP(Keyboard), action->objectName(), action->shortcut().toString(QKeySequence::PortableText));
} }
} }
@ -19,7 +19,7 @@ void DynamicShortcuts::save(const QList<QAction*>& actions) {
void DynamicShortcuts::load(const QList<QAction*>& actions) { void DynamicShortcuts::load(const QList<QAction*>& actions) {
Settings* settings = qApp->settings(); Settings* settings = qApp->settings();
foreach (QAction* action, actions) { for (QAction* action : actions) {
QString shortcut_for_action = settings->value(GROUP(Keyboard), QString shortcut_for_action = settings->value(GROUP(Keyboard),
action->objectName(), action->objectName(),
action->shortcut().toString(QKeySequence::PortableText)).toString(); action->shortcut().toString(QKeySequence::PortableText)).toString();

View file

@ -25,7 +25,7 @@ bool DynamicShortcutsWidget::areShortcutsUnique() const {
QList<QKeySequence> all_shortcuts; QList<QKeySequence> all_shortcuts;
// Obtain all shortcuts. // Obtain all shortcuts.
foreach (const ActionBinding& binding, m_actionBindings) { for (const ActionBinding& binding : m_actionBindings) {
const QKeySequence new_shortcut = binding.second->shortcut(); const QKeySequence new_shortcut = binding.second->shortcut();
if (!new_shortcut.isEmpty() && all_shortcuts.contains(new_shortcut)) { if (!new_shortcut.isEmpty() && all_shortcuts.contains(new_shortcut)) {
@ -41,7 +41,7 @@ bool DynamicShortcutsWidget::areShortcutsUnique() const {
} }
void DynamicShortcutsWidget::updateShortcuts() { void DynamicShortcutsWidget::updateShortcuts() {
foreach (const ActionBinding& binding, m_actionBindings) { for (const ActionBinding& binding : m_actionBindings) {
binding.first->setShortcut(binding.second->shortcut()); binding.first->setShortcut(binding.second->shortcut());
} }
} }
@ -60,7 +60,7 @@ void DynamicShortcutsWidget::populate(QList<QAction*> actions) {
// This will be setup in FormMain::allActions(). // This will be setup in FormMain::allActions().
// Then here I will process actions into categories. // Then here I will process actions into categories.
foreach (QAction* action, actions) { for (QAction* action : actions) {
// Create shortcut catcher for this action and set default shortcut. // Create shortcut catcher for this action and set default shortcut.
auto* catcher = new ShortcutCatcher(this); auto* catcher = new ShortcutCatcher(this);

View file

@ -25,7 +25,7 @@ void BaseBar::loadSavedActions() {
} }
QAction* BaseBar::findMatchingAction(const QString& action, const QList<QAction*>& actions) const { QAction* BaseBar::findMatchingAction(const QString& action, const QList<QAction*>& actions) const {
foreach (QAction* act, actions) { for (QAction* act : actions) {
if (act->objectName() == action) { if (act->objectName() == action) {
return act; return act;
} }

View file

@ -50,7 +50,7 @@ ServiceEntryPoint* FormAddAccount::selectedEntryPoint() const {
} }
void FormAddAccount::loadEntryPoints() { void FormAddAccount::loadEntryPoints() {
foreach (const ServiceEntryPoint* entry_point, m_entryPoints) { for (const ServiceEntryPoint* entry_point : m_entryPoints) {
QListWidgetItem* item = new QListWidgetItem(entry_point->icon(), entry_point->name(), m_ui->m_listEntryPoints); QListWidgetItem* item = new QListWidgetItem(entry_point->icon(), entry_point->name(), m_ui->m_listEntryPoints);
if (entry_point->isSingleInstanceService() && m_model->containsServiceRootFromEntryPoint(entry_point)) { if (entry_point->isSingleInstanceService() && m_model->containsServiceRootFromEntryPoint(entry_point)) {

View file

@ -242,7 +242,7 @@ void FormMain::updateAddItemMenu() {
// NOTE: Clear here deletes items from memory but only those OWNED by the menu. // NOTE: Clear here deletes items from memory but only those OWNED by the menu.
m_ui->m_menuAddItem->clear(); m_ui->m_menuAddItem->clear();
foreach (ServiceRoot* activated_root, qApp->feedReader()->feedsModel()->serviceRoots()) { for (ServiceRoot* activated_root : qApp->feedReader()->feedsModel()->serviceRoots()) {
QMenu* root_menu = new QMenu(activated_root->title(), m_ui->m_menuAddItem); QMenu* root_menu = new QMenu(activated_root->title(), m_ui->m_menuAddItem);
root_menu->setIcon(activated_root->icon()); root_menu->setIcon(activated_root->icon());
@ -293,7 +293,7 @@ void FormMain::updateAddItemMenu() {
void FormMain::updateRecycleBinMenu() { void FormMain::updateRecycleBinMenu() {
m_ui->m_menuRecycleBin->clear(); m_ui->m_menuRecycleBin->clear();
foreach (const ServiceRoot* activated_root, qApp->feedReader()->feedsModel()->serviceRoots()) { for (const ServiceRoot* activated_root : qApp->feedReader()->feedsModel()->serviceRoots()) {
QMenu* root_menu = new QMenu(activated_root->title(), m_ui->m_menuRecycleBin); QMenu* root_menu = new QMenu(activated_root->title(), m_ui->m_menuRecycleBin);
root_menu->setIcon(activated_root->icon()); root_menu->setIcon(activated_root->icon());
@ -335,7 +335,7 @@ void FormMain::updateRecycleBinMenu() {
void FormMain::updateAccountsMenu() { void FormMain::updateAccountsMenu() {
m_ui->m_menuAccounts->clear(); m_ui->m_menuAccounts->clear();
foreach (ServiceRoot* activated_root, qApp->feedReader()->feedsModel()->serviceRoots()) { for (ServiceRoot* activated_root : qApp->feedReader()->feedsModel()->serviceRoots()) {
QMenu* root_menu = new QMenu(activated_root->title(), m_ui->m_menuAccounts); QMenu* root_menu = new QMenu(activated_root->title(), m_ui->m_menuAccounts);
root_menu->setIcon(activated_root->icon()); root_menu->setIcon(activated_root->icon());

View file

@ -90,14 +90,14 @@ void FormRestoreDatabaseSettings::selectFolder(QString folder) {
m_ui.m_listDatabase->clear(); m_ui.m_listDatabase->clear();
m_ui.m_listSettings->clear(); m_ui.m_listSettings->clear();
foreach (const QFileInfo& database_file, available_databases) { for (const QFileInfo& database_file : available_databases) {
QListWidgetItem* database_item = new QListWidgetItem(database_file.fileName(), m_ui.m_listDatabase); QListWidgetItem* database_item = new QListWidgetItem(database_file.fileName(), m_ui.m_listDatabase);
database_item->setData(Qt::UserRole, database_file.absoluteFilePath()); database_item->setData(Qt::UserRole, database_file.absoluteFilePath());
database_item->setToolTip(QDir::toNativeSeparators(database_file.absoluteFilePath())); database_item->setToolTip(QDir::toNativeSeparators(database_file.absoluteFilePath()));
} }
foreach (const QFileInfo& settings_file, available_settings) { for (const QFileInfo& settings_file : available_settings) {
QListWidgetItem* settings_item = new QListWidgetItem(settings_file.fileName(), m_ui.m_listSettings); QListWidgetItem* settings_item = new QListWidgetItem(settings_file.fileName(), m_ui.m_listSettings);
settings_item->setData(Qt::UserRole, settings_file.absoluteFilePath()); settings_item->setData(Qt::UserRole, settings_file.absoluteFilePath());

View file

@ -56,7 +56,7 @@ void FormSettings::applySettings() {
m_settings.checkSettings(); m_settings.checkSettings();
QStringList panels_for_restart; QStringList panels_for_restart;
foreach (SettingsPanel* panel, m_panels) { for (SettingsPanel* panel : m_panels) {
if (panel->isDirty()) { if (panel->isDirty()) {
panel->saveSettings(); panel->saveSettings();
} }
@ -92,7 +92,7 @@ void FormSettings::applySettings() {
void FormSettings::cancelSettings() { void FormSettings::cancelSettings() {
QStringList changed_panels; QStringList changed_panels;
foreach (SettingsPanel* panel, m_panels) { for (SettingsPanel* panel : m_panels) {
if (panel->isDirty()) { if (panel->isDirty()) {
changed_panels.append(panel->title().toLower()); changed_panels.append(panel->title().toLower());
} }

View file

@ -145,7 +145,7 @@ void FormUpdate::saveUpdateFile(const QByteArray& file_contents) {
void FormUpdate::loadAvailableFiles() { void FormUpdate::loadAvailableFiles() {
m_ui.m_listFiles->clear(); m_ui.m_listFiles->clear();
foreach (const UpdateUrl& url, m_updateInfo.m_urls) { for (const UpdateUrl& url : m_updateInfo.m_urls) {
if (SystemFactory::supportedUpdateFiles().match(url.m_name).hasMatch()) { if (SystemFactory::supportedUpdateFiles().match(url.m_name).hasMatch()) {
QListWidgetItem* item = new QListWidgetItem(url.m_name + tr(" (size ") + url.m_size + QSL(")")); QListWidgetItem* item = new QListWidgetItem(url.m_name + tr(" (size ") + url.m_size + QSL(")"));

View file

@ -61,10 +61,10 @@ void DiscoverFeedsButton::linkTriggered(QAction* action) {
void DiscoverFeedsButton::fillMenu() { void DiscoverFeedsButton::fillMenu() {
menu()->clear(); menu()->clear();
foreach (const ServiceRoot* root, qApp->feedReader()->feedsModel()->serviceRoots()) { for (const ServiceRoot* root : qApp->feedReader()->feedsModel()->serviceRoots()) {
QMenu* root_menu = menu()->addMenu(root->icon(), root->title()); QMenu* root_menu = menu()->addMenu(root->icon(), root->title());
foreach (const QString& url, m_addresses) { for (const QString& url : m_addresses) {
if (root->supportsFeedAdding()) { if (root->supportsFeedAdding()) {
QAction* url_action = root_menu->addAction(root->icon(), url); QAction* url_action = root_menu->addAction(root->icon(), url);

View file

@ -34,7 +34,7 @@ QList<QAction*> FeedsToolBar::getSpecificActions(const QStringList& actions) {
QList<QAction*> spec_actions; QList<QAction*> spec_actions;
// Iterate action names and add respectable actions into the toolbar. // Iterate action names and add respectable actions into the toolbar.
foreach (const QString& action_name, actions) { for (const QString& action_name : actions) {
QAction* matching_action = findMatchingAction(action_name, available_actions); QAction* matching_action = findMatchingAction(action_name, available_actions);
if (matching_action != nullptr) { if (matching_action != nullptr) {

View file

@ -99,7 +99,7 @@ void FeedsView::saveExpandStates(RootItem* item) {
QList<RootItem*> items = item->getSubTree(RootItemKind::Category | RootItemKind::ServiceRoot); QList<RootItem*> items = item->getSubTree(RootItemKind::Category | RootItemKind::ServiceRoot);
// Iterate all categories and save their expand statuses. // Iterate all categories and save their expand statuses.
foreach (const RootItem* item, items) { for (const RootItem* item : items) {
const QString setting_name = item->hashCode(); const QString setting_name = item->hashCode();
QModelIndex source_index = sourceModel()->indexForItem(item); QModelIndex source_index = sourceModel()->indexForItem(item);
QModelIndex visible_index = model()->mapFromSource(source_index); QModelIndex visible_index = model()->mapFromSource(source_index);
@ -117,7 +117,7 @@ void FeedsView::loadAllExpandStates() {
expandable_items.append(sourceModel()->rootItem()->getSubTree(RootItemKind::Category | RootItemKind::ServiceRoot)); expandable_items.append(sourceModel()->rootItem()->getSubTree(RootItemKind::Category | RootItemKind::ServiceRoot));
// Iterate all categories and save their expand statuses. // Iterate all categories and save their expand statuses.
foreach (const RootItem* item, expandable_items) { for (const RootItem* item : expandable_items) {
const QString setting_name = item->hashCode(); const QString setting_name = item->hashCode();
setExpanded(model()->mapFromSource(sourceModel()->indexForItem(item)), setExpanded(model()->mapFromSource(sourceModel()->indexForItem(item)),
@ -677,7 +677,7 @@ void FeedsView::validateItemAfterDragDrop(const QModelIndex& source_index) {
} }
void FeedsView::onItemExpandRequested(const QList<RootItem*>& items, bool exp) { void FeedsView::onItemExpandRequested(const QList<RootItem*>& items, bool exp) {
foreach (const RootItem* item, items) { for (const RootItem* item : items) {
QModelIndex source_index = m_sourceModel->indexForItem(item); QModelIndex source_index = m_sourceModel->indexForItem(item);
QModelIndex proxy_index = m_proxyModel->mapFromSource(source_index); QModelIndex proxy_index = m_proxyModel->mapFromSource(source_index);

View file

@ -229,7 +229,7 @@ QString MessagePreviewer::prepareHtmlForMessage(const Message& message) {
html += QString("[url] <a href=\"%1\">%1</a><br/>").arg(message.m_url); html += QString("[url] <a href=\"%1\">%1</a><br/>").arg(message.m_url);
} }
foreach (const Enclosure& enc, message.m_enclosures) { for (const Enclosure& enc : message.m_enclosures) {
QString enc_url; QString enc_url;
if (!enc.m_url.contains(QRegularExpression(QSL("^(http|ftp|\\/)")))) { if (!enc.m_url.contains(QRegularExpression(QSL("^(http|ftp|\\/)")))) {

View file

@ -45,7 +45,7 @@ QList<QAction*> MessagesToolBar::getSpecificActions(const QStringList& actions)
QList<QAction*> spec_actions; QList<QAction*> spec_actions;
// Iterate action names and add respectable actions into the toolbar. // Iterate action names and add respectable actions into the toolbar.
foreach (const QString& action_name, actions) { for (const QString& action_name : actions) {
auto* matching_action = findMatchingAction(action_name, available_actions); auto* matching_action = findMatchingAction(action_name, available_actions);
if (matching_action != nullptr) { if (matching_action != nullptr) {
@ -90,7 +90,7 @@ void MessagesToolBar::loadSpecificActions(const QList<QAction*>& actions, bool i
clear(); clear();
foreach (QAction* act, actions) { for (QAction* act : actions) {
addAction(act); addAction(act);
} }
} }

View file

@ -207,7 +207,7 @@ void MessagesView::initializeContextMenu() {
menu->setIcon(qApp->icons()->fromTheme(QSL("document-open"))); menu->setIcon(qApp->icons()->fromTheme(QSL("document-open")));
foreach (const ExternalTool& tool, ExternalTool::toolsFromSettings()) { for (const ExternalTool& tool : ExternalTool::toolsFromSettings()) {
QAction* act_tool = new QAction(QFileInfo(tool.executable()).fileName(), menu); QAction* act_tool = new QAction(QFileInfo(tool.executable()).fileName(), menu);
act_tool->setIcon(icon_provider.icon(tool.executable())); act_tool->setIcon(icon_provider.icon(tool.executable()));
@ -325,7 +325,7 @@ void MessagesView::loadItem(RootItem* item) {
} }
void MessagesView::openSelectedSourceMessagesExternally() { void MessagesView::openSelectedSourceMessagesExternally() {
foreach (const QModelIndex& index, selectionModel()->selectedRows()) { for (const QModelIndex& index : selectionModel()->selectedRows()) {
QString link = m_sourceModel->messageAt(m_proxyModel->mapToSource(index).row()) QString link = m_sourceModel->messageAt(m_proxyModel->mapToSource(index).row())
.m_url .m_url
.replace(QRegularExpression("[\\t\\n]"), QString()); .replace(QRegularExpression("[\\t\\n]"), QString());
@ -347,7 +347,7 @@ void MessagesView::openSelectedSourceMessagesExternally() {
void MessagesView::openSelectedMessagesInternally() { void MessagesView::openSelectedMessagesInternally() {
QList<Message> messages; QList<Message> messages;
foreach (const QModelIndex& index, selectionModel()->selectedRows()) { for (const QModelIndex& index : selectionModel()->selectedRows()) {
messages << m_sourceModel->messageAt(m_proxyModel->mapToSource(index).row()); messages << m_sourceModel->messageAt(m_proxyModel->mapToSource(index).row());
} }
@ -467,7 +467,7 @@ void MessagesView::reselectIndexes(const QModelIndexList& indexes) {
if (indexes.size() < RESELECT_MESSAGE_THRESSHOLD) { if (indexes.size() < RESELECT_MESSAGE_THRESSHOLD) {
QItemSelection selection; QItemSelection selection;
foreach (const QModelIndex& index, indexes) { for (const QModelIndex& index : indexes) {
selection.merge(QItemSelection(index, index), QItemSelectionModel::Select); selection.merge(QItemSelection(index, index), QItemSelectionModel::Select);
} }
@ -539,7 +539,7 @@ void MessagesView::openSelectedMessagesWithExternalTool() {
if (sndr != nullptr) { if (sndr != nullptr) {
auto tool = sndr->data().value<ExternalTool>(); auto tool = sndr->data().value<ExternalTool>();
foreach (const QModelIndex& index, selectionModel()->selectedRows()) { for (const QModelIndex& index : selectionModel()->selectedRows()) {
const QString link = m_sourceModel->messageAt(m_proxyModel->mapToSource(index).row()) const QString link = m_sourceModel->messageAt(m_proxyModel->mapToSource(index).row())
.m_url .m_url
.replace(QRegularExpression("[\\t\\n]"), QString()); .replace(QRegularExpression("[\\t\\n]"), QString());

View file

@ -126,7 +126,7 @@ QList<ExternalTool> SettingsBrowserMail::externalTools() const {
} }
void SettingsBrowserMail::setExternalTools(const QList<ExternalTool>& list) { void SettingsBrowserMail::setExternalTools(const QList<ExternalTool>& list) {
foreach (const ExternalTool& tool, list) { for (const ExternalTool& tool : list) {
QTreeWidgetItem* item = new QTreeWidgetItem(m_ui->m_listTools, QTreeWidgetItem* item = new QTreeWidgetItem(m_ui->m_listTools,
QStringList() << tool.executable() << tool.parameters().join(QL1C(' '))); QStringList() << tool.executable() << tool.parameters().join(QL1C(' ')));

View file

@ -85,7 +85,7 @@ void SettingsFeedsMessages::initializeMessageDateFormats() {
const QDateTime current_dt = QDateTime::currentDateTime(); const QDateTime current_dt = QDateTime::currentDateTime();
const QLocale current_locale = qApp->localization()->loadedLocale(); const QLocale current_locale = qApp->localization()->loadedLocale();
foreach (const Language& lang, qApp->localization()->installedLanguages()) { for (const Language& lang : qApp->localization()->installedLanguages()) {
QLocale locale(lang.m_code); QLocale locale(lang.m_code);
best_formats << locale.dateTimeFormat(QLocale::LongFormat) best_formats << locale.dateTimeFormat(QLocale::LongFormat)
@ -95,7 +95,7 @@ void SettingsFeedsMessages::initializeMessageDateFormats() {
best_formats.removeDuplicates(); best_formats.removeDuplicates();
foreach (const QString& format, best_formats) { for (const QString& format : best_formats) {
m_ui->m_cmbMessagesDateTimeFormat->addItem(current_locale.toString(current_dt, format), format); m_ui->m_cmbMessagesDateTimeFormat->addItem(current_locale.toString(current_dt, format), format);
} }
} }

View file

@ -100,7 +100,7 @@ void SettingsGui::loadSettings() {
// Load settings of icon theme. // Load settings of icon theme.
const QString current_theme = qApp->icons()->currentIconTheme(); const QString current_theme = qApp->icons()->currentIconTheme();
foreach (const QString& icon_theme_name, qApp->icons()->installedIconThemes()) { for (const QString& icon_theme_name : qApp->icons()->installedIconThemes()) {
if (icon_theme_name == APP_NO_THEME) { if (icon_theme_name == APP_NO_THEME) {
// Add just "no theme" on other systems. // Add just "no theme" on other systems.
//: Label for disabling icon theme. //: Label for disabling icon theme.
@ -129,7 +129,7 @@ void SettingsGui::loadSettings() {
// Load skin. // Load skin.
const QString selected_skin = qApp->skins()->selectedSkinName(); const QString selected_skin = qApp->skins()->selectedSkinName();
foreach (const Skin& skin, qApp->skins()->installedSkins()) { for (const Skin& skin : qApp->skins()->installedSkins()) {
QTreeWidgetItem* new_item = new QTreeWidgetItem(QStringList() << QTreeWidgetItem* new_item = new QTreeWidgetItem(QStringList() <<
skin.m_visibleName << skin.m_visibleName <<
skin.m_version << skin.m_version <<
@ -154,7 +154,7 @@ void SettingsGui::loadSettings() {
} }
// Load styles. // Load styles.
foreach (const QString& style_name, QStyleFactory::keys()) { for (const QString& style_name : QStyleFactory::keys()) {
m_ui->m_listStyles->addItem(style_name); m_ui->m_listStyles->addItem(style_name);
} }

View file

@ -32,7 +32,7 @@ SettingsLocalization::~SettingsLocalization() {
void SettingsLocalization::loadSettings() { void SettingsLocalization::loadSettings() {
onBeginLoadSettings(); onBeginLoadSettings();
foreach (const Language& language, qApp->localization()->installedLanguages()) { for (const Language& language : qApp->localization()->installedLanguages()) {
auto* item = new QTreeWidgetItem(m_ui->m_treeLanguages); auto* item = new QTreeWidgetItem(m_ui->m_treeLanguages);
item->setText(0, language.m_name); item->setText(0, language.m_name);

View file

@ -88,7 +88,7 @@ QList<QAction*> StatusBar::getSpecificActions(const QStringList& actions) {
// Iterate action names and add respectable // Iterate action names and add respectable
// actions into the toolbar. // actions into the toolbar.
foreach (const QString& action_name, actions) { for (const QString& action_name : actions) {
QAction* matching_action = findMatchingAction(action_name, available_actions); QAction* matching_action = findMatchingAction(action_name, available_actions);
QAction* action_to_add; QAction* action_to_add;
QWidget* widget_to_add; QWidget* widget_to_add;
@ -162,7 +162,7 @@ QList<QAction*> StatusBar::getSpecificActions(const QStringList& actions) {
} }
void StatusBar::loadSpecificActions(const QList<QAction*>& actions, bool initial_load) { void StatusBar::loadSpecificActions(const QList<QAction*>& actions, bool initial_load) {
foreach (QAction* act, this->actions()) { for (QAction* act : this->actions()) {
QWidget* widget = act->property("widget").isValid() ? static_cast<QWidget*>(act->property("widget").value<void*>()) : nullptr; QWidget* widget = act->property("widget").isValid() ? static_cast<QWidget*>(act->property("widget").value<void*>()) : nullptr;
if (widget != nullptr) { if (widget != nullptr) {
@ -179,7 +179,7 @@ void StatusBar::loadSpecificActions(const QList<QAction*>& actions, bool initial
clear(); clear();
foreach (QAction* act, actions) { for (QAction* act : actions) {
QWidget* widget = act->property("widget").isValid() ? static_cast<QWidget*>(act->property("widget").value<void*>()) : nullptr; QWidget* widget = act->property("widget").isValid() ? static_cast<QWidget*>(act->property("widget").value<void*>()) : nullptr;
addAction(act); addAction(act);

View file

@ -63,7 +63,7 @@ void ToolBarEditor::loadEditor(const QList<QAction*> activated_actions, const QL
m_ui->m_listActivatedActions->clear(); m_ui->m_listActivatedActions->clear();
m_ui->m_listAvailableActions->clear(); m_ui->m_listAvailableActions->clear();
foreach (const QAction* action, activated_actions) { for (const QAction* action : activated_actions) {
QListWidgetItem* action_item = new QListWidgetItem(action->icon(), action->text().replace('&', ""), m_ui->m_listActivatedActions); QListWidgetItem* action_item = new QListWidgetItem(action->icon(), action->text().replace('&', ""), m_ui->m_listActivatedActions);
if (action->isSeparator()) { if (action->isSeparator()) {
@ -83,7 +83,7 @@ void ToolBarEditor::loadEditor(const QList<QAction*> activated_actions, const QL
} }
} }
foreach (QAction* action, available_actions) { for (QAction* action : available_actions) {
if (!activated_actions.contains(action)) { if (!activated_actions.contains(action)) {
QListWidgetItem* action_item = new QListWidgetItem(action->icon(), action->text().replace('&', ""), m_ui->m_listAvailableActions); QListWidgetItem* action_item = new QListWidgetItem(action->icon(), action->text().replace('&', ""), m_ui->m_listAvailableActions);

View file

@ -96,7 +96,7 @@ void TreeWidget::filterString(const QString& string) {
QList<QTreeWidgetItem*> parents; QList<QTreeWidgetItem*> parents;
bool stringIsEmpty = string.isEmpty(); bool stringIsEmpty = string.isEmpty();
foreach (QTreeWidgetItem* item, _allItems) { for (QTreeWidgetItem* item : _allItems) {
bool containsString = stringIsEmpty || item->text(0).contains(string, Qt::CaseInsensitive); bool containsString = stringIsEmpty || item->text(0).contains(string, Qt::CaseInsensitive);
if (containsString) { if (containsString) {

View file

@ -94,11 +94,11 @@ void WebViewer::loadMessages(const QList<Message>& messages, RootItem* root) {
QString messages_layout; QString messages_layout;
QString single_message_layout = skin.m_layoutMarkup; QString single_message_layout = skin.m_layoutMarkup;
foreach (const Message& message, messages) { for (const Message& message : messages) {
QString enclosures; QString enclosures;
QString enclosure_images; QString enclosure_images;
foreach (const Enclosure& enclosure, message.m_enclosures) { for (const Enclosure& enclosure : message.m_enclosures) {
QString enc_url; QString enc_url;
if (!enclosure.m_url.contains(QRegularExpression(QSL("^(http|ftp|\\/)")))) { if (!enclosure.m_url.contains(QRegularExpression(QSL("^(http|ftp|\\/)")))) {

View file

@ -341,7 +341,7 @@ void Application::processExecutionMessage(const QString& message) {
quit(); quit();
} }
else { else {
foreach (const QString& msg, messages) { for (const QString& msg : messages) {
if (msg == APP_IS_RUNNING) { if (msg == APP_IS_RUNNING) {
showGuiMessage(APP_NAME, tr("Application is already running."), QSystemTrayIcon::Information); showGuiMessage(APP_NAME, tr("Application is already running."), QSystemTrayIcon::Information);
mainForm()->display(); mainForm()->display();

View file

@ -222,7 +222,7 @@ QSqlDatabase DatabaseFactory::sqliteInitializeInMemoryDatabase() {
database.transaction(); database.transaction();
foreach (const QString& statement, statements) { for (const QString& statement : statements) {
query_db.exec(statement); query_db.exec(statement);
if (query_db.lastError().isValid()) { if (query_db.lastError().isValid()) {
@ -258,7 +258,7 @@ QSqlDatabase DatabaseFactory::sqliteInitializeInMemoryDatabase() {
qFatal("Cannot obtain list of table names from file-base SQLite database."); qFatal("Cannot obtain list of table names from file-base SQLite database.");
} }
foreach (const QString& table, tables) { for (const QString& table : tables) {
copy_contents.exec(QString("INSERT INTO main.%1 SELECT * FROM storage.%1;").arg(table)); copy_contents.exec(QString("INSERT INTO main.%1 SELECT * FROM storage.%1;").arg(table));
} }
@ -331,7 +331,7 @@ QSqlDatabase DatabaseFactory::sqliteInitializeFileBasedDatabase(const QString& c
database.transaction(); database.transaction();
foreach (const QString& statement, statements) { for (const QString& statement : statements) {
query_db.exec(statement); query_db.exec(statement);
if (query_db.lastError().isValid()) { if (query_db.lastError().isValid()) {
@ -409,7 +409,7 @@ bool DatabaseFactory::sqliteUpdateDatabaseSchema(const QSqlDatabase& database, c
const QStringList statements = QString(update_file_handle.readAll()).split(APP_DB_COMMENT_SPLIT, QString::SkipEmptyParts); const QStringList statements = QString(update_file_handle.readAll()).split(APP_DB_COMMENT_SPLIT, QString::SkipEmptyParts);
foreach (const QString& statement, statements) { for (const QString& statement : statements) {
QSqlQuery query = database.exec(statement); QSqlQuery query = database.exec(statement);
if (query.lastError().isValid()) { if (query.lastError().isValid()) {
@ -449,7 +449,7 @@ bool DatabaseFactory::mysqlUpdateDatabaseSchema(const QSqlDatabase& database,
QStringList statements = QString(update_file_handle.readAll()).split(APP_DB_COMMENT_SPLIT, QString::SkipEmptyParts); QStringList statements = QString(update_file_handle.readAll()).split(APP_DB_COMMENT_SPLIT, QString::SkipEmptyParts);
foreach (QString statement, statements) { for (QString statement : statements) {
QSqlQuery query = database.exec(statement.replace(APP_DB_NAME_PLACEHOLDER, db_name)); QSqlQuery query = database.exec(statement.replace(APP_DB_NAME_PLACEHOLDER, db_name));
if (query.lastError().isValid()) { if (query.lastError().isValid()) {
@ -536,7 +536,7 @@ void DatabaseFactory::sqliteSaveMemoryDatabase() {
qFatal("Cannot obtain list of table names from file-base SQLite database."); qFatal("Cannot obtain list of table names from file-base SQLite database.");
} }
foreach (const QString& table, tables) { for (const QString& table : tables) {
copy_contents.exec(QString(QSL("DELETE FROM storage.%1;")).arg(table)); copy_contents.exec(QString(QSL("DELETE FROM storage.%1;")).arg(table));
copy_contents.exec(QString(QSL("INSERT INTO storage.%1 SELECT * FROM main.%1;")).arg(table)); copy_contents.exec(QString(QSL("INSERT INTO storage.%1 SELECT * FROM main.%1;")).arg(table));
} }
@ -660,7 +660,7 @@ QSqlDatabase DatabaseFactory::mysqlInitializeDatabase(const QString& connection_
database.transaction(); database.transaction();
foreach (QString statement, statements) { for (QString statement : statements) {
// Assign real database name and run the query. // Assign real database name and run the query.
query_db.exec(statement.replace(APP_DB_NAME_PLACEHOLDER, database_name)); query_db.exec(statement.replace(APP_DB_NAME_PLACEHOLDER, database_name));

View file

@ -494,7 +494,7 @@ int DatabaseQueries::updateMessages(QSqlDatabase db,
return updated_messages; return updated_messages;
} }
foreach (Message message, messages) { for (Message message : messages) {
// Check if messages contain relative URLs and if they do, then replace them. // Check if messages contain relative URLs and if they do, then replace them.
if (message.m_url.startsWith(QL1S("//"))) { if (message.m_url.startsWith(QL1S("//"))) {
message.m_url = QString(URI_SCHEME_HTTP) + message.m_url.mid(2); message.m_url = QString(URI_SCHEME_HTTP) + message.m_url.mid(2);
@ -695,7 +695,7 @@ bool DatabaseQueries::deleteAccount(const QSqlDatabase& db, int account_id) {
QSL("DELETE FROM Categories WHERE account_id = :account_id;") << QSL("DELETE FROM Categories WHERE account_id = :account_id;") <<
QSL("DELETE FROM Accounts WHERE id = :account_id;"); QSL("DELETE FROM Accounts WHERE id = :account_id;");
foreach (const QString& q, queries) { for (const QString& q : queries) {
query.prepare(q); query.prepare(q);
query.bindValue(QSL(":account_id"), account_id); query.bindValue(QSL(":account_id"), account_id);
@ -791,7 +791,7 @@ bool DatabaseQueries::storeAccountTree(const QSqlDatabase& db, RootItem* tree_ro
"VALUES (:title, :icon, :category, :protected, :update_type, :update_interval, :account_id, :custom_id);"); "VALUES (:title, :icon, :category, :protected, :update_type, :update_interval, :account_id, :custom_id);");
// Iterate all children. // Iterate all children.
foreach (RootItem* child, tree_root->getSubTree()) { for (RootItem* child : tree_root->getSubTree()) {
if (child->kind() == RootItemKind::Category) { if (child->kind() == RootItemKind::Category) {
query_category.bindValue(QSL(":parent_id"), child->parent()->id()); query_category.bindValue(QSL(":parent_id"), child->parent()->id());
query_category.bindValue(QSL(":title"), child->title()); query_category.bindValue(QSL(":title"), child->title());

View file

@ -57,7 +57,7 @@ QList<ExternalTool> ExternalTool::toolsFromSettings() {
QList<ExternalTool> tools; QList<ExternalTool> tools;
foreach (const QString& tool_encoded, tools_encoded) { for (const QString& tool_encoded : tools_encoded) {
tools.append(ExternalTool::fromString(tool_encoded)); tools.append(ExternalTool::fromString(tool_encoded));
} }
@ -67,7 +67,7 @@ QList<ExternalTool> ExternalTool::toolsFromSettings() {
void ExternalTool::setToolsToSettings(QList<ExternalTool>& tools) { void ExternalTool::setToolsToSettings(QList<ExternalTool>& tools) {
QStringList encode; QStringList encode;
foreach (ExternalTool tool, tools) { for (ExternalTool tool : tools) {
encode.append(tool.toString()); encode.append(tool.toString());
} }

View file

@ -197,7 +197,7 @@ void FeedReader::executeNextAutoUpdate() {
} }
void FeedReader::checkServicesForAsyncOperations() { void FeedReader::checkServicesForAsyncOperations() {
foreach (ServiceRoot* service, m_feedsModel->serviceRoots()) { for (ServiceRoot* service : m_feedsModel->serviceRoots()) {
auto cache = dynamic_cast<CacheForServiceRoot*>(service); auto cache = dynamic_cast<CacheForServiceRoot*>(service);
if (cache != nullptr) { if (cache != nullptr) {

View file

@ -117,11 +117,11 @@ QStringList IconFactory::installedIconThemes() const {
filters_index.append("index.theme"); filters_index.append("index.theme");
icon_themes_paths.removeDuplicates(); icon_themes_paths.removeDuplicates();
foreach (const QString& icon_path, icon_themes_paths) { for (const QString& icon_path : icon_themes_paths) {
const QDir icon_dir(icon_path); const QDir icon_dir(icon_path);
// Iterate all icon themes in this directory. // Iterate all icon themes in this directory.
foreach (const QFileInfo& icon_theme_path, icon_dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot | for (const QFileInfo& icon_theme_path : icon_dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot |
QDir::Readable | QDir::CaseSensitive | QDir::Readable | QDir::CaseSensitive |
QDir::NoSymLinks, QDir::NoSymLinks,
QDir::Time)) { QDir::Time)) {

View file

@ -60,7 +60,7 @@ QList<Language> Localization::installedLanguages() const {
QTranslator translator; QTranslator translator;
// Iterate all found language files. // Iterate all found language files.
foreach (const QFileInfo& file, file_dir.entryInfoList(QStringList() << "rssguard_*.qm", QDir::Files, QDir::Name)) { for (const QFileInfo& file : file_dir.entryInfoList(QStringList() << "rssguard_*.qm", QDir::Files, QDir::Name)) {
if (translator.load(file.absoluteFilePath())) { if (translator.load(file.absoluteFilePath())) {
Language new_language; Language new_language;

View file

@ -175,7 +175,7 @@ QList<Skin> SkinFactory::installedSkins() const {
QDir::NoSymLinks | QDir::NoSymLinks |
QDir::Readable)); QDir::Readable));
foreach (const QString& base_directory, skin_directories) { for (const QString& base_directory : skin_directories) {
const Skin skin_info = skinInfo(base_directory, &skin_load_ok); const Skin skin_info = skinInfo(base_directory, &skin_load_ok);
if (skin_load_ok) { if (skin_load_ok) {

View file

@ -29,7 +29,7 @@ int TextFactory::stringWidth(const QString& string, const QFontMetrics& metrics)
const QStringList lines = string.split(QL1C('\n')); const QStringList lines = string.split(QL1C('\n'));
int width = 0; int width = 0;
foreach (const QString& line, lines) { for (const QString& line : lines) {
#if QT_VERSION >= 0x050B00 // Qt >= 5.11.0 #if QT_VERSION >= 0x050B00 // Qt >= 5.11.0
int line_width = metrics.horizontalAdvance(line); int line_width = metrics.horizontalAdvance(line);
#else #else
@ -63,7 +63,7 @@ QDateTime TextFactory::parseDateTime(const QString& date_time) {
<< QSL("-hhmm") << QSL("+hh") << QSL("-hh"); << QSL("-hhmm") << QSL("+hh") << QSL("-hh");
// Iterate over patterns and check if input date/time matches the pattern. // Iterate over patterns and check if input date/time matches the pattern.
foreach (const QString& pattern, date_patterns) { for (const QString& pattern : date_patterns) {
dt = locale.toDateTime(input_date.left(pattern.size()), pattern); dt = locale.toDateTime(input_date.left(pattern.size()), pattern);
if (dt.isValid()) { if (dt.isValid()) {
@ -74,7 +74,7 @@ QDateTime TextFactory::parseDateTime(const QString& date_time) {
if (input_date.size() >= TIMEZONE_OFFSET_LIMIT) { if (input_date.size() >= TIMEZONE_OFFSET_LIMIT) {
QString offset_sanitized = input_date.mid(pattern.size()).replace(QL1S(" "), QString()); QString offset_sanitized = input_date.mid(pattern.size()).replace(QL1S(" "), QString());
foreach (const QString& pattern_t, timezone_offset_patterns) { for (const QString& pattern_t : timezone_offset_patterns) {
time_zone_offset = QTime::fromString(offset_sanitized.left(pattern_t.size()), pattern_t); time_zone_offset = QTime::fromString(offset_sanitized.left(pattern_t.size()), pattern_t);
if (time_zone_offset.isValid()) { if (time_zone_offset.isValid()) {

View file

@ -51,7 +51,7 @@ AdBlockAddSubscriptionDialog::AdBlockAddSubscriptionDialog(QWidget* parent)
<< Subscription(QSL("Anti-Adblock Killer"), << Subscription(QSL("Anti-Adblock Killer"),
QSL("https://raw.githubusercontent.com/reek/anti-adblock-killer/master/anti-adblock-killer-filters.txt")); QSL("https://raw.githubusercontent.com/reek/anti-adblock-killer/master/anti-adblock-killer-filters.txt"));
foreach (const Subscription& subscription, m_knownSubscriptions) { for (const Subscription& subscription : m_knownSubscriptions) {
m_ui->m_cmbPresets->addItem(subscription.m_title); m_ui->m_cmbPresets->addItem(subscription.m_title);
} }

View file

@ -153,7 +153,7 @@ void AdBlockDialog::load() {
return; return;
} }
foreach (AdBlockSubscription* subscription, m_manager->subscriptions()) { for (AdBlockSubscription* subscription : m_manager->subscriptions()) {
auto* tree = new AdBlockTreeWidget(subscription, m_ui->m_tabSubscriptions); auto* tree = new AdBlockTreeWidget(subscription, m_ui->m_tabSubscriptions);
m_ui->m_tabSubscriptions->addTab(tree, subscription->title()); m_ui->m_tabSubscriptions->addTab(tree, subscription->title());

View file

@ -206,7 +206,7 @@ bool AdBlockManager::removeSubscription(AdBlockSubscription* subscription) {
} }
AdBlockCustomList* AdBlockManager::customList() const { AdBlockCustomList* AdBlockManager::customList() const {
foreach (AdBlockSubscription* subscription, m_subscriptions) { for (AdBlockSubscription* subscription : m_subscriptions) {
auto* list = qobject_cast<AdBlockCustomList*>(subscription); auto* list = qobject_cast<AdBlockCustomList*>(subscription);
if (list != nullptr) { if (list != nullptr) {
@ -243,7 +243,7 @@ void AdBlockManager::load() {
QDir().mkpath(storedListsPath()); QDir().mkpath(storedListsPath());
} }
foreach (const QString& fileName, adblockDir.entryList(QStringList("*.txt"), QDir::Files)) { for (const QString& fileName : adblockDir.entryList(QStringList("*.txt"), QDir::Files)) {
if (fileName == ADBLOCK_CUSTOMLIST_NAME) { if (fileName == ADBLOCK_CUSTOMLIST_NAME) {
continue; continue;
} }
@ -279,7 +279,7 @@ void AdBlockManager::load() {
m_subscriptions.append(customList); m_subscriptions.append(customList);
// Load all subscriptions. // Load all subscriptions.
foreach (AdBlockSubscription* subscription, m_subscriptions) { for (AdBlockSubscription* subscription : m_subscriptions) {
subscription->loadSubscription(m_disabledRules); subscription->loadSubscription(m_disabledRules);
connect(subscription, SIGNAL(subscriptionChanged()), this, SLOT(updateMatcher())); connect(subscription, SIGNAL(subscriptionChanged()), this, SLOT(updateMatcher()));
} }
@ -300,7 +300,7 @@ void AdBlockManager::updateMatcher() {
} }
void AdBlockManager::updateAllSubscriptions() { void AdBlockManager::updateAllSubscriptions() {
foreach (AdBlockSubscription* subscription, m_subscriptions) { for (AdBlockSubscription* subscription : m_subscriptions) {
subscription->updateSubscription(); subscription->updateSubscription();
} }
@ -312,7 +312,7 @@ void AdBlockManager::save() {
return; return;
} }
foreach (AdBlockSubscription* subscription, m_subscriptions) { for (AdBlockSubscription* subscription : m_subscriptions) {
subscription->saveSubscription(); subscription->saveSubscription();
} }
@ -351,7 +351,7 @@ QString AdBlockManager::elementHidingRulesForDomain(const QUrl& url) const {
} }
AdBlockSubscription* AdBlockManager::subscriptionByName(const QString& name) const { AdBlockSubscription* AdBlockManager::subscriptionByName(const QString& name) const {
foreach (AdBlockSubscription* subscription, m_subscriptions) { for (AdBlockSubscription* subscription : m_subscriptions) {
if (subscription->title() == name) { if (subscription->title() == name) {
return subscription; return subscription;
} }

View file

@ -134,8 +134,8 @@ void AdBlockMatcher::update() {
QHash<QString, const AdBlockRule*> cssRulesHash; QHash<QString, const AdBlockRule*> cssRulesHash;
QVector<const AdBlockRule*> exceptionCssRules; QVector<const AdBlockRule*> exceptionCssRules;
foreach (AdBlockSubscription* subscription, m_manager->subscriptions()) { for (AdBlockSubscription* subscription : m_manager->subscriptions()) {
foreach (const AdBlockRule* rule, subscription->allRules()) { for (const AdBlockRule* rule : subscription->allRules()) {
// Don't add internally disabled rules to cache. // Don't add internally disabled rules to cache.
if (rule->isInternalDisabled()) { if (rule->isInternalDisabled()) {
continue; continue;
@ -174,7 +174,7 @@ void AdBlockMatcher::update() {
} }
} }
foreach (const AdBlockRule* rule, exceptionCssRules) { for (const AdBlockRule* rule : exceptionCssRules) {
const AdBlockRule* originalRule = cssRulesHash.value(rule->cssSelector()); const AdBlockRule* originalRule = cssRulesHash.value(rule->cssSelector());
// If we don't have this selector, the exception does nothing. // If we don't have this selector, the exception does nothing.

View file

@ -245,14 +245,14 @@ bool AdBlockRule::matchDomain(const QString& domain) const {
} }
if (m_blockedDomains.isEmpty()) { if (m_blockedDomains.isEmpty()) {
foreach (const QString& d, m_allowedDomains) { for (const QString& d : m_allowedDomains) {
if (isMatchingDomain(domain, d)) { if (isMatchingDomain(domain, d)) {
return true; return true;
} }
} }
} }
else if (m_allowedDomains.isEmpty()) { else if (m_allowedDomains.isEmpty()) {
foreach (const QString& d, m_blockedDomains) { for (const QString& d : m_blockedDomains) {
if (isMatchingDomain(domain, d)) { if (isMatchingDomain(domain, d)) {
return false; return false;
} }
@ -261,13 +261,13 @@ bool AdBlockRule::matchDomain(const QString& domain) const {
return true; return true;
} }
else { else {
foreach (const QString& d, m_blockedDomains) { for (const QString& d : m_blockedDomains) {
if (isMatchingDomain(domain, d)) { if (isMatchingDomain(domain, d)) {
return false; return false;
} }
} }
foreach (const QString& d, m_allowedDomains) { for (const QString& d : m_allowedDomains) {
if (isMatchingDomain(domain, d)) { if (isMatchingDomain(domain, d)) {
return true; return true;
} }
@ -373,7 +373,7 @@ void AdBlockRule::parseFilter() {
const QStringList options = parsedLine.mid(optionsIndex + 1).split(QL1C(','), QString::SkipEmptyParts); const QStringList options = parsedLine.mid(optionsIndex + 1).split(QL1C(','), QString::SkipEmptyParts);
int handledOptions = 0; int handledOptions = 0;
foreach (const QString& option, options) { for (const QString& option : options) {
if (option.startsWith(QL1S("domain="))) { if (option.startsWith(QL1S("domain="))) {
parseDomains(option.mid(7), QL1C('|')); parseDomains(option.mid(7), QL1C('|'));
++handledOptions; ++handledOptions;
@ -499,7 +499,7 @@ void AdBlockRule::parseFilter() {
void AdBlockRule::parseDomains(const QString& domains, const QChar& separator) { void AdBlockRule::parseDomains(const QString& domains, const QChar& separator) {
QStringList domainsList = domains.split(separator, QString::SkipEmptyParts); QStringList domainsList = domains.split(separator, QString::SkipEmptyParts);
foreach (const QString domain, domainsList) { for (const QString domain : domainsList) {
if (domain.isEmpty()) { if (domain.isEmpty()) {
continue; continue;
} }
@ -621,7 +621,7 @@ QList<QStringMatcher> AdBlockRule::createStringMatchers(const QStringList& filte
QList<QStringMatcher> matchers; QList<QStringMatcher> matchers;
matchers.reserve(filters.size()); matchers.reserve(filters.size());
foreach (const QString& filter, filters) { for (const QString& filter : filters) {
matchers.append(QStringMatcher(filter, m_caseSensitivity)); matchers.append(QStringMatcher(filter, m_caseSensitivity));
} }

View file

@ -317,7 +317,7 @@ void AdBlockCustomList::saveSubscription() {
textStream << "Url: " << url().toString() << endl; textStream << "Url: " << url().toString() << endl;
textStream << "[Adblock Plus 1.1.1]" << endl; textStream << "[Adblock Plus 1.1.1]" << endl;
foreach (const AdBlockRule* rule, m_rules) { for (const AdBlockRule* rule : m_rules) {
textStream << rule->filter() << endl; textStream << rule->filter() << endl;
} }
@ -333,7 +333,7 @@ bool AdBlockCustomList::canBeRemoved() const {
} }
bool AdBlockCustomList::containsFilter(const QString& filter) const { bool AdBlockCustomList::containsFilter(const QString& filter) const {
foreach (const AdBlockRule* rule, m_rules) { for (const AdBlockRule* rule : m_rules) {
if (rule->filter() == filter) { if (rule->filter() == filter) {
return true; return true;
} }

View file

@ -235,7 +235,7 @@ void AdBlockTreeWidget::refresh() {
const QVector<AdBlockRule*>& allRules = m_subscription->allRules(); const QVector<AdBlockRule*>& allRules = m_subscription->allRules();
int index = 0; int index = 0;
foreach (const AdBlockRule* rule, allRules) { for (const AdBlockRule* rule : allRules) {
auto* item = new QTreeWidgetItem(m_topItem); auto* item = new QTreeWidgetItem(m_topItem);
item->setText(0, rule->filter()); item->setText(0, rule->filter());

View file

@ -53,7 +53,6 @@ void Downloader::manipulateData(const QString& url,
const QString& password) { const QString& password) {
QNetworkRequest request; QNetworkRequest request;
QString non_const_url = url; QString non_const_url = url;
QHashIterator<QByteArray, QByteArray> i(m_customHeaders); QHashIterator<QByteArray, QByteArray> i(m_customHeaders);
while (i.hasNext()) { while (i.hasNext()) {
@ -102,6 +101,7 @@ void Downloader::finished() {
auto* reply = qobject_cast<QNetworkReply*>(sender()); auto* reply = qobject_cast<QNetworkReply*>(sender());
QNetworkAccessManager::Operation reply_operation = reply->operation(); QNetworkAccessManager::Operation reply_operation = reply->operation();
m_timer->stop(); m_timer->stop();
// In this phase, some part of downloading process is completed. // In this phase, some part of downloading process is completed.
@ -182,12 +182,11 @@ QList<HttpResponse> Downloader::decodeMultipartAnswer(QNetworkReply* reply) {
QString boundary = content_type.mid(content_type.indexOf(QL1S("boundary=")) + 9); QString boundary = content_type.mid(content_type.indexOf(QL1S("boundary=")) + 9);
QRegularExpression regex(QL1S("--") + boundary + QL1S("(--)?(\\r\\n)?")); QRegularExpression regex(QL1S("--") + boundary + QL1S("(--)?(\\r\\n)?"));
QStringList list = QString::fromUtf8(data).split(regex, QString::SplitBehavior::SkipEmptyParts); QStringList list = QString::fromUtf8(data).split(regex, QString::SplitBehavior::SkipEmptyParts);
QList<HttpResponse> parts; QList<HttpResponse> parts;
parts.reserve(list.size()); parts.reserve(list.size());
foreach (const QString& http_response_str, list) { for (const QString& http_response_str : list) {
// We separate headers and body. // We separate headers and body.
HttpResponse new_part; HttpResponse new_part;
int start_of_http = http_response_str.indexOf(QL1S("HTTP/1.1")); int start_of_http = http_response_str.indexOf(QL1S("HTTP/1.1"));
@ -198,7 +197,7 @@ QList<HttpResponse> Downloader::decodeMultipartAnswer(QNetworkReply* reply) {
start_of_body - start_of_headers).replace(QRegularExpression(QSL("[\\n\\r]+")), start_of_body - start_of_headers).replace(QRegularExpression(QSL("[\\n\\r]+")),
QSL("\n")); QSL("\n"));
foreach (const QString& header_line, headers.split(QL1C('\n'), QString::SplitBehavior::SkipEmptyParts)) { for (const QString& header_line : headers.split(QL1C('\n'), QString::SplitBehavior::SkipEmptyParts)) {
int index_colon = header_line.indexOf(QL1C(':')); int index_colon = header_line.indexOf(QL1C(':'));
if (index_colon > 0) { if (index_colon > 0) {

View file

@ -443,7 +443,7 @@ DownloadManager::~DownloadManager() {
int DownloadManager::activeDownloads() const { int DownloadManager::activeDownloads() const {
int count = 0; int count = 0;
foreach (const DownloadItem* download, m_downloads) { for (const DownloadItem* download : m_downloads) {
if (download->downloading()) { if (download->downloading()) {
count++; count++;
} }
@ -456,7 +456,7 @@ int DownloadManager::downloadProgress() const {
qint64 bytes_total = 0; qint64 bytes_total = 0;
qint64 bytes_received = 0; qint64 bytes_received = 0;
foreach (const DownloadItem* download, m_downloads) { for (const DownloadItem* download : m_downloads) {
if (download->downloading()) { if (download->downloading()) {
bytes_total += download->bytesTotal(); bytes_total += download->bytesTotal();
bytes_received += download->bytesReceived(); bytes_received += download->bytesReceived();
@ -787,7 +787,7 @@ QMimeData* DownloadModel::mimeData(const QModelIndexList& indexes) const {
auto* mimeData = new QMimeData(); auto* mimeData = new QMimeData();
QList<QUrl> urls; QList<QUrl> urls;
foreach (const QModelIndex& index, indexes) { for (const QModelIndex& index : indexes) {
if (!index.isValid()) { if (!index.isValid()) {
continue; continue;
} }

View file

@ -142,7 +142,7 @@ QString NetworkFactory::networkErrorText(QNetworkReply::NetworkError error_code)
QNetworkReply::NetworkError NetworkFactory::downloadIcon(const QList<QString>& urls, int timeout, QIcon& output) { QNetworkReply::NetworkError NetworkFactory::downloadIcon(const QList<QString>& urls, int timeout, QIcon& output) {
QNetworkReply::NetworkError network_result = QNetworkReply::UnknownNetworkError; QNetworkReply::NetworkError network_result = QNetworkReply::UnknownNetworkError;
foreach (const QString& url, urls) { for (const QString& url : urls) {
const QString google_s2_with_url = QString("http://www.google.com/s2/favicons?domain=%1").arg(QUrl(url).host()); const QString google_s2_with_url = QString("http://www.google.com/s2/favicons?domain=%1").arg(QUrl(url).host());
QByteArray icon_data; QByteArray icon_data;
@ -170,7 +170,7 @@ Downloader* NetworkFactory::performAsyncNetworkOperation(const QString& url, int
QObject::connect(downloader, &Downloader::completed, downloader, &Downloader::deleteLater); QObject::connect(downloader, &Downloader::completed, downloader, &Downloader::deleteLater);
foreach (const auto& header, additional_headers) { for (const auto& header : additional_headers) {
if (!header.first.isEmpty()) { if (!header.first.isEmpty()) {
downloader->appendRawHeader(header.first, header.second); downloader->appendRawHeader(header.first, header.second);
} }
@ -192,7 +192,7 @@ NetworkResult NetworkFactory::performNetworkOperation(const QString& url, int ti
// We need to quit event loop when the download finishes. // We need to quit event loop when the download finishes.
QObject::connect(&downloader, &Downloader::completed, &loop, &QEventLoop::quit); QObject::connect(&downloader, &Downloader::completed, &loop, &QEventLoop::quit);
foreach (const auto& header, additional_headers) { for (const auto& header : additional_headers) {
if (!header.first.isEmpty()) { if (!header.first.isEmpty()) {
downloader.appendRawHeader(header.first, header.second); downloader.appendRawHeader(header.first, header.second);
} }
@ -223,7 +223,7 @@ NetworkResult NetworkFactory::performNetworkOperation(const QString& url,
// We need to quit event loop when the download finishes. // We need to quit event loop when the download finishes.
QObject::connect(&downloader, &Downloader::completed, &loop, &QEventLoop::quit); QObject::connect(&downloader, &Downloader::completed, &loop, &QEventLoop::quit);
foreach (const auto& header, additional_headers) { for (const auto& header : additional_headers) {
if (!header.first.isEmpty()) { if (!header.first.isEmpty()) {
downloader.appendRawHeader(header.first, header.second); downloader.appendRawHeader(header.first, header.second);
} }

View file

@ -33,7 +33,7 @@ void NetworkUrlInterceptor::interceptRequest(QWebEngineUrlRequestInfo& info) {
// NOTE: Here we can add custom headers for each webengine request, for example "User-Agent". // NOTE: Here we can add custom headers for each webengine request, for example "User-Agent".
foreach (UrlInterceptor* interceptor, m_interceptors) { for (UrlInterceptor* interceptor : m_interceptors) {
interceptor->interceptRequest(info); interceptor->interceptRequest(info);
} }
} }

View file

@ -33,7 +33,7 @@ void AccountCheckModel::setRootItem(RootItem* root_item) {
void AccountCheckModel::checkAllItems() { void AccountCheckModel::checkAllItems() {
if (m_rootItem != nullptr) { if (m_rootItem != nullptr) {
foreach (RootItem* root_child, m_rootItem->childItems()) { for (RootItem* root_child : m_rootItem->childItems()) {
if (root_child->kind() == RootItemKind::Feed || root_child->kind() == RootItemKind::Category) { if (root_child->kind() == RootItemKind::Feed || root_child->kind() == RootItemKind::Category) {
setItemChecked(root_child, Qt::Checked); setItemChecked(root_child, Qt::Checked);
} }
@ -43,7 +43,7 @@ void AccountCheckModel::checkAllItems() {
void AccountCheckModel::uncheckAllItems() { void AccountCheckModel::uncheckAllItems() {
if (m_rootItem != nullptr) { if (m_rootItem != nullptr) {
foreach (RootItem* root_child, m_rootItem->childItems()) { for (RootItem* root_child : m_rootItem->childItems()) {
if (root_child->kind() == RootItemKind::Feed || root_child->kind() == RootItemKind::Category) { if (root_child->kind() == RootItemKind::Feed || root_child->kind() == RootItemKind::Category) {
setData(indexForItem(root_child), Qt::Unchecked, Qt::CheckStateRole); setData(indexForItem(root_child), Qt::Unchecked, Qt::CheckStateRole);
} }
@ -206,7 +206,7 @@ bool AccountCheckModel::setData(const QModelIndex& index, const QVariant& value,
} }
// Set new data for all descendants of this actual item. // Set new data for all descendants of this actual item.
foreach (RootItem* child, item->childItems()) { for (RootItem* child : item->childItems()) {
setData(indexForItem(child), value, Qt::CheckStateRole); setData(indexForItem(child), value, Qt::CheckStateRole);
} }
@ -223,7 +223,7 @@ bool AccountCheckModel::setData(const QModelIndex& index, const QVariant& value,
// Check children of this new parent item. // Check children of this new parent item.
Qt::CheckState parent_state = Qt::Unchecked; Qt::CheckState parent_state = Qt::Unchecked;
foreach (RootItem* child_of_parent, item->childItems()) { for (RootItem* child_of_parent : item->childItems()) {
if (m_checkStates.contains(child_of_parent) && m_checkStates[child_of_parent] == Qt::Checked) { if (m_checkStates.contains(child_of_parent) && m_checkStates[child_of_parent] == Qt::Checked) {
// We found out, that some child of this item is checked, // We found out, that some child of this item is checked,
// therefore this item must be checked too. // therefore this item must be checked too.

View file

@ -37,7 +37,7 @@ Category::~Category() = default;
void Category::updateCounts(bool including_total_count) { void Category::updateCounts(bool including_total_count) {
QList<Feed*> feeds; QList<Feed*> feeds;
foreach (RootItem* child, getSubTree()) { for (RootItem* child : getSubTree()) {
if (child->kind() == RootItemKind::Feed) { if (child->kind() == RootItemKind::Feed) {
feeds.append(child->toFeed()); feeds.append(child->toFeed());
} }
@ -60,7 +60,7 @@ void Category::updateCounts(bool including_total_count) {
&ok); &ok);
if (ok) { if (ok) {
foreach (Feed* feed, feeds) { for (Feed* feed : feeds) {
if (counts.contains(feed->customId())) { if (counts.contains(feed->customId())) {
feed->setCountOfUnreadMessages(counts.value(feed->customId()).first); feed->setCountOfUnreadMessages(counts.value(feed->customId()).first);

View file

@ -324,7 +324,7 @@ void FormFeedDetails::initialize() {
const QList<QByteArray> encodings = QTextCodec::availableCodecs(); const QList<QByteArray> encodings = QTextCodec::availableCodecs();
QStringList encoded_encodings; QStringList encoded_encodings;
foreach (const QByteArray& encoding, encodings) { for (const QByteArray& encoding : encodings) {
encoded_encodings.append(encoding); encoded_encodings.append(encoding);
} }
@ -383,7 +383,7 @@ void FormFeedDetails::loadCategories(const QList<Category*>& categories, RootIte
root_item->title(), root_item->title(),
QVariant::fromValue((void*) root_item)); QVariant::fromValue((void*) root_item));
foreach (Category* category, categories) { for (Category* category : categories) {
m_ui->m_cmbParentCategory->addItem(category->icon(), m_ui->m_cmbParentCategory->addItem(category->icon(),
category->title(), category->title(),
QVariant::fromValue((void*) category)); QVariant::fromValue((void*) category));

View file

@ -67,7 +67,7 @@ bool RootItem::deleteViaGui() {
bool RootItem::markAsReadUnread(ReadStatus status) { bool RootItem::markAsReadUnread(ReadStatus status) {
bool result = true; bool result = true;
foreach (RootItem* child, m_childItems) { for (RootItem* child : m_childItems) {
result &= child->markAsReadUnread(status); result &= child->markAsReadUnread(status);
} }
@ -77,7 +77,7 @@ bool RootItem::markAsReadUnread(ReadStatus status) {
QList<Message> RootItem::undeletedMessages() const { QList<Message> RootItem::undeletedMessages() const {
QList<Message> messages; QList<Message> messages;
foreach (RootItem* child, m_childItems) { for (RootItem* child : m_childItems) {
messages.append(child->undeletedMessages()); messages.append(child->undeletedMessages());
} }
@ -87,7 +87,7 @@ QList<Message> RootItem::undeletedMessages() const {
bool RootItem::cleanMessages(bool clear_only_read) { bool RootItem::cleanMessages(bool clear_only_read) {
bool result = true; bool result = true;
foreach (RootItem* child, m_childItems) { for (RootItem* child : m_childItems) {
if (child->kind() != RootItemKind::Bin) { if (child->kind() != RootItemKind::Bin) {
result &= child->cleanMessages(clear_only_read); result &= child->cleanMessages(clear_only_read);
} }
@ -97,7 +97,7 @@ bool RootItem::cleanMessages(bool clear_only_read) {
} }
void RootItem::updateCounts(bool including_total_count) { void RootItem::updateCounts(bool including_total_count) {
foreach (RootItem* child, m_childItems) { for (RootItem* child : m_childItems) {
child->updateCounts(including_total_count); child->updateCounts(including_total_count);
} }
} }
@ -212,7 +212,7 @@ bool RootItem::performDragDropChange(RootItem* target_item) {
int RootItem::countOfAllMessages() const { int RootItem::countOfAllMessages() const {
int total_count = 0; int total_count = 0;
foreach (RootItem* child_item, m_childItems) { for (RootItem* child_item : m_childItems) {
total_count += child_item->countOfAllMessages(); total_count += child_item->countOfAllMessages();
} }
@ -460,7 +460,7 @@ void RootItem::setKeepOnTop(bool keep_on_top) {
int RootItem::countOfUnreadMessages() const { int RootItem::countOfUnreadMessages() const {
int total_count = 0; int total_count = 0;
foreach (RootItem* child_item, m_childItems) { for (RootItem* child_item : m_childItems) {
total_count += child_item->countOfUnreadMessages(); total_count += child_item->countOfUnreadMessages();
} }

View file

@ -83,7 +83,7 @@ void ServiceRoot::stop() {}
void ServiceRoot::updateCounts(bool including_total_count) { void ServiceRoot::updateCounts(bool including_total_count) {
QList<Feed*> feeds; QList<Feed*> feeds;
foreach (RootItem* child, getSubTree()) { for (RootItem* child : getSubTree()) {
if (child->kind() == RootItemKind::Feed) { if (child->kind() == RootItemKind::Feed) {
feeds.append(child->toFeed()); feeds.append(child->toFeed());
} }
@ -102,7 +102,7 @@ void ServiceRoot::updateCounts(bool including_total_count) {
QMap<QString, QPair<int, int>> counts = DatabaseQueries::getMessageCountsForAccount(database, accountId(), including_total_count, &ok); QMap<QString, QPair<int, int>> counts = DatabaseQueries::getMessageCountsForAccount(database, accountId(), including_total_count, &ok);
if (ok) { if (ok) {
foreach (Feed* feed, feeds) { for (Feed* feed : feeds) {
if (counts.contains(feed->customId())) { if (counts.contains(feed->customId())) {
feed->setCountOfUnreadMessages(counts.value(feed->customId()).first); feed->setCountOfUnreadMessages(counts.value(feed->customId()).first);
@ -137,7 +137,7 @@ void ServiceRoot::removeOldFeedTree(bool including_messages) {
} }
void ServiceRoot::cleanAllItems() { void ServiceRoot::cleanAllItems() {
foreach (RootItem* top_level_item, childItems()) { for (RootItem* top_level_item : childItems()) {
if (top_level_item->kind() != RootItemKind::Bin) { if (top_level_item->kind() != RootItemKind::Bin) {
requestItemRemoval(top_level_item); requestItemRemoval(top_level_item);
} }
@ -151,7 +151,7 @@ bool ServiceRoot::cleanFeeds(QList<Feed*> items, bool clean_read_only) {
// Messages are cleared, now inform model about need to reload data. // Messages are cleared, now inform model about need to reload data.
QList<RootItem*> itemss; QList<RootItem*> itemss;
foreach (Feed* feed, items) { for (Feed* feed : items) {
feed->updateCounts(true); feed->updateCounts(true);
itemss.append(feed); itemss.append(feed);
} }
@ -239,7 +239,7 @@ void ServiceRoot::addNewCategory() {}
QMap<QString, QVariant> ServiceRoot::storeCustomFeedsData() { QMap<QString, QVariant> ServiceRoot::storeCustomFeedsData() {
QMap<QString, QVariant> custom_data; QMap<QString, QVariant> custom_data;
foreach (const Feed* feed, getSubTreeFeeds()) { for (const Feed* feed : getSubTreeFeeds()) {
QVariantMap feed_custom_data; QVariantMap feed_custom_data;
feed_custom_data.insert(QSL("auto_update_interval"), feed->autoUpdateInitialInterval()); feed_custom_data.insert(QSL("auto_update_interval"), feed->autoUpdateInitialInterval());
@ -294,7 +294,7 @@ void ServiceRoot::syncIn() {
// so remove left over messages. // so remove left over messages.
removeLeftOverMessages(); removeLeftOverMessages();
foreach (RootItem* top_level_item, new_tree->childItems()) { for (RootItem* top_level_item : new_tree->childItems()) {
top_level_item->setParent(nullptr); top_level_item->setParent(nullptr);
requestItemReassignment(top_level_item, this); requestItemReassignment(top_level_item, this);
} }
@ -309,7 +309,7 @@ void ServiceRoot::syncIn() {
// Now we must refresh expand states. // Now we must refresh expand states.
QList<RootItem*> items_to_expand; QList<RootItem*> items_to_expand;
foreach (RootItem* item, all_items) { for (RootItem* item : all_items) {
if (qApp->settings()->value(GROUP(CategoriesExpandStates), item->hashCode(), item->childCount() > 0).toBool()) { if (qApp->settings()->value(GROUP(CategoriesExpandStates), item->hashCode(), item->childCount() > 0).toBool()) {
items_to_expand.append(item); items_to_expand.append(item);
} }
@ -340,7 +340,7 @@ QStringList ServiceRoot::customIDSOfMessagesForItem(RootItem* item) {
switch (item->kind()) { switch (item->kind()) {
case RootItemKind::Category: { case RootItemKind::Category: {
foreach (RootItem* child, item->childItems()) { for (RootItem* child : item->childItems()) {
list.append(customIDSOfMessagesForItem(child)); list.append(customIDSOfMessagesForItem(child));
} }
@ -383,7 +383,7 @@ bool ServiceRoot::markFeedsReadUnread(QList<Feed*> items, RootItem::ReadStatus r
if (DatabaseQueries::markFeedsReadUnread(database, textualFeedIds(items), accountId(), read)) { if (DatabaseQueries::markFeedsReadUnread(database, textualFeedIds(items), accountId(), read)) {
QList<RootItem*> itemss; QList<RootItem*> itemss;
foreach (Feed* feed, items) { for (Feed* feed : items) {
feed->updateCounts(false); feed->updateCounts(false);
itemss.append(feed); itemss.append(feed);
} }
@ -402,7 +402,7 @@ QStringList ServiceRoot::textualFeedUrls(const QList<Feed*>& feeds) const {
stringy_urls.reserve(feeds.size()); stringy_urls.reserve(feeds.size());
foreach (const Feed* feed, feeds) { for (const Feed* feed : feeds) {
stringy_urls.append(!feed->url().isEmpty() ? feed->url() : QL1S("no-url")); stringy_urls.append(!feed->url().isEmpty() ? feed->url() : QL1S("no-url"));
} }
@ -414,7 +414,7 @@ QStringList ServiceRoot::textualFeedIds(const QList<Feed*>& feeds) const {
stringy_ids.reserve(feeds.size()); stringy_ids.reserve(feeds.size());
foreach (const Feed* feed, feeds) { for (const Feed* feed : feeds) {
stringy_ids.append(QString("'%1'").arg(feed->customId())); stringy_ids.append(QString("'%1'").arg(feed->customId()));
} }
@ -434,7 +434,7 @@ QStringList ServiceRoot::customIDsOfMessages(const QList<ImportanceChange>& chan
QStringList ServiceRoot::customIDsOfMessages(const QList<Message>& messages) { QStringList ServiceRoot::customIDsOfMessages(const QList<Message>& messages) {
QStringList list; QStringList list;
foreach (const Message& message, messages) { for (const Message& message : messages) {
list.append(message.m_customId); list.append(message.m_customId);
} }
@ -500,7 +500,7 @@ bool ServiceRoot::onBeforeSwitchMessageImportance(RootItem* selected_item, const
QList<Message> mark_starred_msgs; QList<Message> mark_starred_msgs;
QList<Message> mark_unstarred_msgs; QList<Message> mark_unstarred_msgs;
foreach (const ImportanceChange& pair, changes) { for (const ImportanceChange& pair : changes) {
if (pair.second == RootItem::Important) { if (pair.second == RootItem::Important) {
mark_starred_msgs.append(pair.first); mark_starred_msgs.append(pair.first);
} }
@ -574,7 +574,7 @@ bool ServiceRoot::onAfterMessagesRestoredFromBin(RootItem* selected_item, const
void ServiceRoot::assembleFeeds(Assignment feeds) { void ServiceRoot::assembleFeeds(Assignment feeds) {
QHash<int, Category*> categories = getHashedSubTreeCategories(); QHash<int, Category*> categories = getHashedSubTreeCategories();
foreach (const AssignmentItem& feed, feeds) { for (const AssignmentItem& feed : feeds) {
if (feed.first == NO_PARENT_CATEGORY) { if (feed.first == NO_PARENT_CATEGORY) {
// This is top-level feed, add it to the root item. // This is top-level feed, add it to the root item.
appendChild(feed.second); appendChild(feed.second);

View file

@ -65,7 +65,7 @@ void GmailServiceRoot::loadFromDatabase() {
assembleCategories(categories); assembleCategories(categories);
assembleFeeds(feeds); assembleFeeds(feeds);
foreach (RootItem* feed, childItems()) { for (RootItem* feed : childItems()) {
if (feed->customId() == QL1S("INBOX")) { if (feed->customId() == QL1S("INBOX")) {
feed->setKeepOnTop(true); feed->setKeepOnTop(true);
} }
@ -214,7 +214,7 @@ void GmailServiceRoot::saveAllCachedData(bool async) {
if (!messages.isEmpty()) { if (!messages.isEmpty()) {
QStringList custom_ids; QStringList custom_ids;
foreach (const Message& msg, messages) { for (const Message& msg : messages) {
custom_ids.append(msg.m_customId); custom_ids.append(msg.m_customId);
} }

View file

@ -289,14 +289,14 @@ void GmailNetworkFactory::onAuthFailed() {
bool GmailNetworkFactory::fillFullMessage(Message& msg, const QJsonObject& json, const QString& feed_id) { bool GmailNetworkFactory::fillFullMessage(Message& msg, const QJsonObject& json, const QString& feed_id) {
QHash<QString, QString> headers; QHash<QString, QString> headers;
foreach (const QJsonValue& header, json["payload"].toObject()["headers"].toArray()) { for (const QJsonValue& header : json["payload"].toObject()["headers"].toArray()) {
headers.insert(header.toObject()["name"].toString(), header.toObject()["value"].toString()); headers.insert(header.toObject()["name"].toString(), header.toObject()["value"].toString());
} }
msg.m_isRead = true; msg.m_isRead = true;
// Assign correct main labels/states. // Assign correct main labels/states.
foreach (const QVariant& label, json["labelIds"].toArray().toVariantList()) { for (const QVariant& label : json["labelIds"].toArray().toVariantList()) {
QString lbl = label.toString(); QString lbl = label.toString();
if (lbl == QL1S(GMAIL_SYSTEM_LABEL_UNREAD)) { if (lbl == QL1S(GMAIL_SYSTEM_LABEL_UNREAD)) {
@ -338,7 +338,7 @@ bool GmailNetworkFactory::fillFullMessage(Message& msg, const QJsonObject& json,
parts.append(json["payload"].toObject()); parts.append(json["payload"].toObject());
} }
foreach (const QJsonValue& part, parts) { for (const QJsonValue& part : parts) {
QJsonObject part_obj = part.toObject(); QJsonObject part_obj = part.toObject();
QJsonObject body = part_obj["body"].toObject(); QJsonObject body = part_obj["body"].toObject();
QString filename = part_obj["filename"].toString(); QString filename = part_obj["filename"].toString();
@ -380,7 +380,7 @@ bool GmailNetworkFactory::obtainAndDecodeFullMessages(const QList<Message>& lite
QHash<QString, Message> msgs; QHash<QString, Message> msgs;
foreach (const Message& msg, lite_messages) { for (const Message& msg : lite_messages) {
QHttpPart part; QHttpPart part;
part.setRawHeader(HTTP_HEADERS_CONTENT_TYPE, GMAIL_CONTENT_TYPE_HTTP); part.setRawHeader(HTTP_HEADERS_CONTENT_TYPE, GMAIL_CONTENT_TYPE_HTTP);
@ -413,7 +413,7 @@ bool GmailNetworkFactory::obtainAndDecodeFullMessages(const QList<Message>& lite
if (res.first == QNetworkReply::NetworkError::NoError) { if (res.first == QNetworkReply::NetworkError::NoError) {
// We parse each part of HTTP response (it contains HTTP headers and payload with msg full data). // We parse each part of HTTP response (it contains HTTP headers and payload with msg full data).
foreach (const HttpResponse& part, output) { for (const HttpResponse& part : output) {
QJsonObject msg_doc = QJsonDocument::fromJson(part.body().toUtf8()).object(); QJsonObject msg_doc = QJsonDocument::fromJson(part.body().toUtf8()).object();
QString msg_id = msg_doc["id"].toString(); QString msg_id = msg_doc["id"].toString();
@ -442,7 +442,7 @@ QList<Message> GmailNetworkFactory::decodeLiteMessages(const QString& messages_j
next_page_token = top_object["nextPageToken"].toString(); next_page_token = top_object["nextPageToken"].toString();
messages.reserve(json_msgs.count()); messages.reserve(json_msgs.count());
foreach (const QJsonValue& obj, json_msgs) { for (const QJsonValue& obj : json_msgs) {
auto message_obj = obj.toObject(); auto message_obj = obj.toObject();
Message message; Message message;
@ -463,7 +463,7 @@ QList<Message> GmailNetworkFactory::decodeLiteMessages(const QString& messages_j
QMap<QString, RootItem*> cats; QMap<QString, RootItem*> cats;
cats.insert(QString(), parent); cats.insert(QString(), parent);
foreach (const QJsonValue& obj, json) { for (const QJsonValue& obj : json) {
auto label = obj.toObject(); auto label = obj.toObject();
QString label_id = label["id"].toString(); QString label_id = label["id"].toString();
QString label_name = label["name"].toString(); QString label_name = label["name"].toString();
@ -499,7 +499,7 @@ QList<Message> GmailNetworkFactory::decodeLiteMessages(const QString& messages_j
json = QJsonDocument::fromJson(feeds.toUtf8()).object()["subscriptions"].toArray(); json = QJsonDocument::fromJson(feeds.toUtf8()).object()["subscriptions"].toArray();
foreach (const QJsonValue& obj, json) { for (const QJsonValue& obj : json) {
auto subscription = obj.toObject(); auto subscription = obj.toObject();
QString id = subscription["id"].toString(); QString id = subscription["id"].toString();
QString title = subscription["title"].toString(); QString title = subscription["title"].toString();
@ -507,7 +507,7 @@ QList<Message> GmailNetworkFactory::decodeLiteMessages(const QString& messages_j
QString parent_label; QString parent_label;
QJsonArray categories = subscription["categories"].toArray(); QJsonArray categories = subscription["categories"].toArray();
foreach (const QJsonValue& cat, categories) { for (const QJsonValue& cat : categories) {
QString potential_id = cat.toObject()["id"].toString(); QString potential_id = cat.toObject()["id"].toString();
if (potential_id.contains(QSL("/label/"))) { if (potential_id.contains(QSL("/label/"))) {

View file

@ -192,7 +192,7 @@ void InoreaderServiceRoot::saveAllCachedData(bool async) {
if (!messages.isEmpty()) { if (!messages.isEmpty()) {
QStringList custom_ids; QStringList custom_ids;
foreach (const Message& msg, messages) { for (const Message& msg : messages) {
custom_ids.append(msg.m_customId); custom_ids.append(msg.m_customId);
} }

View file

@ -162,7 +162,7 @@ void InoreaderNetworkFactory::markMessagesRead(RootItem::ReadStatus status, cons
QStringList trimmed_ids; QStringList trimmed_ids;
QRegularExpression regex_short_id(QSL("[0-9a-zA-Z]+$")); QRegularExpression regex_short_id(QSL("[0-9a-zA-Z]+$"));
foreach (const QString& id, custom_ids) { for (const QString& id : custom_ids) {
QString simplified_id = regex_short_id.match(id).captured(); QString simplified_id = regex_short_id.match(id).captured();
trimmed_ids.append(QString("i=") + simplified_id); trimmed_ids.append(QString("i=") + simplified_id);
@ -230,7 +230,7 @@ void InoreaderNetworkFactory::markMessagesStarred(RootItem::Importance importanc
QStringList trimmed_ids; QStringList trimmed_ids;
QRegularExpression regex_short_id(QSL("[0-9a-zA-Z]+$")); QRegularExpression regex_short_id(QSL("[0-9a-zA-Z]+$"));
foreach (const QString& id, custom_ids) { for (const QString& id : custom_ids) {
QString simplified_id = regex_short_id.match(id).captured(); QString simplified_id = regex_short_id.match(id).captured();
trimmed_ids.append(QString("i=") + simplified_id); trimmed_ids.append(QString("i=") + simplified_id);
@ -305,7 +305,7 @@ QList<Message> InoreaderNetworkFactory::decodeMessages(const QString& messages_j
messages.reserve(json.count()); messages.reserve(json.count());
foreach (const QJsonValue& obj, json) { for (const QJsonValue& obj : json) {
auto message_obj = obj.toObject(); auto message_obj = obj.toObject();
Message message; Message message;
@ -319,7 +319,7 @@ QList<Message> InoreaderNetworkFactory::decodeMessages(const QString& messages_j
auto enclosures = message_obj["enclosure"].toArray(); auto enclosures = message_obj["enclosure"].toArray();
auto categories = message_obj["categories"].toArray(); auto categories = message_obj["categories"].toArray();
foreach (const QJsonValue& alt, alternates) { for (const QJsonValue& alt : alternates) {
auto alt_obj = alt.toObject(); auto alt_obj = alt.toObject();
QString mime = alt_obj["type"].toString(); QString mime = alt_obj["type"].toString();
QString href = alt_obj["href"].toString(); QString href = alt_obj["href"].toString();
@ -332,7 +332,7 @@ QList<Message> InoreaderNetworkFactory::decodeMessages(const QString& messages_j
} }
} }
foreach (const QJsonValue& enc, enclosures) { for (const QJsonValue& enc : enclosures) {
auto enc_obj = enc.toObject(); auto enc_obj = enc.toObject();
QString mime = enc_obj["type"].toString(); QString mime = enc_obj["type"].toString();
QString href = enc_obj["href"].toString(); QString href = enc_obj["href"].toString();
@ -340,7 +340,7 @@ QList<Message> InoreaderNetworkFactory::decodeMessages(const QString& messages_j
message.m_enclosures.append(Enclosure(href, mime)); message.m_enclosures.append(Enclosure(href, mime));
} }
foreach (const QJsonValue& cat, categories) { for (const QJsonValue& cat : categories) {
QString category = cat.toString(); QString category = cat.toString();
if (category.contains(INOREADER_STATE_READ)) { if (category.contains(INOREADER_STATE_READ)) {
@ -367,7 +367,7 @@ RootItem* InoreaderNetworkFactory::decodeFeedCategoriesData(const QString& categ
QMap<QString, RootItem*> cats; QMap<QString, RootItem*> cats;
cats.insert(QString(), parent); cats.insert(QString(), parent);
foreach (const QJsonValue& obj, json) { for (const QJsonValue& obj : json) {
auto label = obj.toObject(); auto label = obj.toObject();
QString label_id = label["id"].toString(); QString label_id = label["id"].toString();
@ -388,7 +388,7 @@ RootItem* InoreaderNetworkFactory::decodeFeedCategoriesData(const QString& categ
json = QJsonDocument::fromJson(feeds.toUtf8()).object()["subscriptions"].toArray(); json = QJsonDocument::fromJson(feeds.toUtf8()).object()["subscriptions"].toArray();
foreach (const QJsonValue& obj, json) { for (const QJsonValue& obj : json) {
auto subscription = obj.toObject(); auto subscription = obj.toObject();
QString id = subscription["id"].toString(); QString id = subscription["id"].toString();
QString title = subscription["title"].toString(); QString title = subscription["title"].toString();
@ -396,7 +396,7 @@ RootItem* InoreaderNetworkFactory::decodeFeedCategoriesData(const QString& categ
QString parent_label; QString parent_label;
QJsonArray categories = subscription["categories"].toArray(); QJsonArray categories = subscription["categories"].toArray();
foreach (const QJsonValue& cat, categories) { for (const QJsonValue& cat : categories) {
QString potential_id = cat.toObject()["id"].toString(); QString potential_id = cat.toObject()["id"].toString();
if (potential_id.contains(QSL("/label/"))) { if (potential_id.contains(QSL("/label/"))) {

View file

@ -334,7 +334,7 @@ void OwnCloudNetworkFactory::markMessagesRead(RootItem::ReadStatus status, const
final_url = m_fixedUrl + OWNCLOUD_API_PATH + "items/unread/multiple"; final_url = m_fixedUrl + OWNCLOUD_API_PATH + "items/unread/multiple";
} }
foreach (const QString& id, custom_ids) { for (const QString& id : custom_ids) {
ids.append(QJsonValue(id.toInt())); ids.append(QJsonValue(id.toInt()));
} }
@ -527,7 +527,7 @@ RootItem* OwnCloudGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons)
cats.insert(QSL("0"), parent); cats.insert(QSL("0"), parent);
// Process categories first, then process feeds. // Process categories first, then process feeds.
foreach (const QJsonValue& cat, QJsonDocument::fromJson(m_contentCategories.toUtf8()).object()["folders"].toArray()) { for (const QJsonValue& cat : QJsonDocument::fromJson(m_contentCategories.toUtf8()).object()["folders"].toArray()) {
QJsonObject item = cat.toObject(); QJsonObject item = cat.toObject();
auto* category = new Category(); auto* category = new Category();
@ -540,7 +540,7 @@ RootItem* OwnCloudGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons)
} }
// We have categories added, now add all feeds. // We have categories added, now add all feeds.
foreach (const QJsonValue& fed, QJsonDocument::fromJson(m_contentFeeds.toUtf8()).object()["feeds"].toArray()) { for (const QJsonValue& fed : QJsonDocument::fromJson(m_contentFeeds.toUtf8()).object()["feeds"].toArray()) {
QJsonObject item = fed.toObject(); QJsonObject item = fed.toObject();
auto* feed = new OwnCloudFeed(); auto* feed = new OwnCloudFeed();
@ -580,7 +580,7 @@ OwnCloudGetMessagesResponse::~OwnCloudGetMessagesResponse() = default;
QList<Message>OwnCloudGetMessagesResponse::messages() const { QList<Message>OwnCloudGetMessagesResponse::messages() const {
QList<Message>msgs; QList<Message>msgs;
foreach (const QJsonValue& message, m_rawContent["items"].toArray()) { for (const QJsonValue& message : m_rawContent["items"].toArray()) {
QJsonObject message_map = message.toObject(); QJsonObject message_map = message.toObject();
Message msg; Message msg;

View file

@ -116,7 +116,7 @@ void OwnCloudServiceRoot::saveAllCachedData(bool async) {
if (!messages.isEmpty()) { if (!messages.isEmpty()) {
QStringList feed_ids, guid_hashes; QStringList feed_ids, guid_hashes;
foreach (const Message& msg, messages) { for (const Message& msg : messages) {
feed_ids.append(msg.m_feedId); feed_ids.append(msg.m_feedId);
guid_hashes.append(msg.m_customHash); guid_hashes.append(msg.m_customHash);
} }

View file

@ -92,7 +92,7 @@ QStringList FeedParser::textsFromPath(const QDomElement& element, const QString&
QList<QDomElement> next_elements; QList<QDomElement> next_elements;
QString next_local_name = paths.takeFirst(); QString next_local_name = paths.takeFirst();
foreach (const QDomElement& elem, current_elements) { for (const QDomElement& elem : current_elements) {
QDomNodeList elements = elem.elementsByTagNameNS(namespace_uri, next_local_name); QDomNodeList elements = elem.elementsByTagNameNS(namespace_uri, next_local_name);
for (int i = 0; i < elements.size(); i++) { for (int i = 0; i < elements.size(); i++) {
@ -112,7 +112,7 @@ QStringList FeedParser::textsFromPath(const QDomElement& element, const QString&
} }
if (!current_elements.isEmpty()) { if (!current_elements.isEmpty()) {
foreach (const QDomElement& elem, current_elements) { for (const QDomElement& elem : current_elements) {
result.append(elem.text()); result.append(elem.text());
} }
} }

View file

@ -222,7 +222,7 @@ void FormStandardCategoryDetails::loadCategories(const QList<Category*>& categor
root_item->title(), root_item->title(),
QVariant::fromValue((void*) root_item)); QVariant::fromValue((void*) root_item));
foreach (Category* category, categories) { for (Category* category : categories) {
if (input_category != nullptr && (category == input_category || category->isChildOf(input_category))) { if (input_category != nullptr && (category == input_category || category->isChildOf(input_category))) {
// This category cannot be selected as the new // This category cannot be selected as the new
// parent for currently edited category, so // parent for currently edited category, so

View file

@ -288,7 +288,7 @@ void FormStandardImportExport::importFeeds() {
void FormStandardImportExport::loadCategories(const QList<Category*>& categories, RootItem* root_item) { void FormStandardImportExport::loadCategories(const QList<Category*>& categories, RootItem* root_item) {
m_ui->m_cmbRootNode->addItem(root_item->icon(), root_item->title(), QVariant::fromValue((void*) root_item)); m_ui->m_cmbRootNode->addItem(root_item->icon(), root_item->title(), QVariant::fromValue((void*) root_item));
foreach (Category* category, categories) { for (Category* category : categories) {
m_ui->m_cmbRootNode->addItem(category->icon(), category->title(), QVariant::fromValue((void*) category)); m_ui->m_cmbRootNode->addItem(category->icon(), category->title(), QVariant::fromValue((void*) category));
} }
} }

View file

@ -72,7 +72,7 @@ bool StandardCategory::removeItself() {
// Remove all child items (feeds and categories) // Remove all child items (feeds and categories)
// from the database. // from the database.
foreach (RootItem* child, childItems()) { for (RootItem* child : childItems()) {
if (child->kind() == RootItemKind::Category) { if (child->kind() == RootItemKind::Category) {
children_removed &= dynamic_cast<StandardCategory*>(child)->removeItself(); children_removed &= dynamic_cast<StandardCategory*>(child)->removeItself();
} }

View file

@ -63,7 +63,7 @@ bool FeedsImportExportModel::exportToOMPL20(QByteArray& result) {
QDomElement active_element = elements_to_use.pop(); QDomElement active_element = elements_to_use.pop();
RootItem* active_item = items_to_process.pop(); RootItem* active_item = items_to_process.pop();
foreach (RootItem* child_item, active_item->childItems()) { for (RootItem* child_item : active_item->childItems()) {
if (!isItemChecked(child_item)) { if (!isItemChecked(child_item)) {
continue; continue;
} }
@ -261,7 +261,7 @@ void FeedsImportExportModel::importAsOPML20(const QByteArray& data, bool fetch_m
} }
bool FeedsImportExportModel::exportToTxtURLPerLine(QByteArray& result) { bool FeedsImportExportModel::exportToTxtURLPerLine(QByteArray& result) {
foreach (const Feed* const feed, m_rootItem->getSubTreeFeeds()) { for (const Feed* const feed : m_rootItem->getSubTreeFeeds()) {
result += feed->url() + QL1S("\n"); result += feed->url() + QL1S("\n");
} }
@ -279,7 +279,7 @@ void FeedsImportExportModel::importAsTxtURLPerLine(const QByteArray& data, bool
QList<QByteArray> urls = data.split('\n'); QList<QByteArray> urls = data.split('\n');
foreach (const QByteArray& url, urls) { for (const QByteArray& url : urls) {
if (!url.isEmpty()) { if (!url.isEmpty()) {
QPair<StandardFeed*, QNetworkReply::NetworkError> guessed; QPair<StandardFeed*, QNetworkReply::NetworkError> guessed;

View file

@ -143,7 +143,7 @@ void StandardServiceRoot::loadFromDatabase() {
} }
void StandardServiceRoot::checkArgumentsForFeedAdding() { void StandardServiceRoot::checkArgumentsForFeedAdding() {
foreach (const QString& arg, qApp->arguments().mid(1)) { for (const QString& arg : qApp->arguments().mid(1)) {
checkArgumentForFeedAdding(arg); checkArgumentForFeedAdding(arg);
} }
} }
@ -195,7 +195,7 @@ bool StandardServiceRoot::mergeImportExportModel(FeedsImportExportModel* model,
RootItem* target_parent = original_parents.pop(); RootItem* target_parent = original_parents.pop();
RootItem* source_parent = new_parents.pop(); RootItem* source_parent = new_parents.pop();
foreach (RootItem* source_item, source_parent->childItems()) { for (RootItem* source_item : source_parent->childItems()) {
if (!model->isItemChecked(source_item)) { if (!model->isItemChecked(source_item)) {
// We can skip this item, because it is not checked and should not be imported. // We can skip this item, because it is not checked and should not be imported.
// NOTE: All descendants are thus skipped too. // NOTE: All descendants are thus skipped too.
@ -225,7 +225,7 @@ bool StandardServiceRoot::mergeImportExportModel(FeedsImportExportModel* model,
// add descendants to it. // add descendants to it.
RootItem* existing_category = nullptr; RootItem* existing_category = nullptr;
foreach (RootItem* child, target_parent->childItems()) { for (RootItem* child : target_parent->childItems()) {
if (child->kind() == RootItemKind::Category && child->title() == new_category_title) { if (child->kind() == RootItemKind::Category && child->title() == new_category_title) {
existing_category = child; existing_category = child;
} }

View file

@ -487,7 +487,7 @@ RootItem* TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, QS
QVector<QPair<RootItem*, QJsonValue>> pairs; QVector<QPair<RootItem*, QJsonValue>> pairs;
foreach (const QJsonValue& item, items_to_process) { for (const QJsonValue& item : items_to_process) {
pairs.append(QPair<RootItem*, QJsonValue>(parent, item)); pairs.append(QPair<RootItem*, QJsonValue>(parent, item));
} }
@ -503,7 +503,7 @@ RootItem* TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, QS
if (item_id == 0) { if (item_id == 0) {
// This is "Uncategorized" category, all its feeds belong to top-level root. // This is "Uncategorized" category, all its feeds belong to top-level root.
if (item.contains("items")) { if (item.contains("items")) {
foreach (const QJsonValue& child_feed, item["items"].toArray()) { for (const QJsonValue& child_feed : item["items"].toArray()) {
pairs.append(QPair<RootItem*, QJsonValue>(parent, child_feed)); pairs.append(QPair<RootItem*, QJsonValue>(parent, child_feed));
} }
} }
@ -516,7 +516,7 @@ RootItem* TtRssGetFeedsCategoriesResponse::feedsCategories(bool obtain_icons, QS
act_parent->appendChild(category); act_parent->appendChild(category);
if (item.contains("items")) { if (item.contains("items")) {
foreach (const QJsonValue& child, item["items"].toArray()) { for (const QJsonValue& child : item["items"].toArray()) {
pairs.append(QPair<RootItem*, QJsonValue>(category, child)); pairs.append(QPair<RootItem*, QJsonValue>(category, child));
} }
} }
@ -564,7 +564,7 @@ TtRssGetHeadlinesResponse::~TtRssGetHeadlinesResponse() = default;
QList<Message> TtRssGetHeadlinesResponse::messages() const { QList<Message> TtRssGetHeadlinesResponse::messages() const {
QList<Message> messages; QList<Message> messages;
foreach (const QJsonValue& item, m_rawContent["content"].toArray()) { for (const QJsonValue& item : m_rawContent["content"].toArray()) {
QJsonObject mapped = item.toObject(); QJsonObject mapped = item.toObject();
Message message; Message message;
@ -586,7 +586,7 @@ QList<Message> TtRssGetHeadlinesResponse::messages() const {
if (mapped.contains(QSL("attachments"))) { if (mapped.contains(QSL("attachments"))) {
// Process enclosures. // Process enclosures.
foreach (const QJsonValue& attachment, mapped["attachments"].toArray()) { for (const QJsonValue& attachment : mapped["attachments"].toArray()) {
QJsonObject mapped_attachemnt = attachment.toObject(); QJsonObject mapped_attachemnt = attachment.toObject();
Enclosure enclosure; Enclosure enclosure;