diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,7 @@ PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5PurposeConfigVersion.cmake" SOVERSION 5) #add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x060000) - +add_definitions(-DQT_NO_FOREACH) add_subdirectory( src ) if (BUILD_TESTING) add_subdirectory( autotests ) diff --git a/autotests/menutest.cpp b/autotests/menutest.cpp --- a/autotests/menutest.cpp +++ b/autotests/menutest.cpp @@ -30,7 +30,8 @@ QAction* saveAsAction(Purpose::Menu* menu) { - foreach(QAction* action, menu->actions()) { + const auto actions = menu->actions(); + for (QAction* action : actions) { if (action->property("pluginId") == QLatin1String("saveasplugin")) { return action; } diff --git a/src/alternativesmodel.cpp b/src/alternativesmodel.cpp --- a/src/alternativesmodel.cpp +++ b/src/alternativesmodel.cpp @@ -52,7 +52,8 @@ static bool mimeTypeMatch(const QString& constraint, const QJsonValue& value) { if(value.isArray()) { - foreach(const QJsonValue& val, value.toArray()) { + const auto array = value.toArray(); + for (const QJsonValue& val : array) { if (mimeTypeMatch(constraint, val)) return true; } @@ -278,7 +279,7 @@ QVector ret; QSet addedPlugins; const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("kpackage/Purpose"), QStandardPaths::LocateDirectory); - foreach(const QString &dir, dirs) { + for (const QString &dir : dirs) { QDirIterator dirIt(dir, QDir::Dirs | QDir::NoDotAndDotDot); for(; dirIt.hasNext(); ) { @@ -306,7 +307,7 @@ } const QJsonArray inbound = d->m_pluginTypeData.value(QStringLiteral("X-Purpose-InboundArguments")).toArray(); - foreach(const QJsonValue& arg, inbound) { + for (const QJsonValue& arg : inbound) { if(!d->m_inputData.contains(arg.toString())) { qWarning() << "Cannot initialize model with data" << d->m_inputData << ". missing:" << arg; return; diff --git a/src/configuration.cpp b/src/configuration.cpp --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -121,7 +121,8 @@ { Q_D(const Configuration); bool ok = true; - Q_FOREACH(const QJsonValue& arg, neededArguments()) { + const auto arguments = neededArguments(); + for (const QJsonValue& arg : arguments) { if(!d->m_inputData.contains(arg.toString())) { qDebug() << "missing mandatory argument" << arg.toString(); ok = false; @@ -134,8 +135,8 @@ { Q_D(const Configuration); QJsonArray ret = d->m_pluginType.value(QStringLiteral("X-Purpose-InboundArguments")).toArray(); - QJsonArray arr = d->m_pluginData.rawData().value(QStringLiteral("X-Purpose-Configuration")).toArray(); - Q_FOREACH(const QJsonValue &val, arr) + const QJsonArray arr = d->m_pluginData.rawData().value(QStringLiteral("X-Purpose-Configuration")).toArray(); + for (const QJsonValue &val : arr) ret += val; return ret; } diff --git a/src/plugins/bluetooth/bluetoothplugin.cpp b/src/plugins/bluetooth/bluetoothplugin.cpp --- a/src/plugins/bluetooth/bluetoothplugin.cpp +++ b/src/plugins/bluetooth/bluetoothplugin.cpp @@ -34,7 +34,7 @@ QStringList arrayToList(const QJsonArray& array) { QStringList ret; - foreach(const QJsonValue& val, array) { + for (const QJsonValue& val : array) { QUrl url(val.toString()); if(url.isLocalFile()) { ret += url.toLocalFile(); diff --git a/src/plugins/imgur/imgurplugin.cpp b/src/plugins/imgur/imgurplugin.cpp --- a/src/plugins/imgur/imgurplugin.cpp +++ b/src/plugins/imgur/imgurplugin.cpp @@ -105,7 +105,7 @@ { Q_EMIT infoMessage(this, i18n("Uploading files to imgur...")); const QJsonArray urls = data().value(QStringLiteral("urls")).toArray(); - foreach(const QJsonValue &val, urls) { + for (const QJsonValue &val : urls) { QString u = val.toString(); KIO::StoredTransferJob* job = KIO::storedGet(QUrl(u)); connect(job, &KJob::finished, this, &ImgurShareJob::fileFetched); diff --git a/src/plugins/kdeconnect/kdeconnectplugin.cpp b/src/plugins/kdeconnect/kdeconnectplugin.cpp --- a/src/plugins/kdeconnect/kdeconnectplugin.cpp +++ b/src/plugins/kdeconnect/kdeconnectplugin.cpp @@ -37,7 +37,7 @@ QStringList arrayToList(const QJsonArray& array) { QStringList ret; - foreach(const QJsonValue& val, array) { + for (const QJsonValue& val : array) { ret += val.toString(); } return ret; diff --git a/src/plugins/kdeconnect_sms/kdeconnectsmsplugin.cpp b/src/plugins/kdeconnect_sms/kdeconnectsmsplugin.cpp --- a/src/plugins/kdeconnect_sms/kdeconnectsmsplugin.cpp +++ b/src/plugins/kdeconnect_sms/kdeconnectsmsplugin.cpp @@ -39,7 +39,7 @@ QStringList arrayToList(const QJsonArray& array) { QStringList ret; - foreach(const QJsonValue& val, array) { + for (const QJsonValue& val : array) { ret += val.toString(); } return ret; diff --git a/src/plugins/ktp-sendfile/ktpsendfileplugin.cpp b/src/plugins/ktp-sendfile/ktpsendfileplugin.cpp --- a/src/plugins/ktp-sendfile/ktpsendfileplugin.cpp +++ b/src/plugins/ktp-sendfile/ktpsendfileplugin.cpp @@ -38,7 +38,7 @@ QStringList arrayToList(const QJsonArray& array) { QStringList ret; - foreach(const QJsonValue& val, array) { + for (const QJsonValue& val : array) { ret += val.toString(); } return ret; diff --git a/src/plugins/nextcloud/nextcloudjob.cpp b/src/plugins/nextcloud/nextcloudjob.cpp --- a/src/plugins/nextcloud/nextcloudjob.cpp +++ b/src/plugins/nextcloud/nextcloudjob.cpp @@ -40,7 +40,8 @@ emitResult(); return; } - Q_FOREACH(const Accounts::Service &service, acc->services()) { + const auto services = acc->services(); + for (const Accounts::Service &service : services) { if (service.name() == QStringLiteral("nextcloud-upload")) { acc->selectService(service); } @@ -62,7 +63,7 @@ if (responseString.contains(QStringLiteral(""))) { const QJsonArray urls = data().value(QStringLiteral("urls")).toArray(); - foreach(const QJsonValue& url, urls) { + for (const QJsonValue& url : urls) { // before uploading, we try to avoid overwrite by checking for existing file on nextcloud QUrl local = QUrl(url.toString()); QUrl uploadTarget = m_davUrl; diff --git a/src/plugins/pastebin/pastebinplugin.cpp b/src/plugins/pastebin/pastebinplugin.cpp --- a/src/plugins/pastebin/pastebinplugin.cpp +++ b/src/plugins/pastebin/pastebinplugin.cpp @@ -47,16 +47,16 @@ void start() override { - QJsonArray urls = data().value(QStringLiteral("urls")).toArray(); + const QJsonArray urls = data().value(QStringLiteral("urls")).toArray(); if (urls.isEmpty()) { qWarning() << "no urls to share" << urls << data(); emitResult(); return; } m_pendingJobs = 0; - foreach(const QJsonValue &val, urls) { + for (const QJsonValue &val : urls) { QString u = val.toString(); KIO::StoredTransferJob* job = KIO::storedGet(QUrl(u), KIO::NoReload, KIO::HideProgressInfo); connect(job, &KJob::finished, this, &PastebinJob::fileFetched); diff --git a/src/plugins/phabricator/phabricatorjobs.cpp b/src/plugins/phabricator/phabricatorjobs.cpp --- a/src/plugins/phabricator/phabricatorjobs.cpp +++ b/src/plugins/phabricator/phabricatorjobs.cpp @@ -240,9 +240,9 @@ << m_arcCmd.error() << ";" << errorString(); } else { setPercent(99); - QStringList reviews = scrubbedResultList(); + const QStringList reviews = scrubbedResultList(); qCDebug(PLUGIN_PHABRICATOR) << "arc list returned:" << reviews; - foreach (auto rev, reviews) { + for (auto rev : reviews) { QRegExp revIDExpr(QString::fromUtf8(" D[0-9][0-9]*: ")); int idStart = rev.indexOf(revIDExpr); if (idStart >= 0) { diff --git a/src/plugins/phabricator/tests/testphabricator.cpp b/src/plugins/phabricator/tests/testphabricator.cpp --- a/src/plugins/phabricator/tests/testphabricator.cpp +++ b/src/plugins/phabricator/tests/testphabricator.cpp @@ -73,7 +73,8 @@ qCritical() << "Error getting diffList:" << diffList.errorString() << ";" << diffList.error(); } else { qWarning() << "Open differential revisions:" << diffList.reviewMap(); - foreach (const auto rev, diffList.reviews()) { + const auto reviews = diffList.reviews(); + for (const auto &rev : reviews) { qWarning() << rev; } } diff --git a/src/plugins/reviewboard/quick/rbrepositoriesmodel.cpp b/src/plugins/reviewboard/quick/rbrepositoriesmodel.cpp --- a/src/plugins/reviewboard/quick/rbrepositoriesmodel.cpp +++ b/src/plugins/reviewboard/quick/rbrepositoriesmodel.cpp @@ -76,7 +76,8 @@ beginResetModel(); m_values.clear(); - foreach(const QVariant& repo, pl->repositories()) { + const auto repositories = pl->repositories(); + for (const QVariant& repo : repositories) { const QVariantMap repoMap = repo.toMap(); m_values += Value { repoMap[QStringLiteral("name")], repoMap[QStringLiteral("path")] }; } diff --git a/src/plugins/reviewboard/quick/rbreviewslistmodel.cpp b/src/plugins/reviewboard/quick/rbreviewslistmodel.cpp --- a/src/plugins/reviewboard/quick/rbreviewslistmodel.cpp +++ b/src/plugins/reviewboard/quick/rbreviewslistmodel.cpp @@ -51,10 +51,10 @@ return; } - QVariantList revs = dynamic_cast(job)->reviews(); + const QVariantList revs = dynamic_cast(job)->reviews(); beginResetModel(); m_values.clear(); - foreach(const QVariant& review, revs) { + for (const QVariant& review : revs) { QVariantMap reviewMap = review.toMap(); QVariantMap repoMap = reviewMap[QStringLiteral("links")].toMap()[QStringLiteral("repository")].toMap(); if (repoMap[QStringLiteral("title")].toString() == m_repository) { diff --git a/src/plugins/reviewboard/reviewboardjobs.cpp b/src/plugins/reviewboard/reviewboardjobs.cpp --- a/src/plugins/reviewboard/reviewboardjobs.cpp +++ b/src/plugins/reviewboard/reviewboardjobs.cpp @@ -58,7 +58,7 @@ QByteArray multipartFormData(const QList >& values) { QByteArray form_data; - foreach(const auto& val, values) + for (const auto& val : values) { QByteArray hstr("--"); hstr += m_boundary; diff --git a/src/plugins/saveas/saveasplugin.cpp b/src/plugins/saveas/saveasplugin.cpp --- a/src/plugins/saveas/saveasplugin.cpp +++ b/src/plugins/saveas/saveasplugin.cpp @@ -53,7 +53,7 @@ void start() override { - QJsonArray inputUrls = data().value(QStringLiteral("urls")).toArray(); + const QJsonArray inputUrls = data().value(QStringLiteral("urls")).toArray(); if (inputUrls.isEmpty()) { setErrorText(i18n("No URLs to save")); @@ -64,7 +64,7 @@ QList urls; bool containsData = false; - foreach(const QJsonValue &val, inputUrls) { + for (const QJsonValue &val : inputUrls) { urls.append(QUrl(val.toString())); containsData |= urls.last().scheme() == QLatin1String("data"); } diff --git a/src/plugins/telegram/telegramplugin.cpp b/src/plugins/telegram/telegramplugin.cpp --- a/src/plugins/telegram/telegramplugin.cpp +++ b/src/plugins/telegram/telegramplugin.cpp @@ -45,7 +45,7 @@ QStringList arrayToList(const QJsonArray& array) { QStringList ret; - foreach(const QJsonValue& val, array) { + for (const QJsonValue& val : array) { QUrl url(val.toString()); if(url.isLocalFile()) { ret += KShell::quoteArg(url.toLocalFile()); diff --git a/src/plugins/youtube/youtubejobcomposite.cpp b/src/plugins/youtube/youtubejobcomposite.cpp --- a/src/plugins/youtube/youtubejobcomposite.cpp +++ b/src/plugins/youtube/youtubejobcomposite.cpp @@ -72,7 +72,7 @@ m_pendingJobs = 0; const QJsonArray urls = data().value(QStringLiteral("urls")).toArray(); - foreach(const QJsonValue& url, urls) { + for (const QJsonValue& url : urls) { YoutubeJob* job = new YoutubeJob(QUrl(url.toString()), accessToken, data().value(QStringLiteral("videoTitle")).toString(), diff --git a/tests/tool/main.cpp b/tests/tool/main.cpp --- a/tests/tool/main.cpp +++ b/tests/tool/main.cpp @@ -75,7 +75,7 @@ if (!files.isEmpty() && (!inputData.contains(QStringLiteral("urls")) || !inputData.contains(QStringLiteral("mimeType")))) { QMimeDatabase db; - Q_FOREACH(const QString& file, files) { + for (const QString& file : qAsConst(files)) { const QUrl url = QUrl::fromUserInput(file, QString(), QUrl::AssumeLocalFile); QMimeType type = db.mimeTypeForUrl(url); if (!common.isValid())