diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,7 +73,7 @@ add_definitions(-DTRANSLATION_DOMAIN=\"kservice5\") add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050c00) - +add_definitions(-DQT_NO_FOREACH) if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po") ki18n_install(po) diff --git a/autotests/kmimeassociationstest.cpp b/autotests/kmimeassociationstest.cpp --- a/autotests/kmimeassociationstest.cpp +++ b/autotests/kmimeassociationstest.cpp @@ -74,7 +74,7 @@ bool expected /* if set, show error if not found */) { bool found = false; - Q_FOREACH (const KService::Ptr &serv, offers) { + for (const KService::Ptr &serv : offers) { if (serv->entryPath() == entryPath) { if (found) { // should be there only once qWarning("ERROR: %s was found twice in the list", qPrintable(entryPath)); @@ -85,7 +85,7 @@ } if (!found && expected) { qWarning() << "ERROR:" << entryPath << "not found in offer list. Here's the full list:"; - Q_FOREACH (const KService::Ptr &serv, offers) { + for (const KService::Ptr &serv : offers) { qDebug() << serv->entryPath(); } } @@ -175,7 +175,7 @@ #if 0 const KService::List lst = KService::allServices(); QVERIFY(!lst.isEmpty()); - Q_FOREACH (const KService::Ptr &serv, lst) { + for (const KService::Ptr &serv : lst) { qDebug() << serv->entryPath() << serv->storageId() /*<< serv->desktopEntryName()*/; } #endif @@ -248,11 +248,11 @@ continue; } const QList offers = offerHash.offersFor(mime); - Q_FOREACH (const QString &service, it.value()) { + for (const QString &service : it.value()) { KService::Ptr serv = KService::serviceByStorageId(service); if (serv && !offersContains(offers, serv)) { qDebug() << "expected offer" << serv->entryPath() << "not in offers for" << mime << ":"; - Q_FOREACH (const KServiceOffer &offer, offers) { + for (const KServiceOffer &offer : offers) { qDebug() << offer.service()->storageId(); } QFAIL("offer does not have servicetype"); @@ -264,7 +264,7 @@ end = removedApps.constEnd(); it != end; ++it) { const QString mime = it.key(); const QList offers = offerHash.offersFor(mime); - Q_FOREACH (const QString &service, it.value()) { + for (const QString &service : it.value()) { KService::Ptr serv = KService::serviceByStorageId(service); if (serv && offersContains(offers, serv)) { //qDebug() << serv.data() << serv->entryPath() << "does not have" << mime; @@ -479,7 +479,7 @@ static bool offersContains(const QList &offers, KService::Ptr serv) { - Q_FOREACH (const KServiceOffer &offer, offers) { + for (const KServiceOffer &offer : offers) { if (offer.service()->storageId() == serv->storageId()) { return true; } @@ -489,15 +489,15 @@ static QStringList assembleOffers(const QList &offers) { QStringList lst; - Q_FOREACH (const KServiceOffer &offer, offers) { + for (const KServiceOffer &offer : offers) { lst.append(offer.service()->storageId()); } return lst; } static QStringList assembleServices(const QList &services, int maxCount = -1) { QStringList lst; - Q_FOREACH (const KService::Ptr &service, services) { + for (const KService::Ptr &service : services) { lst.append(service->storageId()); if (maxCount > -1 && lst.count() == maxCount) { break; diff --git a/autotests/kservicetest.cpp b/autotests/kservicetest.cpp --- a/autotests/kservicetest.cpp +++ b/autotests/kservicetest.cpp @@ -248,13 +248,13 @@ { // If I want the konqueror unit tests to work, then I better not have a non-working part // as the preferred part for text/plain... - QStringList services; services << QStringLiteral("fakeservice.desktop") << QStringLiteral("fakepart.desktop") << QStringLiteral("faketextplugin.desktop") << QStringLiteral("fakeservice_querymustrebuild.desktop"); - Q_FOREACH (const QString &service, services) { + const QStringList services = QStringList() << QStringLiteral("fakeservice.desktop") << QStringLiteral("fakepart.desktop") << QStringLiteral("faketextplugin.desktop") << QStringLiteral("fakeservice_querymustrebuild.desktop"); + for (const QString &service : services) { const QString fakeService = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QLatin1String("/kservices5/") + service; QFile::remove(fakeService); } - QStringList serviceTypes; serviceTypes << QStringLiteral("fakeplugintype.desktop"); - Q_FOREACH (const QString &serviceType, serviceTypes) { + const QStringList serviceTypes = QStringList() << QStringLiteral("fakeplugintype.desktop"); + for (const QString &serviceType : serviceTypes) { const QString fakeServiceType = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QLatin1String("/kservicetypes5/") + serviceType; //QFile::remove(fakeServiceType); } @@ -480,7 +480,7 @@ || !offerListHasService(offers, QStringLiteral("fakepart2.desktop")) || !offerListHasService(offers, QStringLiteral("otherpart.desktop")) || !offerListHasService(offers, QStringLiteral("preferredpart.desktop"))) { - foreach (KService::Ptr service, offers) { + for (KService::Ptr service : qAsConst(offers)) { qDebug("%s %s", qPrintable(service->name()), qPrintable(service->entryPath())); } } @@ -495,7 +495,7 @@ // Check ordering according to InitialPreference int lastPreference = -1; bool lastAllowedAsDefault = true; - Q_FOREACH (KService::Ptr service, offers) { + for (KService::Ptr service : qAsConst(offers)) { const QString path = service->entryPath(); const int preference = service->initialPreference(); // ## might be wrong if we use per-servicetype preferences... //qDebug( "%s has preference %d, allowAsDefault=%d", qPrintable( path ), preference, service->allowAsDefault() ); @@ -639,10 +639,10 @@ services.append(KService::serviceByDesktopPath(QStringLiteral("fakepart.desktop"))); disabledServices.append(KService::serviceByDesktopPath(QStringLiteral("fakepart2.desktop"))); - Q_FOREACH (const KService::Ptr &serv, services) { + for (const KService::Ptr &serv : qAsConst(services)) { QVERIFY(serv); } - Q_FOREACH (const KService::Ptr &serv, disabledServices) { + for (const KService::Ptr &serv : qAsConst(disabledServices)) { QVERIFY(serv); } @@ -727,7 +727,7 @@ true /* sort by generic name */); qDebug() << list.count(); - Q_FOREACH (KServiceGroup::SPtr s, list) { + for (KServiceGroup::SPtr s : list) { qDebug() << s->name() << s->entryPath(); } diff --git a/autotests/ksycoca_xdgdirstest.cpp b/autotests/ksycoca_xdgdirstest.cpp --- a/autotests/ksycoca_xdgdirstest.cpp +++ b/autotests/ksycoca_xdgdirstest.cpp @@ -111,7 +111,7 @@ #if 0 // for debugging const KService::List lst = KService::allServices(); QVERIFY(!lst.isEmpty()); - Q_FOREACH (const KService::Ptr &serv, lst) { + for (const KService::Ptr &serv : lst) { qDebug() << serv->entryPath() << serv->storageId() /*<< serv->desktopEntryName()*/; } #endif diff --git a/autotests/ksycocadicttest.cpp b/autotests/ksycocadicttest.cpp --- a/autotests/ksycocadicttest.cpp +++ b/autotests/ksycocadicttest.cpp @@ -108,7 +108,7 @@ QByteArray buffer; { KSycocaDict dict; - foreach (const QString &str, serviceTypes) + for (const QString &str : qAsConst(serviceTypes)) { add(dict, str, str); } @@ -124,7 +124,7 @@ int offset = loadingDict.find_string(QStringLiteral("DictTestPluginType")); QVERIFY(offset > 0); QCOMPARE(offset, KServiceType::serviceType(QStringLiteral("DictTestPluginType"))->offset()); - foreach (const QString &str, serviceTypes) + for (const QString &str : qAsConst(serviceTypes)) { int offset = loadingDict.find_string(str); QVERIFY(offset > 0); diff --git a/src/kdeinit/ktoolinvocation_win.cpp b/src/kdeinit/ktoolinvocation_win.cpp --- a/src/kdeinit/ktoolinvocation_win.cpp +++ b/src/kdeinit/ktoolinvocation_win.cpp @@ -61,7 +61,7 @@ query.addQueryItem(QStringLiteral("cc"), _cc); query.addQueryItem(QStringLiteral("bcc"), _bcc); query.addQueryItem(QStringLiteral("body"), body); - foreach (const QString &attachURL, attachURLs) { + for (const QString &attachURL : attachURLs) { query.addQueryItem(QStringLiteral("attach"), attachURL); } url.setQuery(query); diff --git a/src/kdeinit/ktoolinvocation_x11.cpp b/src/kdeinit/ktoolinvocation_x11.cpp --- a/src/kdeinit/ktoolinvocation_x11.cpp +++ b/src/kdeinit/ktoolinvocation_x11.cpp @@ -231,7 +231,7 @@ const QString previousStr = cmdTokens.at(i-1); cmdTokens.removeAt(i); const int currentPos = i; - Q_FOREACH(const QString &url, attachURLs) { + for(const QString &url : attachURLs) { cmdTokens.insert(currentPos, previousStr); cmdTokens.insert(currentPos, url); i += 2; diff --git a/src/plugin/kplugintrader.h b/src/plugin/kplugintrader.h --- a/src/plugin/kplugintrader.h +++ b/src/plugin/kplugintrader.h @@ -230,7 +230,7 @@ } const KPluginInfo::List offers = self()->query(subDirectory, serviceType, constraint); - Q_FOREACH (const KPluginInfo &info, offers) { + for (const KPluginInfo &info : offers) { KPluginLoader loader(info.libraryPath()); const QVariantList argsWithMetaData = QVariantList() << loader.metaData().toVariantMap(); KPluginFactory *factory = loader.factory(); diff --git a/src/services/kmimetypetrader.h b/src/services/kmimetypetrader.h --- a/src/services/kmimetypetrader.h +++ b/src/services/kmimetypetrader.h @@ -130,7 +130,7 @@ QString *error = nullptr) { const KService::List offers = self()->query(mimeType, QStringLiteral("KParts/ReadOnlyPart"), constraint); - Q_FOREACH (const KService::Ptr &ptr, offers) { + for (const KService::Ptr &ptr : offers) { T *component = ptr->template createInstance(parentWidget, parent, args, error); if (component) { if (error) { @@ -165,7 +165,7 @@ QString *error = nullptr) { const KService::List offers = self()->query(mimeType, serviceType, constraint); - Q_FOREACH (const KService::Ptr &ptr, offers) { + for (const KService::Ptr &ptr : offers) { T *component = ptr->template createInstance(parent, args, error); if (component) { if (error) { diff --git a/src/services/kplugininfo.cpp b/src/services/kplugininfo.cpp --- a/src/services/kplugininfo.cpp +++ b/src/services/kplugininfo.cpp @@ -278,7 +278,7 @@ : d(new KPluginInfoPrivate) { const QString metaData = QStringLiteral("MetaData"); - foreach (const QVariant &v, args) { + for (const QVariant &v : args) { if (v.canConvert()) { const QVariantMap &m = v.toMap(); const QVariant &_metadata = m.value(metaData); @@ -315,7 +315,8 @@ KSycoca::self()->ensureCacheValid(); QJsonObject json; - foreach (const QString &key, service->propertyNames()) { + const auto propertyList = service->propertyNames(); + for (const QString &key : propertyList) { QVariant::Type t = KSycocaPrivate::self()->serviceTypeFactory()->findPropertyTypeByName(key); if (t == QVariant::Invalid) { t = QVariant::String; // default to string if the type is not known @@ -336,7 +337,7 @@ mimeTypes.reserve(services.size()); QStringList newServiceTypes; newServiceTypes.reserve(services.size()); - foreach (const QString& s, services) { + for (const QString& s : services) { if (db.mimeTypeForName(s).isValid()) { mimeTypes << s; } else { @@ -443,7 +444,7 @@ { QStringList files; const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, name + QStringLiteral("/kpartplugins"), QStandardPaths::LocateDirectory); - Q_FOREACH (const QString &dir, dirs) { + for (const QString &dir : dirs) { QDirIterator it(dir, QStringList() << QStringLiteral("*.desktop")); while (it.hasNext()) { files.append(it.next()); @@ -628,9 +629,9 @@ if (result.canConvert()) { result = KPluginInfoPrivate::deserializeList(result.toString()); } else if (result.canConvert()) { - QVariantList list = result.toList(); + const QVariantList list = result.toList(); QStringList newResult; - foreach (const QVariant &value, list) { + for (const QVariant &value : list) { newResult += value.toString(); } result = newResult; @@ -749,7 +750,7 @@ { KPluginInfo::List ret; ret.reserve(list.size()); - foreach(const KPluginMetaData &md, list) { + for(const KPluginMetaData &md : list) { ret.append(KPluginInfo::fromMetaData(md)); } return ret; @@ -759,7 +760,7 @@ { QVector ret; ret.reserve(list.size()); - foreach(const KPluginInfo &info, list) { + for(const KPluginInfo &info : list) { ret.append(info.toMetaData()); } return ret; diff --git a/src/services/kservice.cpp b/src/services/kservice.cpp --- a/src/services/kservice.cpp +++ b/src/services/kservice.cpp @@ -663,7 +663,7 @@ QMap::ConstIterator it = d->m_mapProps.find(QStringLiteral("OnlyShowIn")); if ((it != d->m_mapProps.end()) && (it->isValid())) { const QStringList aList = it->toString().split(QLatin1Char(';')); - foreach (const QString &desktop, currentDesktops) { + for (const QString &desktop : qAsConst(currentDesktops)) { if (aList.contains(desktop)) { return true; } @@ -674,7 +674,7 @@ it = d->m_mapProps.find(QStringLiteral("NotShowIn")); if ((it != d->m_mapProps.end()) && (it->isValid())) { const QStringList aList = it->toString().split(QLatin1Char(';')); - foreach (const QString &desktop, currentDesktops) { + for (const QString &desktop : qAsConst(currentDesktops)) { if (aList.contains(desktop)) { return false; } diff --git a/src/services/kservicegroup.cpp b/src/services/kservicegroup.cpp --- a/src/services/kservicegroup.cpp +++ b/src/services/kservicegroup.cpp @@ -232,7 +232,7 @@ m_bAllowInline = (_allowInline != 0); if (m_bDeep) { - Q_FOREACH (const QString &path, groupList) { + for (const QString &path : qAsConst(groupList)) { if (path.endsWith(QLatin1Char('/'))) { KServiceGroup::Ptr serviceGroup; serviceGroup = KSycocaPrivate::self()->serviceGroupFactory()->findGroupByDesktopPath(path, false); @@ -261,7 +261,7 @@ KSycocaEntryPrivate::save(s); QStringList groupList; - Q_FOREACH (KSycocaEntry::Ptr p, m_serviceList) { + for (const KSycocaEntry::Ptr &p : qAsConst(m_serviceList)) { if (p->isType(KST_KService)) { KService::Ptr service(static_cast(p.data())); groupList.append(service->entryPath()); @@ -291,8 +291,8 @@ Q_D(KServiceGroup); bool sort = options & SortEntries || options & AllowSeparators; QList list; - List tmp = d->entries(this, sort, options & ExcludeNoDisplay, options & AllowSeparators, options & SortByGenericName); - foreach (const SPtr &ptr, tmp) { + const List tmp = d->entries(this, sort, options & ExcludeNoDisplay, options & AllowSeparators, options & SortByGenericName); + for (const SPtr &ptr : tmp) { if (ptr->isType(KST_KServiceGroup)) { KServiceGroup::Ptr serviceGroup(static_cast(ptr.data())); list.append(serviceGroup); @@ -310,9 +310,9 @@ Q_D(KServiceGroup); bool sort = options & SortEntries || options & AllowSeparators; QList list; - List tmp = d->entries(this, sort, options & ExcludeNoDisplay, options & AllowSeparators, options & SortByGenericName); + const List tmp = d->entries(this, sort, options & ExcludeNoDisplay, options & AllowSeparators, options & SortByGenericName); bool foundService = false; - foreach (const SPtr &ptr, tmp) { + for (const SPtr &ptr : tmp) { if (ptr->isType(KST_KService)) { list.append(KService::Ptr(static_cast(ptr.data()))); foundService = true; @@ -383,7 +383,8 @@ typedef QMap SortedContainer; SortedContainer slist; SortedContainer glist; - Q_FOREACH (KSycocaEntry::Ptr p, group->d_func()->m_serviceList) { + const auto listService = group->d_func()->m_serviceList; + for (const KSycocaEntry::Ptr &p : listService) { bool noDisplay = p->isType(KST_KServiceGroup) ? static_cast(p.data())->noDisplay() : static_cast(p.data())->noDisplay(); @@ -439,7 +440,7 @@ // Iterate through the sort spec list. // If an entry gets mentioned explicitly, we remove it from the sorted list - Q_FOREACH (const QString &item, sortOrder) { + for (const QString &item : qAsConst(sortOrder)) { if (item.isEmpty()) { continue; } @@ -575,7 +576,7 @@ bool bShowInlineHeader = false; bool bShowInlineAlias = false; int inlineValue = -1; - Q_FOREACH (const QString &opt_attr, optionAttribute) { + for (const QString &opt_attr : qAsConst(optionAttribute)) { parseAttribute(opt_attr, bShowEmptyMenu, bShowInline, bShowInlineHeader, bShowInlineAlias, inlineValue); group->setShowEmptyMenu(bShowEmptyMenu); group->setAllowInline(bShowInline); diff --git a/src/services/kservicetypetrader.h b/src/services/kservicetypetrader.h --- a/src/services/kservicetypetrader.h +++ b/src/services/kservicetypetrader.h @@ -187,7 +187,7 @@ if (error) { error->clear(); } - Q_FOREACH (const KService::Ptr &ptr, offers) { + for (const KService::Ptr &ptr : offers) { T *component = ptr->template createInstance(parentWidget, parent, args, error); if (component) { return component; diff --git a/src/services/ktraderparsetree.cpp b/src/services/ktraderparsetree.cpp --- a/src/services/ktraderparsetree.cpp +++ b/src/services/ktraderparsetree.cpp @@ -507,7 +507,7 @@ if (c1.type == ParseContext::T_STRING && c2.type == ParseContext::T_STR_SEQ) { if (false && m_substring) { _context->b = false; - foreach (const QString &string, c2.strSeq) { + for (const QString &string : qAsConst(c2.strSeq)) { if (string.contains(c1.str, m_cs)) { _context->b = true; break; @@ -727,7 +727,7 @@ } } - foreach (const QVariant &p, offerValues) { + for (const QVariant &p : qAsConst(offerValues)) { if (p.isValid()) { // Determine new maximum/minimum if (extrema.type == PreferencesMaxima::PM_INVALID_INT) { diff --git a/src/sycoca/kbuildservicefactory.cpp b/src/sycoca/kbuildservicefactory.cpp --- a/src/sycoca/kbuildservicefactory.cpp +++ b/src/sycoca/kbuildservicefactory.cpp @@ -159,7 +159,8 @@ // We need to process parents before children, hence the recursive call in // collectInheritedServices(mime) and the QSet to process a given parent only once. QSet visitedMimes; - Q_FOREACH (const QString &mimeType, m_mimeTypeFactory->allMimeTypes()) { + const auto lst = m_mimeTypeFactory->allMimeTypes(); + for (const QString &mimeType : lst) { collectInheritedServices(mimeType, visitedMimes); } } @@ -177,8 +178,9 @@ int mimeTypeInheritanceLevel = 0; QMimeDatabase db; - QMimeType qmime = db.mimeTypeForName(mimeTypeName); - Q_FOREACH (QString parentMimeType, qmime.parentMimeTypes()) { + const QMimeType qmime = db.mimeTypeForName(mimeTypeName); + const auto lst = qmime.parentMimeTypes(); + for (QString parentMimeType : lst) { // Workaround issue in shared-mime-info and/or Qt, which sometimes return an alias as parent parentMimeType = db.mimeTypeForName(parentMimeType).name(); @@ -299,7 +301,8 @@ } } else { bool shouldAdd = true; - foreach (const QString &otherType, service->serviceTypes()) { + const auto lst = service->serviceTypes(); + for (const QString &otherType : lst) { // Skip derived types if the base class is listed (#321706) if (stName != otherType && mime.inherits(otherType)) { // But don't skip aliases (they got resolved into mime->name() already, but don't let two aliases cancel out) diff --git a/src/sycoca/kbuildsycoca.cpp b/src/sycoca/kbuildsycoca.cpp --- a/src/sycoca/kbuildsycoca.cpp +++ b/src/sycoca/kbuildsycoca.cpp @@ -148,10 +148,11 @@ entryDictList.reserve(factories()->size()); int i = 0; // For each factory - Q_FOREACH (KSycocaFactory* factory, *factories()) { + auto list = *factories(); + for (KSycocaFactory* factory : qAsConst(list)) { KBSEntryDict *entryDict = new KBSEntryDict; if (m_allEntries) { // incremental build - Q_FOREACH (const KSycocaEntry::Ptr &entry, (*m_allEntries)[i++]) { + for (const KSycocaEntry::Ptr &entry : qAsConst((*m_allEntries)[i++])) { //if (entry->entryPath().contains("fake")) // qCDebug(SYCOCA) << "inserting into entryDict:" << entry->entryPath() << entry; entryDict->insert(entry->entryPath(), entry); @@ -167,7 +168,8 @@ // Save the mtime of each dir, just before we list them // ## should we convert to UTC to avoid surprises when summer time kicks in? - Q_FOREACH (const QString &dir, factoryResourceDirs()) { + const auto lstDirs = factoryResourceDirs(); + for (const QString &dir : lstDirs) { qint64 stamp = 0; KSycocaUtilsPrivate::visitResourceDirectory(dir, [&stamp] (const QFileInfo &info) { stamp = qMax(stamp, info.lastModified().toMSecsSinceEpoch()); @@ -178,13 +180,14 @@ QMap allResourcesSubDirs; // dirs, kstandarddirs-resource-name // For each factory - Q_FOREACH (KSycocaFactory* factory, *factories()) { + list = *factories(); + for (KSycocaFactory* factory : qAsConst(list)) { // For each resource the factory deals with const KSycocaResourceList *list = factory->resourceList(); if (!list) { continue; } - Q_FOREACH (const KSycocaResource &res, *list) { + for (const KSycocaResource &res : qAsConst(*list)) { // With this we would get dirs, but not a unique list of relative files (for global+local merging to work) //const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, res.subdir, QStandardPaths::LocateDirectory); //allResourcesSubDirs[res.resource] += dirs; @@ -203,7 +206,7 @@ QSet relFiles; const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, m_resourceSubdir, QStandardPaths::LocateDirectory); qCDebug(SYCOCA) << "Looking for subdir" << m_resourceSubdir << "=>" << dirs; - Q_FOREACH (const QString &dir, dirs) { + for (const QString &dir : dirs) { QDirIterator it(dir, QDirIterator::Subdirectories); while (it.hasNext()) { const QString filePath = it.next(); @@ -228,7 +231,7 @@ continue; } - Q_FOREACH (const KSycocaResource &res, *list) { + for (const KSycocaResource &res : qAsConst(*list)) { if (res.resource != (*it1)) { continue; } @@ -272,7 +275,8 @@ // Storing the mtime *after* looking at these dirs is a tiny race condition, // but I'm not sure how to get the vfolder dirs upfront... - Q_FOREACH (QString dir, m_vfolder->allDirectories()) { + const auto allDirectories = m_vfolder->allDirectories(); + for (QString dir : allDirectories) { if (dir.endsWith(QLatin1Char('/'))) { dir.chop(1); // remove trailing slash, to avoid having ~/.local/share/applications twice } @@ -313,7 +317,7 @@ { QString caption = caption_; QString name = name_; - foreach (VFolderMenu::SubMenu *subMenu, menu->subMenus) { + for (VFolderMenu::SubMenu *subMenu : qAsConst(menu->subMenus)) { QString subName = name + subMenu->name + QLatin1Char('/'); QString directoryFile = subMenu->directoryFile; @@ -355,7 +359,7 @@ if (name.isEmpty()) { name += QLatin1Char('/'); } - foreach (const KService::Ptr &p, menu->items) { + for (const KService::Ptr &p : qAsConst(menu->items)) { if (m_menuTest) { if (!menu->isDeleted && !p->noDisplay()) printf("%s\t%s\t%s\n", qPrintable(caption), qPrintable(p->menuId()), @@ -513,7 +517,8 @@ //KSycocaFactory * servicetypeFactory = 0; //KBuildMimeTypeFactory * mimeTypeFactory = 0; KBuildServiceFactory *serviceFactory = nullptr; - Q_FOREACH (KSycocaFactory* factory, *factories()) { + auto lst = *factories(); + for (KSycocaFactory* factory : qAsConst(lst)) { qint32 aId; qint32 aOffset; aId = factory->factoryId(); @@ -547,7 +552,8 @@ qCDebug(SYCOCA) << "Saving"; // Write factory data.... - Q_FOREACH (KSycocaFactory* factory, *factories()) { + lst = *factories(); + for (KSycocaFactory* factory : qAsConst(lst)) { factory->save(*str); if (str->status() != QDataStream::Ok) { // ######## TODO: does this detect write errors, e.g. disk full? return; // error @@ -560,7 +566,8 @@ str->device()->seek(0); (*str) << qint32(KSycoca::version()); - Q_FOREACH (KSycocaFactory* factory, *factories()) { + lst = *factories(); + for (KSycocaFactory* factory : qAsConst(lst)) { qint32 aId; qint32 aOffset; aId = factory->factoryId(); @@ -627,7 +634,7 @@ return updateHash(filename, hash); } const QStringList files = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, resourceSubDir + QLatin1Char('/') + filename); - Q_FOREACH (const QString &file, files) { + for (const QString &file : files) { hash = updateHash(file, hash); } if (hash == 0 && !filename.endsWith(QLatin1String("update_ksycoca")) diff --git a/src/sycoca/kmimeassociations.cpp b/src/sycoca/kmimeassociations.cpp --- a/src/sycoca/kmimeassociations.cpp +++ b/src/sycoca/kmimeassociations.cpp @@ -54,17 +54,18 @@ QStringList mimeappsFileNames; // make the list of possible filenames from the spec ($desktop-mimeapps.list, then mimeapps.list) const QString desktops = QString::fromLocal8Bit(qgetenv("XDG_CURRENT_DESKTOP")); - foreach (const QString &desktop, desktops.split(QLatin1Char(':'), QString::SkipEmptyParts)) { + const auto list = desktops.split(QLatin1Char(':'), QString::SkipEmptyParts); + for (const QString &desktop : list) { mimeappsFileNames.append(desktop.toLower() + QLatin1String("-mimeapps.list")); } mimeappsFileNames.append(QStringLiteral("mimeapps.list")); // list the dirs in the order of the spec (XDG_CONFIG_HOME, XDG_CONFIG_DIRS, XDG_DATA_HOME, XDG_DATA_DIRS) const QStringList mimeappsDirs = QStandardPaths::standardLocations(QStandardPaths::GenericConfigLocation) + QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation); QStringList mimeappsFiles; // collect existing files - foreach (const QString &dir, mimeappsDirs) { - foreach (const QString &file, mimeappsFileNames) { + for (const QString &dir : mimeappsDirs) { + for (const QString &file : qAsConst(mimeappsFileNames)) { const QString filePath = dir + QLatin1Char('/') + file; if (QFile::exists(filePath)) { mimeappsFiles.append(filePath); @@ -105,14 +106,15 @@ { Q_UNUSED(file) // except in debug statements QMimeDatabase db; - Q_FOREACH (const QString &mimeName, group.keyList()) { + const auto keyList = group.keyList(); + for (const QString &mimeName : keyList) { const QStringList services = group.readXdgListEntry(mimeName); const QString resolvedMimeName = mimeName.startsWith(QLatin1String("x-scheme-handler/")) ? mimeName : db.mimeTypeForName(mimeName).name(); if (resolvedMimeName.isEmpty()) { qCDebug(SYCOCA) << file << "specifies unknown mimeType" << mimeName << "in" << group.name(); } else { int pref = basePreference; - Q_FOREACH (const QString &service, services) { + for (const QString &service : services) { KService::Ptr pService = m_serviceFactory->findServiceByStorageId(service); if (!pService) { qCDebug(SYCOCA) << file << "specifies unknown service" << service << "in" << group.name(); @@ -129,9 +131,10 @@ void KMimeAssociations::parseRemovedAssociations(const KConfigGroup &group, const QString &file) { Q_UNUSED(file) // except in debug statements - Q_FOREACH (const QString &mime, group.keyList()) { + const auto keyList = group.keyList(); + for (const QString &mime : keyList) { const QStringList services = group.readXdgListEntry(mime); - Q_FOREACH (const QString &service, services) { + for (const QString &service : services) { KService::Ptr pService = m_serviceFactory->findServiceByStorageId(service); if (!pService) { //qDebug() << file << "specifies unknown service" << service << "in" << group.name(); diff --git a/src/sycoca/ksycocadict.cpp b/src/sycoca/ksycocadict.cpp --- a/src/sycoca/ksycocadict.cpp +++ b/src/sycoca/ksycocadict.cpp @@ -514,7 +514,7 @@ /*qCDebug(SYCOCA) << QString("Duplicate lists: Offset = %1 list_size = %2") .arg(hashTable[i].duplicate_offset,8,16).arg(dups->count()); */ - Q_FOREACH (string_entry* dup, *dups) { + for (string_entry* dup : qAsConst(*dups)) { const qint32 offset = dup->payload->offset(); if (!offset) { const QString storageId = dup->payload->storageId(); diff --git a/src/sycoca/ksycocafactory.cpp b/src/sycoca/ksycocafactory.cpp --- a/src/sycoca/ksycocafactory.cpp +++ b/src/sycoca/ksycocafactory.cpp @@ -112,7 +112,7 @@ // Write all entries. int entryCount = 0; - Q_FOREACH(KSycocaEntry::Ptr entry, *m_entryDict) { + for(KSycocaEntry::Ptr entry : qAsConst(*m_entryDict)) { entry->d_ptr->save(str); entryCount++; } @@ -122,7 +122,7 @@ // Write indices... // Linear index str << qint32(entryCount); - Q_FOREACH(KSycocaEntry::Ptr entry, *m_entryDict) { + for(KSycocaEntry::Ptr entry : qAsConst(*m_entryDict)) { str << qint32(entry.data()->offset()); } diff --git a/src/sycoca/ksycocautils_p.h b/src/sycoca/ksycocautils_p.h --- a/src/sycoca/ksycocautils_p.h +++ b/src/sycoca/ksycocautils_p.h @@ -37,7 +37,7 @@ { QDir dir(dirname); const QFileInfoList list = dir.entryInfoList(QDir::NoDotAndDotDot | QDir::Dirs, QDir::Unsorted); - foreach (const QFileInfo &fi, list) { + for (const QFileInfo &fi : list) { if (fi.isDir() && !fi.isSymLink() && !fi.isBundle()) { // same check as in vfolder_menu.cpp if (!visitor(fi)) { return false; diff --git a/src/sycoca/vfolder_menu.cpp b/src/sycoca/vfolder_menu.cpp --- a/src/sycoca/vfolder_menu.cpp +++ b/src/sycoca/vfolder_menu.cpp @@ -114,15 +114,16 @@ void VFolderMenu::includeItems(QHash &items1, const QHash &items2) { - foreach (const KService::Ptr &p, items2) { + for (const KService::Ptr &p : items2) { items1.insert(p->menuId(), p); } } void VFolderMenu::matchItems(QHash &items1, const QHash &items2) { - foreach (const KService::Ptr &p, items1) { + const QHash tmpItems1 = items1; + for (const KService::Ptr &p : tmpItems1) { QString id = p->menuId(); if (!items2.contains(id)) { items1.remove(id); @@ -133,7 +134,7 @@ void VFolderMenu::excludeItems(QHash &items1, const QHash &items2) { - foreach (const KService::Ptr &p, items2) { + for (const KService::Ptr &p : items2) { items1.remove(p->menuId()); } } @@ -226,7 +227,7 @@ const QString s2 = menuName.mid(i + 1); // Look up menu - foreach (SubMenu *menu, parentMenu->subMenus) { + for (SubMenu *menu : qAsConst(parentMenu->subMenus)) { if (menu->name == s1) { if (i == -1) { mergeMenu(menu, newMenu, reversePriority); @@ -264,7 +265,7 @@ QString s2 = name.mid(i + 1); // Look up menu - foreach (SubMenu *menu, parentMenu->subMenus) { + for (SubMenu *menu : qAsConst(parentMenu->subMenus)) { if (menu->name == s1) { insertService(menu, s2, newService); return; @@ -296,16 +297,16 @@ } #define FOR_ALL_APPLICATIONS(it) \ - foreach (AppsInfo *info, m_appsInfoStack) \ + for (AppsInfo *info : qAsConst(m_appsInfoStack)) \ { \ QHashIterator it = info->applications; \ while (it.hasNext()) \ { \ it.next(); #define FOR_ALL_APPLICATIONS_END } } #define FOR_CATEGORY(category, it) \ - foreach (AppsInfo *info, m_appsInfoStack) \ + for (AppsInfo *info : qAsConst(m_appsInfoStack)) \ { \ const KService::List list = info->dictCategories.value(category); \ for(KService::List::ConstIterator it = list.constBegin(); \ @@ -316,7 +317,7 @@ KService::Ptr VFolderMenu::findApplication(const QString &relPath) { - foreach (AppsInfo *info, m_appsInfoStack) { + for (AppsInfo *info : qAsConst(m_appsInfoStack)) { if (info->applications.contains(relPath)) { KService::Ptr s = info->applications[relPath]; if (s) { @@ -338,7 +339,7 @@ void VFolderMenu::buildApplicationIndex(bool unusedOnly) { - foreach (AppsInfo *info, m_appsInfoList) { + for (AppsInfo *info : qAsConst(m_appsInfoList)) { info->dictCategories.clear(); QMutableHashIterator it = info->applications; while (it.hasNext()) { @@ -349,7 +350,8 @@ continue; } - Q_FOREACH (const QString &cat, s->categories()) { + const auto categories = s->categories(); + for (const QString &cat : categories) { info->dictCategories[cat].append(s); // find or insert entry in hash } } @@ -605,22 +607,22 @@ const bool relative = QDir::isRelativePath(dir); const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericConfigLocation, QStringLiteral("menus/") + dir, QStandardPaths::LocateDirectory); - Q_FOREACH (const QString &menuDir, dirs) { + for (const QString &menuDir : dirs) { registerDirectory(menuDir); } QStringList fileList; - Q_FOREACH (const QString &menuDir, dirs) { + for (const QString &menuDir : dirs) { const QStringList fileNames = QDir(menuDir).entryList(QStringList() << QStringLiteral("*.menu")); - Q_FOREACH (const QString &file, fileNames) { + for (const QString &file : fileNames) { const QString fileToAdd = relative ? dir + file : menuDir + file; if (!fileList.contains(fileToAdd)) { fileList.append(fileToAdd); } } } - Q_FOREACH (const QString &file, fileList) { + for (const QString &file : qAsConst(fileList)) { pushDocInfo(file); mergeFile(docElem, n); popDocInfo(); @@ -651,7 +653,8 @@ static QString makeRelative(const QString &dir) { const QString canonical = QDir(dir).canonicalPath(); - Q_FOREACH (const QString &base, QStandardPaths::locateAll(QStandardPaths::GenericConfigLocation, QStringLiteral("menus"), QStandardPaths::LocateDirectory)) { + const auto list = QStandardPaths::locateAll(QStandardPaths::GenericConfigLocation, QStringLiteral("menus"), QStandardPaths::LocateDirectory); + for (const QString &base : list) { if (canonical.startsWith(base)) { return canonical.mid(base.length() + 1); } @@ -1044,7 +1047,7 @@ m_currentMenu = nullptr; // Look up menu if (parentMenu) { - foreach (SubMenu *menu, parentMenu->subMenus) { + for (SubMenu *menu : qAsConst(parentMenu->subMenus)) { if (menu->name == name) { m_currentMenu = menu; break; @@ -1079,7 +1082,7 @@ } else { // Look up menu if (parentMenu) { - foreach (SubMenu *menu, parentMenu->subMenus) { + for (SubMenu *menu : qAsConst(parentMenu->subMenus)) { if (menu->name == name) { m_currentMenu = menu; break; @@ -1366,15 +1369,15 @@ } } - foreach (VFolderMenu::SubMenu *subMenu, menu->subMenus) { + for (VFolderMenu::SubMenu *subMenu : qAsConst(menu->subMenus)) { layoutMenu(subMenu, defaultLayout); } } void VFolderMenu::markUsedApplications(const QHash &items) { - foreach (const KService::Ptr &p, items) { + for (const KService::Ptr &p : items) { m_usedAppsDict.insert(p->menuId()); } } diff --git a/tests/kmimeassociations_dumper.cpp b/tests/kmimeassociations_dumper.cpp --- a/tests/kmimeassociations_dumper.cpp +++ b/tests/kmimeassociations_dumper.cpp @@ -55,7 +55,8 @@ mimeAppsParser.parseAllMimeAppsList(); QTextStream output(stdout); - foreach (const KServiceOffer &offer, offers.offersFor(mime)) { + const auto list = offers.offersFor(mime); + for (const KServiceOffer &offer : list) { output << offer.service()->desktopEntryName() << " " << offer.service()->entryPath() << "\n"; } diff --git a/tests/pluginlocator/plugintest.cpp b/tests/pluginlocator/plugintest.cpp --- a/tests/pluginlocator/plugintest.cpp +++ b/tests/pluginlocator/plugintest.cpp @@ -106,7 +106,7 @@ int unitDiv = 1000; QString unit = QStringLiteral("microsec"); int i = 0; - foreach (qint64 t, timings) { + for (qint64 t : timings) { int msec = t / 1000000; qDebug() << " Run " << i << ": " << msec << " msec"; totalTime += t; @@ -146,10 +146,10 @@ bool ok = false; QString pluginName("time"); QString constraint = QStringLiteral("[X-KDE-PluginInfo-Name] == '%1'").arg(pluginName); - KPluginInfo::List res = KPluginTrader::self()->query(QStringLiteral("kf5"), serviceType, QString()); + const KPluginInfo::List res = KPluginTrader::self()->query(QStringLiteral("kf5"), serviceType, QString()); qDebug() << "----------- Found " << res.count() << " Plugins" << constraint; ok = res.count() > 0; - foreach (const KPluginInfo &info, res) { + for (const KPluginInfo &info : res) { qDebug() << " file: " << info.libraryPath(); } @@ -180,10 +180,10 @@ << QStringLiteral("5000"); QStringList datadirs; - foreach (const QString &_s, sizes) { + for (const QString &_s : sizes) { datadirs << pluginDir + _s; } - foreach (const QString &subdir, datadirs) { + for (const QString &subdir : qAsConst(datadirs)) { const QString pluginName; const QString constraint; const QString serviceType;