diff --git a/src/core/batchrenamejob.cpp b/src/core/batchrenamejob.cpp --- a/src/core/batchrenamejob.cpp +++ b/src/core/batchrenamejob.cpp @@ -59,7 +59,7 @@ // Check for extensions. QSet extensions; QMimeDatabase db; - foreach (const QUrl &url, m_srcList) { + for (const QUrl &url : qAsConst(m_srcList)) { const QString extension = db.suffixForFileName(url.toDisplayString().toLower()); if (extensions.contains(extension)) { m_allExtensionsDifferent = false; diff --git a/src/core/connection.cpp b/src/core/connection.cpp --- a/src/core/connection.cpp +++ b/src/core/connection.cpp @@ -35,7 +35,7 @@ return; } - foreach (const Task &task, outgoingTasks) { + for (const Task &task : qAsConst(outgoingTasks)) { q->sendnow(task.cmd, task.data); } outgoingTasks.clear(); diff --git a/src/core/copyjob.cpp b/src/core/copyjob.cpp --- a/src/core/copyjob.cpp +++ b/src/core/copyjob.cpp @@ -334,7 +334,7 @@ return; } if (m_mode == CopyJob::CopyMode::Move) { - Q_FOREACH (const QUrl &url, m_srcList) { + for (const QUrl &url : qAsConst(m_srcList)) { if (m_dest.scheme() == url.scheme() && m_dest.host() == url.host()) { QString srcPath = url.path(); if (!srcPath.endsWith(QLatin1Char('/'))) @@ -1032,7 +1032,7 @@ bool CopyJobPrivate::shouldSkip(const QString &path) const { - Q_FOREACH (const QString &skipPath, m_skipList) { + for (const QString &skipPath : qAsConst(m_skipList)) { if (path.startsWith(skipPath)) { return true; } diff --git a/src/core/desktopexecparser.cpp b/src/core/desktopexecparser.cpp --- a/src/core/desktopexecparser.cpp +++ b/src/core/desktopexecparser.cpp @@ -308,15 +308,16 @@ // Check if we need kioexec bool useKioexec = false; if (!mx1.hasUrls) { - Q_FOREACH (const QUrl &url, d->urls) + for (const QUrl &url : qAsConst(d->urls)) { if (!url.isLocalFile() && !hasSchemeHandler(url)) { useKioexec = true; //qCDebug(KIO_CORE) << "non-local files, application does not support urls, using kioexec"; break; } + } } else { // app claims to support %u/%U, check which protocols QStringList appSupportedProtocols = supportedProtocols(d->service); - Q_FOREACH (const QUrl &url, d->urls) { + for (const QUrl &url : qAsConst(d->urls)) { if (!isProtocolInSupportedList(url, appSupportedProtocols) && !hasSchemeHandler(url)) { useKioexec = true; //qCDebug(KIO_CORE) << "application does not support url, using kioexec:" << url; diff --git a/src/core/job.cpp b/src/core/job.cpp --- a/src/core/job.cpp +++ b/src/core/job.cpp @@ -178,18 +178,18 @@ bool Job::doKill() { // kill all subjobs, without triggering their result slot - Q_FOREACH (KJob *it, subjobs()) { - it->kill(KJob::Quietly); + for (KJob *job : subjobs()) { + job->kill(KJob::Quietly); } clearSubjobs(); return true; } bool Job::doSuspend() { - Q_FOREACH (KJob *it, subjobs()) { - if (!it->suspend()) { + for (KJob *job : subjobs()) { + if (!job->suspend()) { return false; } } @@ -199,8 +199,8 @@ bool Job::doResume() { - Q_FOREACH (KJob *it, subjobs()) { - if (!it->resume()) { + for (KJob *job : subjobs()) { + if (!job->resume()) { return false; } } diff --git a/src/core/kprotocolinfofactory.cpp b/src/core/kprotocolinfofactory.cpp --- a/src/core/kprotocolinfofactory.cpp +++ b/src/core/kprotocolinfofactory.cpp @@ -103,7 +103,8 @@ // first: search for meta data protocol info, that might be bundled with applications // we search in all library paths inside kf5/kio - Q_FOREACH (const KPluginMetaData &md, KPluginLoader::findPlugins(QStringLiteral("kf5/kio"))) { + const QVector plugins = KPluginLoader::findPlugins(QStringLiteral("kf5/kio")); + for (const KPluginMetaData &md : plugins) { // get slave name & protocols it supports, if any const QString slavePath = md.fileName(); const QJsonObject protocols(md.rawData().value(QStringLiteral("KDE-KIO-Protocols")).toObject()); diff --git a/src/core/kprotocolmanager.cpp b/src/core/kprotocolmanager.cpp --- a/src/core/kprotocolmanager.cpp +++ b/src/core/kprotocolmanager.cpp @@ -237,7 +237,7 @@ } if (!address.isNull()) { - Q_FOREACH (const SubnetPair &subnet, noProxySubnets) { + for (const SubnetPair &subnet : qAsConst(noProxySubnets)) { if (address.isInSubnet(subnet)) { isMatch = true; break; @@ -699,7 +699,7 @@ && !protocol.startsWith(QLatin1String("http")) && !protocol.startsWith(QLatin1String("webdav")) && KProtocolInfo::isKnownProtocol(protocol)) { - Q_FOREACH (const QString &proxy, proxyList) { + for (const QString &proxy : qAsConst(proxyList)) { QUrl u(proxy); if (u.isValid() && KProtocolInfo::isKnownProtocol(u.scheme())) { protocol = u.scheme(); diff --git a/src/core/ksslcertificatemanager.cpp b/src/core/ksslcertificatemanager.cpp --- a/src/core/ksslcertificatemanager.cpp +++ b/src/core/ksslcertificatemanager.cpp @@ -313,7 +313,8 @@ bool removed = false; QDir dir(userCertDir); - foreach (const QString &certFilename, dir.entryList(QDir::Files)) { + const QStringList dirList = dir.entryList(QDir::Files); + for (const QString &certFilename : dirList) { const QString certPath = userCertDir + certFilename; QList certs = QSslCertificate::fromPath(certPath); @@ -399,12 +400,14 @@ { //qDebug() << Q_FUNC_INFO; QList ret; - foreach (const QSslCertificate &cert, deduplicate(QSslConfiguration::systemCaCertificates())) { + const QList list = deduplicate(QSslConfiguration::systemCaCertificates()); + for (const QSslCertificate &cert : list) { ret += KSslCaCertificate(cert, KSslCaCertificate::SystemStore, false); } - foreach (const QSslCertificate &cert, QSslCertificate::fromPath(userCertDir + QLatin1Char('*'), - QSsl::Pem, QRegExp::Wildcard)) { + const QList userList = QSslCertificate::fromPath(userCertDir + QLatin1Char('*'), QSsl::Pem, + QRegExp::Wildcard); + for (const QSslCertificate &cert : userList) { ret += KSslCaCertificate(cert, KSslCaCertificate::UserStore, false); } diff --git a/src/core/ktcpsocket.cpp b/src/core/ktcpsocket.cpp --- a/src/core/ktcpsocket.cpp +++ b/src/core/ktcpsocket.cpp @@ -133,7 +133,8 @@ public: CipherCc() { - foreach (const QSslCipher &c, QSslConfiguration::supportedCiphers()) { + const QList list = QSslConfiguration::supportedCiphers(); + for (const QSslCipher &c : list) { allCiphers.insert(c.name(), c); } } @@ -725,7 +726,7 @@ d->ciphers = ciphers; QList cl; cl.reserve(d->ciphers.size()); - foreach (const KSslCipher &c, d->ciphers) { + for (const KSslCipher &c : ciphers) { cl.append(d->ccc.converted(c)); } QSslConfiguration configuration = d->sock.sslConfiguration(); @@ -824,7 +825,8 @@ //debugging H4X void KTcpSocket::showSslErrors() { - foreach (const QSslError &e, d->sock.sslErrors()) { + const QList list = d->sock.sslErrors(); + for (const QSslError &e : list) { qCDebug(KIO_CORE) << e.errorString(); } } diff --git a/src/core/scheduler.cpp b/src/core/scheduler.cpp --- a/src/core/scheduler.cpp +++ b/src/core/scheduler.cpp @@ -211,7 +211,7 @@ { QList ret; ret.reserve(m_runningJobs.size()); - Q_FOREACH (SimpleJob *job, m_runningJobs) { + for (SimpleJob *job : m_runningJobs) { Slave *slave = jobSlave(job); Q_ASSERT(slave); ret.append(slave); @@ -296,7 +296,9 @@ return false; } PerSlaveQueue &jobs = it.value(); - Q_FOREACH (SimpleJob *job, jobs.waitingList) { + // we need a copy as kill() ends up removing the job from waitingList + const QList waitingJobs = jobs.waitingList; + for (SimpleJob *job : waitingJobs) { // ### for compatibility with the old scheduler we don't touch the running job, if any. // make sure that the job doesn't call back into Scheduler::cancelJob(); this would // a) crash and b) be unnecessary because we clean up just fine. @@ -362,9 +364,10 @@ #ifdef SCHEDULER_DEBUG // a host queue may *never* be in queuesBySerial twice. QSet seen; - Q_FOREACH (HostQueue *hq, *queuesBySerial) { - Q_ASSERT(!seen.contains(hq)); - seen.insert(hq); + auto it = queuesBySerial->cbegin(); + for (; it != queuesBySerial->cend(); ++it) { + Q_ASSERT(!seen.contains(it.value())); + seen.insert(it.value()); } #endif } @@ -375,15 +378,17 @@ Q_UNUSED(runningJobsCount); #ifdef SCHEDULER_DEBUG int realRunningJobsCount = 0; - Q_FOREACH (const HostQueue &hq, *queues) { - realRunningJobsCount += hq.runningJobsCount(); + auto it = queues->cbegin(); + for (; it != queues->cend(); ++it) { + realRunningJobsCount += it.value().runningJobsCount(); } Q_ASSERT(realRunningJobsCount == runningJobsCount); // ...and of course we may never run the same job twice! QSet seenJobs; - Q_FOREACH (const HostQueue &hq, *queues) { - Q_FOREACH (SimpleJob *job, hq.runningJobs()) { + auto it2 = queues->cbegin(); + for (; it2 != queues->cend(); ++it2) { + for (SimpleJob *job : it2.value().runningJobs()) { Q_ASSERT(!seenJobs.contains(job)); seenJobs.insert(job); } @@ -563,8 +568,9 @@ QList ProtoQueue::allSlaves() const { QList ret(m_slaveKeeper.allSlaves()); - Q_FOREACH (const HostQueue &hq, m_queuesByHostname) { - ret.append(hq.allSlaves()); + auto it = m_queuesByHostname.cbegin(); + for (; it != m_queuesByHostname.cend(); ++it) { + ret.append(it.value().allSlaves()); } ret.append(m_connectedSlaveQueue.allSlaves()); return ret; @@ -578,8 +584,10 @@ #ifdef SCHEDULER_DEBUG //qDebug() << "m_runningJobsCount:" << m_runningJobsCount; - Q_FOREACH (const HostQueue &hq, m_queuesByHostname) { - Q_FOREACH (SimpleJob *job, hq.runningJobs()) { + auto it = m_queuesByHostname.cbegin(); + for (; it != m_queuesByHostname.cend(); ++it) { + const QList list = it.value().runningJobs(); + for (SimpleJob *job : list) { //qDebug() << SimpleJobPrivate::get(job)->m_url; } } @@ -667,8 +675,9 @@ { delete q; q = nullptr; - Q_FOREACH (ProtoQueue *p, m_protocols) { - Q_FOREACH (Slave *slave, p->allSlaves()) { + for (ProtoQueue *p : qAsConst(m_protocols)) { + const QList list = p->allSlaves(); + for (Slave *slave : list) { slave->kill(); } } @@ -924,7 +933,8 @@ QHash::ConstIterator endIt = proto.isEmpty() ? m_protocols.constEnd() : it + 1; for (; it != endIt; ++it) { - Q_FOREACH (Slave *slave, (*it)->allSlaves()) { + const QList list = it.value()->allSlaves(); + for (Slave *slave : list) { slave->send(CMD_REPARSECONFIGURATION); slave->resetHost(); } diff --git a/src/core/tcpslavebase.cpp b/src/core/tcpslavebase.cpp --- a/src/core/tcpslavebase.cpp +++ b/src/core/tcpslavebase.cpp @@ -98,19 +98,19 @@ sslMetaData.insert(QStringLiteral("ssl_cipher_bits"), QString::number(cipher.supportedBits())); sslMetaData.insert(QStringLiteral("ssl_peer_ip"), ip); + const QList peerCertificateChain = socket.peerCertificateChain(); // try to fill in the blanks, i.e. missing certificates, and just assume that // those belong to the peer (==website or similar) certificate. for (int i = 0; i < sslErrors.count(); i++) { if (sslErrors[i].certificate().isNull()) { - const QList peerCertificateChain = socket.peerCertificateChain(); sslErrors[i] = QSslError(sslErrors[i].sslError().error(), peerCertificateChain[0]); } } QString errorStr; // encode the two-dimensional numeric error list using '\n' and '\t' as outer and inner separators - Q_FOREACH (const QSslCertificate &cert, socket.peerCertificateChain()) { - Q_FOREACH (const KSslError &error, sslErrors) { + for (const QSslCertificate &cert : peerCertificateChain ) { + for (const KSslError &error : qAsConst(sslErrors)) { if (error.certificate() == cert) { errorStr += QString::number(static_cast(error.error())) + QLatin1Char('\t'); } @@ -124,7 +124,7 @@ sslMetaData.insert(QStringLiteral("ssl_cert_errors"), errorStr); QString peerCertChain; - Q_FOREACH (const QSslCertificate &cert, socket.peerCertificateChain()) { + for (const QSslCertificate &cert : peerCertificateChain) { peerCertChain += QString::fromUtf8(cert.toPem()) + QLatin1Char('\x01'); } peerCertChain.chop(1); diff --git a/src/urifilters/ikws/ikwsopts.cpp b/src/urifilters/ikws/ikwsopts.cpp --- a/src/urifilters/ikws/ikwsopts.cpp +++ b/src/urifilters/ikws/ikwsopts.cpp @@ -363,7 +363,7 @@ } const QStringList servicesDirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("kservices5/searchproviders/"), QStandardPaths::LocateDirectory); - Q_FOREACH (const QString &providerName, m_deletedProviders) { + for (const QString &providerName : qAsConst(m_deletedProviders)) { QStringList matches; for (const QString &dir : servicesDirs) { QString current = dir + QLatin1Char('/') + providerName + QLatin1String(".desktop"); diff --git a/src/urifilters/ikws/searchproviderdlg.cpp b/src/urifilters/ikws/searchproviderdlg.cpp --- a/src/urifilters/ikws/searchproviderdlg.cpp +++ b/src/urifilters/ikws/searchproviderdlg.cpp @@ -111,7 +111,7 @@ // once. Act like data inconsistencies regarding this don't exist (should // probably be handled on load). for (const QString &shorthand : shorthands) { - Q_FOREACH (const SearchProvider *provider, m_providers) { + for (const SearchProvider *provider : qAsConst(m_providers)) { if (provider != m_provider && provider->keys().contains(shorthand)) { contenders.insert(shorthand, provider); break; diff --git a/src/urifilters/shorturi/kshorturifilter.cpp b/src/urifilters/shorturi/kshorturifilter.cpp --- a/src/urifilters/shorturi/kshorturifilter.cpp +++ b/src/urifilters/shorturi/kshorturifilter.cpp @@ -435,7 +435,7 @@ // Okay this is the code that allows users to supply custom matches for // specific URLs using Qt's regexp class. This is hard-coded for now. // TODO: Make configurable at some point... - Q_FOREACH (const URLHint &hint, m_urlHints) { + for (const URLHint &hint : qAsConst(m_urlHints)) { qCDebug(category) << "testing regexp for" << hint.prepend; if (hint.regexp.indexIn(cmd) == 0) { const QString cmdStr = hint.prepend + cmd; diff --git a/src/widgets/accessmanager.cpp b/src/widgets/accessmanager.cpp --- a/src/widgets/accessmanager.cpp +++ b/src/widgets/accessmanager.cpp @@ -420,7 +420,8 @@ request.setRawHeader("x-kdewebkit-ignore-disposition", QByteArray()); QStringList customHeaders; - Q_FOREACH (const QByteArray &key, request.rawHeaderList()) { + const QList list = request.rawHeaderList(); + for (const QByteArray &key : list) { const QByteArray value = request.rawHeader(key); if (value.length()) { customHeaders << (QString::fromUtf8(key) + QLatin1String(": ") + QString::fromUtf8(value)); diff --git a/src/widgets/clipboardupdater.cpp b/src/widgets/clipboardupdater.cpp --- a/src/widgets/clipboardupdater.cpp +++ b/src/widgets/clipboardupdater.cpp @@ -77,7 +77,8 @@ bool update = false; if (copyJob) { - Q_FOREACH (const QUrl &url, copyJob->srcUrls()) { + const QList urls = copyJob->srcUrls(); + for (const QUrl &url : urls) { const int index = clipboardUrls.indexOf(url); if (index > -1) { QUrl dUrl = copyJob->destUrl().adjusted(QUrl::StripTrailingSlash); @@ -130,7 +131,7 @@ QList clipboardUrls = KUrlMimeData::urlsFromMimeData(mimeData); quint32 removedCount = 0; - Q_FOREACH (const QUrl &url, deletedUrls) { + for (const QUrl &url : qAsConst(deletedUrls)) { removedCount += clipboardUrls.removeAll(url); } diff --git a/src/widgets/delegateanimationhandler.cpp b/src/widgets/delegateanimationhandler.cpp --- a/src/widgets/delegateanimationhandler.cpp +++ b/src/widgets/delegateanimationhandler.cpp @@ -328,10 +328,10 @@ const QModelIndex &index) const { // Try to find a list of animation states for the view - AnimationList *list = animationLists.value(view); + const AnimationList *list = animationLists.value(view); if (list) { - foreach (AnimationState *state, *list) + for (AnimationState *state : *list) if (state->index == index) { return state; } diff --git a/src/widgets/dropjob.cpp b/src/widgets/dropjob.cpp --- a/src/widgets/dropjob.cpp +++ b/src/widgets/dropjob.cpp @@ -267,7 +267,7 @@ bool allItemsAreFromTrash = true; bool containsTrashRoot = false; - foreach (const QUrl &url, m_urls) { + for (const QUrl &url : m_urls) { const bool local = url.isLocalFile(); if (!local /*optimization*/ && url.scheme() == QLatin1String("trash")) { if (url.path().isEmpty() || url.path() == QLatin1String("/")) { @@ -326,7 +326,7 @@ // we would need to KIO::stat each URL in turn, asynchronously.... KFileItemList fileItems; fileItems.reserve(m_urls.size()); - foreach (const QUrl &url, m_urls) { + for (const QUrl &url : m_urls) { fileItems.append(KFileItem(url)); } const KFileItemListProperties itemProps(fileItems); @@ -358,7 +358,7 @@ if (sMoving || (sReading && sDeleting)) { bool equalDestination = true; - foreach (const QUrl &src, m_urls) { + for (const QUrl &src : m_urls) { if (!m_destUrl.matches(src.adjusted(QUrl::RemoveFilename), QUrl::StripTrailingSlash)) { equalDestination = false; break; @@ -384,7 +384,7 @@ void DropJobPrivate::addPluginActions(KIO::DropMenu *popup, const KFileItemListProperties &itemProps) { const QVector plugin_offers = KPluginLoader::findPlugins(QStringLiteral("kf5/kio_dnd")); - foreach (const KPluginMetaData &service, plugin_offers) { + for (const KPluginMetaData &service : plugin_offers) { KPluginFactory *factory = KPluginLoader(service.fileName()).factory(); if (factory) { KIO::DndPopupMenuPlugin *plugin = factory->create(); diff --git a/src/widgets/kdesktopfileactions.cpp b/src/widgets/kdesktopfileactions.cpp --- a/src/widgets/kdesktopfileactions.cpp +++ b/src/widgets/kdesktopfileactions.cpp @@ -293,7 +293,8 @@ // Now, either keys is empty (all actions) or it's set to the actions we want - foreach (const KServiceAction &action, service.actions()) { + const QList list = service.actions(); + for (const KServiceAction &action : list) { if (keys.isEmpty() || keys.contains(action.name())) { const QString exec = action.exec(); if (bLocalFiles || exec.contains(QLatin1String("%U")) || exec.contains(QLatin1String("%u"))) { diff --git a/src/widgets/kdirmodel.cpp b/src/widgets/kdirmodel.cpp --- a/src/widgets/kdirmodel.cpp +++ b/src/widgets/kdirmodel.cpp @@ -148,7 +148,7 @@ void collectAllChildUrls(QList &urls) const { urls.reserve(urls.size() + m_childNodes.size()); - Q_FOREACH (KDirModelNode *node, m_childNodes) { + for (KDirModelNode *node : m_childNodes) { const KFileItem &item = node->item(); urls.append(cleanupUrl(item.url())); if (item.isDir()) { @@ -493,7 +493,7 @@ if (!urlsBeingFetched.isEmpty()) { const QUrl dirUrl(url); - foreach (const QUrl &urlFetched, urlsBeingFetched) { + for (const QUrl &urlFetched : qAsConst(urlsBeingFetched)) { if (dirUrl.matches(urlFetched, QUrl::StripTrailingSlash) || dirUrl.isParentOf(urlFetched)) { //qDebug() << "Listing found" << dirUrl.url() << "which is a parent of fetched url" << urlFetched; const QModelIndex parentIndex = indexForNode(node, dirNode->m_childNodes.count() - 1); @@ -512,7 +512,7 @@ // Emit expand signal after rowsInserted signal has been emitted, // so that any proxy model will have updated its mapping already - Q_FOREACH (const QModelIndex &idx, emitExpandFor) { + for (const QModelIndex &idx : qAsConst(emitExpandFor)) { emit q->expand(idx); } } diff --git a/src/widgets/kfileitemactions.cpp b/src/widgets/kfileitemactions.cpp --- a/src/widgets/kfileitemactions.cpp +++ b/src/widgets/kfileitemactions.cpp @@ -487,16 +487,17 @@ } auto mimeType = db.mimeTypeForName(commonMimeType); - foreach (const auto& supportedMimeType, metaData.mimeTypes()) { + const QStringList list = metaData.mimeTypes(); + for (const auto &supportedMimeType : list) { if (mimeType.inherits(supportedMimeType)) { return true; } } return false; }); - foreach (const auto& jsonMetadata, jsonPlugins) { + for (const auto &jsonMetadata : jsonPlugins) { // The plugin has been disabled if (!showGroup.readEntry(jsonMetadata.pluginId(), true)) { continue; diff --git a/src/widgets/kfileitemdelegate.cpp b/src/widgets/kfileitemdelegate.cpp --- a/src/widgets/kfileitemdelegate.cpp +++ b/src/widgets/kfileitemdelegate.cpp @@ -230,7 +230,7 @@ return string; } - foreach (KFileItemDelegate::Information info, informationList) { + for (KFileItemDelegate::Information info : informationList) { if (info == KFileItemDelegate::NoInformation) { continue; } @@ -299,7 +299,7 @@ default: break; } // switch (info) - } // foreach (info, list) + } // for (info, list) return string; } diff --git a/src/widgets/kpropertiesdialog.cpp b/src/widgets/kpropertiesdialog.cpp --- a/src/widgets/kpropertiesdialog.cpp +++ b/src/widgets/kpropertiesdialog.cpp @@ -440,7 +440,7 @@ void KPropertiesDialog::setFileNameReadOnly(bool ro) { - foreach (KPropertiesDialogPlugin *it, d->m_pageList) { + for (KPropertiesDialogPlugin *it : qAsConst(d->m_pageList)) { if (auto *filePropsPlugin = qobject_cast(it)) { filePropsPlugin->setFileNameReadOnly(ro); } else if (auto *urlPropsPlugin = qobject_cast(it)) { @@ -648,7 +648,7 @@ Q_ASSERT(!d->m_singleUrl.isEmpty()); // If we have an Desktop page, set it dirty, so that a full file is saved locally // Same for a URL page (because of the Name= hack) - foreach (KPropertiesDialogPlugin *it, d->m_pageList) { + for (KPropertiesDialogPlugin *it : qAsConst(d->m_pageList)) { if (qobject_cast(it) || qobject_cast(it)) { //qDebug() << "Setting page dirty"; @@ -1259,7 +1259,8 @@ static QString relativeAppsLocation(const QString &file) { const QString canonical = QFileInfo(file).canonicalFilePath(); - Q_FOREACH (const QString &base, QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation)) { + const QStringList dirs = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation); + for (const QString &base : dirs) { QDir base_dir = QDir(base); if (base_dir.exists() && canonical.startsWith(base_dir.canonicalPath())) { return canonical.mid(base.length() + 1); @@ -3633,7 +3634,8 @@ d->m_frame); if (dlg.exec() == QDialog::Accepted) { - foreach (const QString &mimetype, dlg.chooser()->mimeTypes()) { + const QStringList list = dlg.chooser()->mimeTypes(); + for (const QString &mimetype : list) { QMimeType p = db.mimeTypeForName(mimetype); if (!p.isValid()) { continue; diff --git a/src/widgets/krun_win.cpp b/src/widgets/krun_win.cpp --- a/src/widgets/krun_win.cpp +++ b/src/widgets/krun_win.cpp @@ -90,7 +90,7 @@ Q_UNUSED(asn); QStringList fnames; - foreach (const QUrl &url, lst) { + for (const QUrl &url : lst) { fnames += QDir::toNativeSeparators(url.path()); } int result = runDll(window, diff --git a/src/widgets/ksslcertificatebox.cpp b/src/widgets/ksslcertificatebox.cpp --- a/src/widgets/ksslcertificatebox.cpp +++ b/src/widgets/ksslcertificatebox.cpp @@ -36,7 +36,8 @@ { d->ui.setupUi(this); // No fooling us with html tags - Q_FOREACH (QLabel *label, findChildren()) { + const QList labels = findChildren(); + for (QLabel *label : labels) { label->setTextFormat(Qt::PlainText); } } diff --git a/src/widgets/ksslinfodialog.cpp b/src/widgets/ksslinfodialog.cpp --- a/src/widgets/ksslinfodialog.cpp +++ b/src/widgets/ksslinfodialog.cpp @@ -195,9 +195,10 @@ const QSslCertificate &cert = d->certificateChain[i]; QString trusted; - if (!d->certificateErrors[i].isEmpty()) { + const QList errorsList = d->certificateErrors[i]; + if (!errorsList.isEmpty()) { trusted = i18nc("The certificate is not trusted", "NO, there were errors:"); - foreach (KSslError::Error e, d->certificateErrors[i]) { + for (KSslError::Error e : errorsList) { KSslError classError(e); trusted += QLatin1Char('\n') + classError.errorString(); } diff --git a/src/widgets/kurifiltersearchprovideractions.cpp b/src/widgets/kurifiltersearchprovideractions.cpp --- a/src/widgets/kurifiltersearchprovideractions.cpp +++ b/src/widgets/kurifiltersearchprovideractions.cpp @@ -94,7 +94,7 @@ QActionGroup *actionGroup = new QActionGroup(this); connect(actionGroup, &QActionGroup::triggered, this, &KUriFilterSearchProviderActions::slotHandleWebShortcutAction); - Q_FOREACH (const QString &searchProvider, searchProviders) { + for (const QString &searchProvider : searchProviders) { QAction *action = new QAction(i18nc("@action:inmenu Search for with", "%1", searchProvider), webShortcutsMenu); action->setIcon(QIcon::fromTheme(filterData.iconNameForPreferredSearchProvider(searchProvider))); action->setData(filterData.queryForPreferredSearchProvider(searchProvider)); diff --git a/src/widgets/previewjob.cpp b/src/widgets/previewjob.cpp --- a/src/widgets/previewjob.cpp +++ b/src/widgets/previewjob.cpp @@ -280,12 +280,12 @@ if (!p.isEmpty()) { protocols.append(p); } - foreach (const QString &protocol, protocols) { + for (const QString &protocol : qAsConst(protocols)) { // We cannot use mimeTypes() here, it doesn't support groups such as: text/* const QStringList mtypes = (*it)->serviceTypes(); // Add supported mimetype for this protocol QStringList &_ms = m_remoteProtocolPlugins[protocol]; - foreach (const QString &_m, mtypes) { + for (const QString &_m : mtypes) { if (_m != QLatin1String("ThumbCreator")) { protocolMap[protocol].insert(_m, *it); if (!_ms.contains(_m)) { diff --git a/src/widgets/sslui.cpp b/src/widgets/sslui.cpp --- a/src/widgets/sslui.cpp +++ b/src/widgets/sslui.cpp @@ -66,7 +66,7 @@ //### We don't ask to permanently reject the certificate QString message = i18n("The server failed the authenticity check (%1).\n\n", ud->host); - foreach (const KSslError &err, ud->sslErrors) { + for (const KSslError &err : qAsConst(ud->sslErrors)) { message.append(err.errorString() + QLatin1Char('\n')); } message = message.trimmed(); @@ -82,9 +82,9 @@ QList > meh; // parallel list to cert list :/ meh.reserve(ud->certificateChain.size()); - foreach (const QSslCertificate &cert, ud->certificateChain) { + for (const QSslCertificate &cert : qAsConst(ud->certificateChain)) { QList errors; - foreach (const KSslError &error, ud->sslErrors) { + for (const KSslError &error : qAsConst(ud->sslErrors)) { if (error.certificate() == cert) { // we keep only the error code enum here errors.append(error.error());