do not capture by default all values in lambdas

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97 2024-10-30 17:55:02 +02:00
parent e7ff3146fe
commit 82bffabb69
No known key found for this signature in database
GPG Key ID: 55EF5DA53DB36318
38 changed files with 170 additions and 186 deletions

View File

@ -835,7 +835,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv)
":/icons/multimc/128x128/instances/", ":/icons/multimc/scalable/instances/" }; ":/icons/multimc/128x128/instances/", ":/icons/multimc/scalable/instances/" };
m_icons.reset(new IconList(instFolders, setting->get().toString())); m_icons.reset(new IconList(instFolders, setting->get().toString()));
connect(setting.get(), &Setting::SettingChanged, connect(setting.get(), &Setting::SettingChanged,
[&](const Setting&, QVariant value) { m_icons->directoryChanged(value.toString()); }); [this](const Setting&, QVariant value) { m_icons->directoryChanged(value.toString()); });
qDebug() << "<> Instance icons initialized."; qDebug() << "<> Instance icons initialized.";
} }
@ -1070,11 +1070,11 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv)
bool Application::createSetupWizard() bool Application::createSetupWizard()
{ {
bool javaRequired = [&]() { bool javaRequired = [this]() {
if (BuildConfig.JAVA_DOWNLOADER_ENABLED && m_settings->get("AutomaticJavaDownload").toBool()) { if (BuildConfig.JAVA_DOWNLOADER_ENABLED && settings()->get("AutomaticJavaDownload").toBool()) {
return false; return false;
} }
bool ignoreJavaWizard = m_settings->get("IgnoreJavaWizard").toBool(); bool ignoreJavaWizard = settings()->get("IgnoreJavaWizard").toBool();
if (ignoreJavaWizard) { if (ignoreJavaWizard) {
return false; return false;
} }
@ -1088,8 +1088,8 @@ bool Application::createSetupWizard()
QString actualPath = FS::ResolveExecutable(currentJavaPath); QString actualPath = FS::ResolveExecutable(currentJavaPath);
return actualPath.isNull(); return actualPath.isNull();
}(); }();
bool askjava = BuildConfig.JAVA_DOWNLOADER_ENABLED && !javaRequired && !m_settings->get("AutomaticJavaDownload").toBool() && bool askjava = BuildConfig.JAVA_DOWNLOADER_ENABLED && !javaRequired && !settings()->get("AutomaticJavaDownload").toBool() &&
!m_settings->get("AutomaticJavaSwitch").toBool() && !m_settings->get("UserAskedAboutAutomaticJavaDownload").toBool(); !settings()->get("AutomaticJavaSwitch").toBool() && !settings()->get("UserAskedAboutAutomaticJavaDownload").toBool();
bool languageRequired = settings()->get("Language").toString().isEmpty(); bool languageRequired = settings()->get("Language").toString().isEmpty();
bool pasteInterventionRequired = settings()->get("PastebinURL") != ""; bool pasteInterventionRequired = settings()->get("PastebinURL") != "";
bool validWidgets = m_themeManager->isValidApplicationTheme(settings()->get("ApplicationTheme").toString()); bool validWidgets = m_themeManager->isValidApplicationTheme(settings()->get("ApplicationTheme").toString());

View File

@ -27,7 +27,7 @@ void DataMigrationTask::executeTask()
// 1. Scan // 1. Scan
// Check how many files we gotta copy // Check how many files we gotta copy
m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), [&] { m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), [this] {
return m_copy(true); // dry run to collect amount of files return m_copy(true); // dry run to collect amount of files
}); });
connect(&m_copyFutureWatcher, &QFutureWatcher<bool>::finished, this, &DataMigrationTask::dryRunFinished); connect(&m_copyFutureWatcher, &QFutureWatcher<bool>::finished, this, &DataMigrationTask::dryRunFinished);
@ -60,7 +60,7 @@ void DataMigrationTask::dryRunFinished()
setProgress(m_copy.totalCopied(), m_toCopy); setProgress(m_copy.totalCopied(), m_toCopy);
setStatus(tr("Copying %1…").arg(shortenedName)); setStatus(tr("Copying %1…").arg(shortenedName));
}); });
m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), [&] { m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), [this] {
return m_copy(false); // actually copy now return m_copy(false); // actually copy now
}); });
connect(&m_copyFutureWatcher, &QFutureWatcher<bool>::finished, this, &DataMigrationTask::copyFinished); connect(&m_copyFutureWatcher, &QFutureWatcher<bool>::finished, this, &DataMigrationTask::copyFinished);

View File

@ -341,7 +341,7 @@ bool copy::operator()(const QString& offset, bool dryRun)
opt |= copy_opts::overwrite_existing; opt |= copy_opts::overwrite_existing;
// Function that'll do the actual copying // Function that'll do the actual copying
auto copy_file = [&](QString src_path, QString relative_dst_path) { auto copy_file = [this, dryRun, src, dst, opt, &err](QString src_path, QString relative_dst_path) {
if (m_matcher && (m_matcher->matches(relative_dst_path) != m_whitelist)) if (m_matcher && (m_matcher->matches(relative_dst_path) != m_whitelist))
return; return;
@ -428,7 +428,7 @@ void create_link::make_link_list(const QString& offset)
m_recursive = true; m_recursive = true;
// Function that'll do the actual linking // Function that'll do the actual linking
auto link_file = [&](QString src_path, QString relative_dst_path) { auto link_file = [this, dst](QString src_path, QString relative_dst_path) {
if (m_matcher && (m_matcher->matches(relative_dst_path) != m_whitelist)) { if (m_matcher && (m_matcher->matches(relative_dst_path) != m_whitelist)) {
qDebug() << "path" << relative_dst_path << "in black list or not in whitelist"; qDebug() << "path" << relative_dst_path << "in black list or not in whitelist";
return; return;
@ -523,7 +523,7 @@ void create_link::runPrivileged(const QString& offset)
QString serverName = BuildConfig.LAUNCHER_APP_BINARY_NAME + "_filelink_server" + StringUtils::getRandomAlphaNumeric(); QString serverName = BuildConfig.LAUNCHER_APP_BINARY_NAME + "_filelink_server" + StringUtils::getRandomAlphaNumeric();
connect(&m_linkServer, &QLocalServer::newConnection, this, [&]() { connect(&m_linkServer, &QLocalServer::newConnection, this, [this, &gotResults]() {
qDebug() << "Client connected, sending out pairs"; qDebug() << "Client connected, sending out pairs";
// construct block of data to send // construct block of data to send
QByteArray block; QByteArray block;
@ -605,7 +605,7 @@ void create_link::runPrivileged(const QString& offset)
} }
ExternalLinkFileProcess* linkFileProcess = new ExternalLinkFileProcess(serverName, m_useHardLinks, this); ExternalLinkFileProcess* linkFileProcess = new ExternalLinkFileProcess(serverName, m_useHardLinks, this);
connect(linkFileProcess, &ExternalLinkFileProcess::processExited, this, [&]() { emit finishedPrivileged(gotResults); }); connect(linkFileProcess, &ExternalLinkFileProcess::processExited, this, [this, gotResults]() { emit finishedPrivileged(gotResults); });
connect(linkFileProcess, &ExternalLinkFileProcess::finished, linkFileProcess, &QObject::deleteLater); connect(linkFileProcess, &ExternalLinkFileProcess::finished, linkFileProcess, &QObject::deleteLater);
linkFileProcess->start(); linkFileProcess->start();
@ -1295,7 +1295,7 @@ bool clone::operator()(const QString& offset, bool dryRun)
std::error_code err; std::error_code err;
// Function that'll do the actual cloneing // Function that'll do the actual cloneing
auto cloneFile = [&](QString src_path, QString relative_dst_path) { auto cloneFile = [this, dryRun, dst, &err](QString src_path, QString relative_dst_path) {
if (m_matcher && (m_matcher->matches(relative_dst_path) != m_whitelist)) if (m_matcher && (m_matcher->matches(relative_dst_path) != m_whitelist))
return; return;

View File

@ -91,7 +91,7 @@ void InstanceCopyTask::executeTask()
QEventLoop loop; QEventLoop loop;
bool got_priv_results = false; bool got_priv_results = false;
connect(&folderLink, &FS::create_link::finishedPrivileged, this, [&](bool gotResults) { connect(&folderLink, &FS::create_link::finishedPrivileged, this, [&got_priv_results, &loop](bool gotResults) {
if (!gotResults) { if (!gotResults) {
qDebug() << "Privileged run exited without results!"; qDebug() << "Privileged run exited without results!";
} }

View File

@ -487,7 +487,7 @@ InstanceList::InstListError InstanceList::loadList()
int front_bookmark = -1; int front_bookmark = -1;
int back_bookmark = -1; int back_bookmark = -1;
int currentItem = -1; int currentItem = -1;
auto removeNow = [&]() { auto removeNow = [this, &front_bookmark, &back_bookmark, &currentItem]() {
beginRemoveRows(QModelIndex(), front_bookmark, back_bookmark); beginRemoveRows(QModelIndex(), front_bookmark, back_bookmark);
m_instances.erase(m_instances.begin() + front_bookmark, m_instances.begin() + back_bookmark + 1); m_instances.erase(m_instances.begin() + front_bookmark, m_instances.begin() + back_bookmark + 1);
endRemoveRows(); endRemoveRows();

View File

@ -79,7 +79,7 @@ void Version::parse()
if (m_string.isEmpty()) if (m_string.isEmpty())
return; return;
auto classChange = [&](QChar lastChar, QChar currentChar) { auto classChange = [&currentSection](QChar lastChar, QChar currentChar) {
if (lastChar.isNull()) if (lastChar.isNull())
return false; return false;
if (lastChar.isDigit() != currentChar.isDigit()) if (lastChar.isDigit() != currentChar.isDigit())

View File

@ -104,11 +104,11 @@ void FileLinkApp::joinServer(QString server)
in.setDevice(&socket); in.setDevice(&socket);
connect(&socket, &QLocalSocket::connected, this, [&]() { qDebug() << "connected to server"; }); connect(&socket, &QLocalSocket::connected, this, []() { qDebug() << "connected to server"; });
connect(&socket, &QLocalSocket::readyRead, this, &FileLinkApp::readPathPairs); connect(&socket, &QLocalSocket::readyRead, this, &FileLinkApp::readPathPairs);
connect(&socket, &QLocalSocket::errorOccurred, this, [&](QLocalSocket::LocalSocketError socketError) { connect(&socket, &QLocalSocket::errorOccurred, this, [this](QLocalSocket::LocalSocketError socketError) {
m_status = Failed; m_status = Failed;
switch (socketError) { switch (socketError) {
case QLocalSocket::ServerNotFoundError: case QLocalSocket::ServerNotFoundError:
@ -132,7 +132,7 @@ void FileLinkApp::joinServer(QString server)
} }
}); });
connect(&socket, &QLocalSocket::disconnected, this, [&]() { connect(&socket, &QLocalSocket::disconnected, this, [this]() {
qDebug() << "disconnected from server, should exit"; qDebug() << "disconnected from server, should exit";
m_status = Succeeded; m_status = Succeeded;
exit(); exit();

View File

@ -405,7 +405,7 @@ QList<QString> JavaUtils::FindJavaPaths()
{ {
QList<QString> javas; QList<QString> javas;
javas.append(this->GetDefaultJava()->path); javas.append(this->GetDefaultJava()->path);
auto scanJavaDir = [&]( auto scanJavaDir = [&javas](
const QString& dirPath, const QString& dirPath,
const std::function<bool(const QFileInfo&)>& filter = [](const QFileInfo&) { return true; }) { const std::function<bool(const QFileInfo&)>& filter = [](const QFileInfo&) { return true; }) {
QDir dir(dirPath); QDir dir(dirPath);
@ -424,7 +424,7 @@ QList<QString> JavaUtils::FindJavaPaths()
}; };
// java installed in a snap is installed in the standard directory, but underneath $SNAP // java installed in a snap is installed in the standard directory, but underneath $SNAP
auto snap = qEnvironmentVariable("SNAP"); auto snap = qEnvironmentVariable("SNAP");
auto scanJavaDirs = [&](const QString& dirPath) { auto scanJavaDirs = [scanJavaDir, snap](const QString& dirPath) {
scanJavaDir(dirPath); scanJavaDir(dirPath);
if (!snap.isNull()) { if (!snap.isNull()) {
scanJavaDir(snap + dirPath); scanJavaDir(snap + dirPath);
@ -546,12 +546,12 @@ QStringList getPrismJavaBundle()
{ {
QList<QString> javas; QList<QString> javas;
auto scanDir = [&](QString prefix) { auto scanDir = [&javas](QString prefix) {
javas.append(FS::PathCombine(prefix, "jre", "bin", JavaUtils::javaExecutable)); javas.append(FS::PathCombine(prefix, "jre", "bin", JavaUtils::javaExecutable));
javas.append(FS::PathCombine(prefix, "bin", JavaUtils::javaExecutable)); javas.append(FS::PathCombine(prefix, "bin", JavaUtils::javaExecutable));
javas.append(FS::PathCombine(prefix, JavaUtils::javaExecutable)); javas.append(FS::PathCombine(prefix, JavaUtils::javaExecutable));
}; };
auto scanJavaDir = [&](const QString& dirPath) { auto scanJavaDir = [scanDir](const QString& dirPath) {
QDir dir(dirPath); QDir dir(dirPath);
if (!dir.exists()) if (!dir.exists())
return; return;

View File

@ -65,7 +65,7 @@ void PostLaunchCommand::executeTask()
void PostLaunchCommand::on_state(LoggedProcess::State state) void PostLaunchCommand::on_state(LoggedProcess::State state)
{ {
auto getError = [&]() { return tr("Post-Launch command failed with code %1.\n\n").arg(m_process.exitCode()); }; auto getError = [this]() { return tr("Post-Launch command failed with code %1.\n\n").arg(m_process.exitCode()); };
switch (state) { switch (state) {
case LoggedProcess::Aborted: case LoggedProcess::Aborted:
case LoggedProcess::Crashed: case LoggedProcess::Crashed:

View File

@ -65,7 +65,7 @@ void PreLaunchCommand::executeTask()
void PreLaunchCommand::on_state(LoggedProcess::State state) void PreLaunchCommand::on_state(LoggedProcess::State state)
{ {
auto getError = [&]() { return tr("Pre-Launch command failed with code %1.\n\n").arg(m_process.exitCode()); }; auto getError = [this]() { return tr("Pre-Launch command failed with code %1.\n\n").arg(m_process.exitCode()); };
switch (state) { switch (state) {
case LoggedProcess::Aborted: case LoggedProcess::Aborted:
case LoggedProcess::Crashed: case LoggedProcess::Crashed:

View File

@ -159,8 +159,8 @@ Version::Ptr VersionList::getVersion(const QString& version)
bool VersionList::hasVersion(QString version) const bool VersionList::hasVersion(QString version) const
{ {
auto ver = auto ver = std::find_if(m_versions.constBegin(), m_versions.constEnd(),
std::find_if(m_versions.constBegin(), m_versions.constEnd(), [&](Meta::Version::Ptr const& a) { return a->version() == version; }); [version](Meta::Version::Ptr const& a) { return a->version() == version; });
return (ver != m_versions.constEnd()); return (ver != m_versions.constEnd());
} }

View File

@ -65,7 +65,7 @@ void Library::getApplicableFiles(const RuntimeContext& runtimeContext,
{ {
bool local = isLocal(); bool local = isLocal();
// Lambda function to get the absolute file path // Lambda function to get the absolute file path
auto actualPath = [&](QString relPath) { auto actualPath = [this, local, overridePath](QString relPath) {
relPath = FS::RemoveInvalidPathChars(relPath); relPath = FS::RemoveInvalidPathChars(relPath);
QFileInfo out(FS::PathCombine(storagePrefix(), relPath)); QFileInfo out(FS::PathCombine(storagePrefix(), relPath));
if (local && !overridePath.isEmpty()) { if (local && !overridePath.isEmpty()) {
@ -115,7 +115,7 @@ QList<Net::NetRequest::Ptr> Library::getDownloads(const RuntimeContext& runtimeC
bool local = isLocal(); bool local = isLocal();
// Lambda function to check if a local file exists // Lambda function to check if a local file exists
auto check_local_file = [&](QString storage) { auto check_local_file = [overridePath, &failedLocalFiles](QString storage) {
QFileInfo fileinfo(storage); QFileInfo fileinfo(storage);
QString fileName = fileinfo.fileName(); QString fileName = fileinfo.fileName();
auto fullPath = FS::PathCombine(overridePath, fileName); auto fullPath = FS::PathCombine(overridePath, fileName);
@ -128,7 +128,7 @@ QList<Net::NetRequest::Ptr> Library::getDownloads(const RuntimeContext& runtimeC
}; };
// Lambda function to add a download request // Lambda function to add a download request
auto add_download = [&](QString storage, QString url, QString sha1) { auto add_download = [this, local, check_local_file, cache, stale, &out](QString storage, QString url, QString sha1) {
if (local) { if (local) {
return check_local_file(storage); return check_local_file(storage);
} }
@ -198,7 +198,7 @@ QList<Net::NetRequest::Ptr> Library::getDownloads(const RuntimeContext& runtimeC
} }
} }
} else { } else {
auto raw_dl = [&]() { auto raw_dl = [this, raw_storage]() {
if (!m_absoluteURL.isEmpty()) { if (!m_absoluteURL.isEmpty()) {
return m_absoluteURL; return m_absoluteURL;
} }

View File

@ -854,7 +854,7 @@ QStringList MinecraftInstance::verboseDescription(AuthSessionPtr session, Minecr
out << "Libraries:"; out << "Libraries:";
QStringList jars, nativeJars; QStringList jars, nativeJars;
profile->getLibraryFiles(runtimeContext(), jars, nativeJars, getLocalLibraryPath(), binRoot()); profile->getLibraryFiles(runtimeContext(), jars, nativeJars, getLocalLibraryPath(), binRoot());
auto printLibFile = [&](const QString& path) { auto printLibFile = [&out](const QString& path) {
QFileInfo info(path); QFileInfo info(path);
if (info.exists()) { if (info.exists()) {
out << " " + path; out << " " + path;
@ -874,7 +874,7 @@ QStringList MinecraftInstance::verboseDescription(AuthSessionPtr session, Minecr
} }
// mods and core mods // mods and core mods
auto printModList = [&](const QString& label, ModFolderModel& model) { auto printModList = [&out](const QString& label, ModFolderModel& model) {
if (model.size()) { if (model.size()) {
out << QString("%1:").arg(label); out << QString("%1:").arg(label);
auto modList = model.allMods(); auto modList = model.allMods();

View File

@ -176,7 +176,7 @@ VersionFilePtr OneSixVersionFormat::versionFileFromJson(const QJsonDocument& doc
} }
} }
auto readLibs = [&](const char* which, QList<LibraryPtr>& outList) { auto readLibs = [&root, &out, &filename](const char* which, QList<LibraryPtr>& outList) {
for (auto libVal : requireArray(root.value(which))) { for (auto libVal : requireArray(root.value(which))) {
QJsonObject libObj = requireObject(libVal); QJsonObject libObj = requireObject(libVal);
// parse the library // parse the library

View File

@ -746,7 +746,7 @@ bool PackProfile::removeComponent_internal(ComponentPtr patch)
} }
// FIXME: we need a generic way of removing local resources, not just jar mods... // FIXME: we need a generic way of removing local resources, not just jar mods...
auto preRemoveJarMod = [&](LibraryPtr jarMod) -> bool { auto preRemoveJarMod = [this](LibraryPtr jarMod) -> bool {
if (!jarMod->isLocal()) { if (!jarMod->isLocal()) {
return true; return true;
} }

View File

@ -54,8 +54,8 @@ LauncherPartLaunch::LauncherPartLaunch(LaunchTask* parent)
{ {
if (parent->instance()->settings()->get("CloseAfterLaunch").toBool()) { if (parent->instance()->settings()->get("CloseAfterLaunch").toBool()) {
std::shared_ptr<QMetaObject::Connection> connection{ new QMetaObject::Connection }; std::shared_ptr<QMetaObject::Connection> connection{ new QMetaObject::Connection };
*connection = *connection = connect(
connect(&m_process, &LoggedProcess::log, this, [=](const QStringList& lines, [[maybe_unused]] MessageLevel::Enum level) { &m_process, &LoggedProcess::log, this, [connection](const QStringList& lines, [[maybe_unused]] MessageLevel::Enum level) {
qDebug() << lines; qDebug() << lines;
if (lines.filter(QRegularExpression(".*Setting user.+", QRegularExpression::CaseInsensitiveOption)).length() != 0) { if (lines.filter(QRegularExpression(".*Setting user.+", QRegularExpression::CaseInsensitiveOption)).length() != 0) {
APPLICATION->closeAllWindows(); APPLICATION->closeAllWindows();

View File

@ -245,7 +245,7 @@ bool ResourceFolderModel::update()
connect(m_current_update_task.get(), &Task::failed, this, &ResourceFolderModel::onUpdateFailed, Qt::ConnectionType::QueuedConnection); connect(m_current_update_task.get(), &Task::failed, this, &ResourceFolderModel::onUpdateFailed, Qt::ConnectionType::QueuedConnection);
connect( connect(
m_current_update_task.get(), &Task::finished, this, m_current_update_task.get(), &Task::finished, this,
[=] { [this] {
m_current_update_task.reset(); m_current_update_task.reset();
if (m_scheduled_update) { if (m_scheduled_update) {
m_scheduled_update = false; m_scheduled_update = false;
@ -277,11 +277,14 @@ void ResourceFolderModel::resolveResource(Resource* res)
m_active_parse_tasks.insert(ticket, task); m_active_parse_tasks.insert(ticket, task);
connect( connect(
task.get(), &Task::succeeded, this, [=] { onParseSucceeded(ticket, res->internal_id()); }, Qt::ConnectionType::QueuedConnection); task.get(), &Task::succeeded, this, [this, ticket, res] { onParseSucceeded(ticket, res->internal_id()); },
connect(task.get(), &Task::failed, this, [=] { onParseFailed(ticket, res->internal_id()); }, Qt::ConnectionType::QueuedConnection); Qt::ConnectionType::QueuedConnection);
connect(
task.get(), &Task::failed, this, [this, ticket, res] { onParseFailed(ticket, res->internal_id()); },
Qt::ConnectionType::QueuedConnection);
connect( connect(
task.get(), &Task::finished, this, task.get(), &Task::finished, this,
[=] { [this, ticket] {
m_active_parse_tasks.remove(ticket); m_active_parse_tasks.remove(ticket);
emit parseFinished(); emit parseFinished();
}, },

View File

@ -222,34 +222,34 @@ class ResourceFolderModel : public QAbstractListModel {
}; };
/* A macro to define useful functions to handle Resource* -> T* more easily on derived classes */ /* A macro to define useful functions to handle Resource* -> T* more easily on derived classes */
#define RESOURCE_HELPERS(T) \ #define RESOURCE_HELPERS(T) \
[[nodiscard]] T* operator[](int index) \ [[nodiscard]] T* operator[](int index) \
{ \ { \
return static_cast<T*>(m_resources[index].get()); \ return static_cast<T*>(m_resources[index].get()); \
} \ } \
[[nodiscard]] T* at(int index) \ [[nodiscard]] T* at(int index) \
{ \ { \
return static_cast<T*>(m_resources[index].get()); \ return static_cast<T*>(m_resources[index].get()); \
} \ } \
[[nodiscard]] const T* at(int index) const \ [[nodiscard]] const T* at(int index) const \
{ \ { \
return static_cast<const T*>(m_resources.at(index).get()); \ return static_cast<const T*>(m_resources.at(index).get()); \
} \ } \
[[nodiscard]] T* first() \ [[nodiscard]] T* first() \
{ \ { \
return static_cast<T*>(m_resources.first().get()); \ return static_cast<T*>(m_resources.first().get()); \
} \ } \
[[nodiscard]] T* last() \ [[nodiscard]] T* last() \
{ \ { \
return static_cast<T*>(m_resources.last().get()); \ return static_cast<T*>(m_resources.last().get()); \
} \ } \
[[nodiscard]] T* find(QString id) \ [[nodiscard]] T* find(QString id) \
{ \ { \
auto iter = std::find_if(m_resources.constBegin(), m_resources.constEnd(), \ auto iter = std::find_if(m_resources.constBegin(), m_resources.constEnd(), \
[&](Resource::Ptr const& r) { return r->internal_id() == id; }); \ [id](Resource::Ptr const& r) { return r->internal_id() == id; }); \
if (iter == m_resources.constEnd()) \ if (iter == m_resources.constEnd()) \
return nullptr; \ return nullptr; \
return static_cast<T*>((*iter).get()); \ return static_cast<T*>((*iter).get()); \
} }
/* Template definition to avoid some code duplication */ /* Template definition to avoid some code duplication */

View File

@ -24,7 +24,7 @@ namespace ModUtils {
// https://github.com/MinecraftForge/FML/wiki/FML-mod-information-file/5bf6a2d05145ec79387acc0d45c958642fb049fc // https://github.com/MinecraftForge/FML/wiki/FML-mod-information-file/5bf6a2d05145ec79387acc0d45c958642fb049fc
ModDetails ReadMCModInfo(QByteArray contents) ModDetails ReadMCModInfo(QByteArray contents)
{ {
auto getInfoFromArray = [&](QJsonArray arr) -> ModDetails { auto getInfoFromArray = [](QJsonArray arr) -> ModDetails {
if (!arr.at(0).isObject()) { if (!arr.at(0).isObject()) {
return {}; return {};
} }

View File

@ -25,7 +25,7 @@ void LibrariesTask::executeTask()
auto metacache = APPLICATION->metacache(); auto metacache = APPLICATION->metacache();
auto processArtifactPool = [&](const QList<LibraryPtr>& pool, QStringList& errors, const QString& localPath) { auto processArtifactPool = [this, inst, metacache](const QList<LibraryPtr>& pool, QStringList& errors, const QString& localPath) {
for (auto lib : pool) { for (auto lib : pool) {
if (!lib) { if (!lib) {
emitFailed(tr("Null jar is specified in the metadata, aborting.")); emitFailed(tr("Null jar is specified in the metadata, aborting."));

View File

@ -144,7 +144,7 @@ void EnsureMetadataTask::executeTask()
return; return;
} }
connect(project_task.get(), &Task::finished, this, [=] { connect(project_task.get(), &Task::finished, this, [this, invalidade_leftover, project_task] {
invalidade_leftover(); invalidade_leftover();
project_task->deleteLater(); project_task->deleteLater();
if (m_current_task) if (m_current_task)
@ -156,7 +156,7 @@ void EnsureMetadataTask::executeTask()
project_task->start(); project_task->start();
}); });
connect(version_task.get(), &Task::finished, [=] { connect(version_task.get(), &Task::finished, [this, version_task] {
version_task->deleteLater(); version_task->deleteLater();
if (m_current_task) if (m_current_task)
m_current_task.reset(); m_current_task.reset();

View File

@ -641,22 +641,22 @@ void PackInstallTask::installConfigs()
jobPtr->addNetAction(dl); jobPtr->addNetAction(dl);
archivePath = entry->getFullPath(); archivePath = entry->getFullPath();
connect(jobPtr.get(), &NetJob::succeeded, this, [&]() { connect(jobPtr.get(), &NetJob::succeeded, this, [this]() {
abortable = false; abortable = false;
jobPtr.reset(); jobPtr.reset();
extractConfigs(); extractConfigs();
}); });
connect(jobPtr.get(), &NetJob::failed, [&](QString reason) { connect(jobPtr.get(), &NetJob::failed, [this](QString reason) {
abortable = false; abortable = false;
jobPtr.reset(); jobPtr.reset();
emitFailed(reason); emitFailed(reason);
}); });
connect(jobPtr.get(), &NetJob::progress, [&](qint64 current, qint64 total) { connect(jobPtr.get(), &NetJob::progress, [this](qint64 current, qint64 total) {
abortable = true; abortable = true;
setProgress(current, total); setProgress(current, total);
}); });
connect(jobPtr.get(), &NetJob::stepProgress, this, &PackInstallTask::propagateStepProgress); connect(jobPtr.get(), &NetJob::stepProgress, this, &PackInstallTask::propagateStepProgress);
connect(jobPtr.get(), &NetJob::aborted, [&] { connect(jobPtr.get(), &NetJob::aborted, [this] {
abortable = false; abortable = false;
jobPtr.reset(); jobPtr.reset();
emitAborted(); emitAborted();
@ -685,8 +685,8 @@ void PackInstallTask::extractConfigs()
m_extractFuture = m_extractFuture =
QtConcurrent::run(QThreadPool::globalInstance(), MMCZip::extractDir, archivePath, extractDir.absolutePath() + "/minecraft"); QtConcurrent::run(QThreadPool::globalInstance(), MMCZip::extractDir, archivePath, extractDir.absolutePath() + "/minecraft");
#endif #endif
connect(&m_extractFutureWatcher, &QFutureWatcher<QStringList>::finished, this, [&]() { downloadMods(); }); connect(&m_extractFutureWatcher, &QFutureWatcher<QStringList>::finished, this, [this]() { downloadMods(); });
connect(&m_extractFutureWatcher, &QFutureWatcher<QStringList>::canceled, this, [&]() { emitAborted(); }); connect(&m_extractFutureWatcher, &QFutureWatcher<QStringList>::canceled, this, [this]() { emitAborted(); });
m_extractFutureWatcher.setFuture(m_extractFuture); m_extractFutureWatcher.setFuture(m_extractFuture);
} }

View File

@ -439,7 +439,7 @@ bool FlameCreationTask::createInstance()
m_mod_id_resolver.reset(new Flame::FileResolvingTask(APPLICATION->network(), m_pack)); m_mod_id_resolver.reset(new Flame::FileResolvingTask(APPLICATION->network(), m_pack));
connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::succeeded, this, [this, &loop] { idResolverSucceeded(loop); }); connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::succeeded, this, [this, &loop] { idResolverSucceeded(loop); });
connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::failed, [&](QString reason) { connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::failed, [this, &loop](QString reason) {
m_mod_id_resolver.reset(); m_mod_id_resolver.reset();
setError(tr("Unable to resolve mod IDs:\n") + reason); setError(tr("Unable to resolve mod IDs:\n") + reason);
loop.quit(); loop.quit();
@ -561,7 +561,7 @@ void FlameCreationTask::setupDownloadJob(QEventLoop& loop)
m_files_job.reset(); m_files_job.reset();
validateZIPResources(loop); validateZIPResources(loop);
}); });
connect(m_files_job.get(), &NetJob::failed, [&](QString reason) { connect(m_files_job.get(), &NetJob::failed, [this](QString reason) {
m_files_job.reset(); m_files_job.reset();
setError(reason); setError(reason);
}); });

View File

@ -141,7 +141,7 @@ Task::Ptr NetworkResourceAPI::getDependencyVersion(DependencySearchArgs&& args,
netJob->addNetAction(Net::ApiDownload::makeByteArray(versions_url, response)); netJob->addNetAction(Net::ApiDownload::makeByteArray(versions_url, response));
QObject::connect(netJob.get(), &NetJob::succeeded, [=] { QObject::connect(netJob.get(), &NetJob::succeeded, [response, callbacks, args] {
QJsonParseError parse_error{}; QJsonParseError parse_error{};
QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error);
if (parse_error.error != QJsonParseError::NoError) { if (parse_error.error != QJsonParseError::NoError) {

View File

@ -283,13 +283,13 @@ bool ModrinthCreationTask::createInstance()
bool ended_well = false; bool ended_well = false;
connect(downloadMods.get(), &NetJob::succeeded, this, [&]() { ended_well = true; }); connect(downloadMods.get(), &NetJob::succeeded, this, [&ended_well]() { ended_well = true; });
connect(downloadMods.get(), &NetJob::failed, [&](const QString& reason) { connect(downloadMods.get(), &NetJob::failed, [this, &ended_well](const QString& reason) {
ended_well = false; ended_well = false;
setError(reason); setError(reason);
}); });
connect(downloadMods.get(), &NetJob::finished, &loop, &QEventLoop::quit); connect(downloadMods.get(), &NetJob::finished, &loop, &QEventLoop::quit);
connect(downloadMods.get(), &NetJob::progress, [&](qint64 current, qint64 total) { connect(downloadMods.get(), &NetJob::progress, [this](qint64 current, qint64 total) {
setDetails(tr("%1 out of %2 complete").arg(current).arg(total)); setDetails(tr("%1 out of %2 complete").arg(current).arg(total));
setProgress(current, total); setProgress(current, total);
}); });
@ -311,9 +311,9 @@ bool ModrinthCreationTask::createInstance()
QEventLoop ensureMetaLoop; QEventLoop ensureMetaLoop;
QDir folder = FS::PathCombine(instance.modsRoot(), ".index"); QDir folder = FS::PathCombine(instance.modsRoot(), ".index");
auto ensureMetadataTask = makeShared<EnsureMetadataTask>(mods, folder, ModPlatform::ResourceProvider::MODRINTH); auto ensureMetadataTask = makeShared<EnsureMetadataTask>(mods, folder, ModPlatform::ResourceProvider::MODRINTH);
connect(ensureMetadataTask.get(), &Task::succeeded, this, [&]() { ended_well = true; }); connect(ensureMetadataTask.get(), &Task::succeeded, this, [&ended_well]() { ended_well = true; });
connect(ensureMetadataTask.get(), &Task::finished, &ensureMetaLoop, &QEventLoop::quit); connect(ensureMetadataTask.get(), &Task::finished, &ensureMetaLoop, &QEventLoop::quit);
connect(ensureMetadataTask.get(), &Task::progress, [&](qint64 current, qint64 total) { connect(ensureMetadataTask.get(), &Task::progress, [this](qint64 current, qint64 total) {
setDetails(tr("%1 out of %2 complete").arg(current).arg(total)); setDetails(tr("%1 out of %2 complete").arg(current).arg(total));
setProgress(current, total); setProgress(current, total);
}); });

View File

@ -419,7 +419,7 @@ int TranslationsModel::columnCount([[maybe_unused]] const QModelIndex& parent) c
QVector<Language>::Iterator TranslationsModel::findLanguage(const QString& key) QVector<Language>::Iterator TranslationsModel::findLanguage(const QString& key)
{ {
return std::find_if(d->m_languages.begin(), d->m_languages.end(), [&](Language& lang) { return lang.key == key; }); return std::find_if(d->m_languages.begin(), d->m_languages.end(), [key](Language& lang) { return lang.key == key; });
} }
std::optional<Language> TranslationsModel::findLanguageAsOptional(const QString& key) std::optional<Language> TranslationsModel::findLanguageAsOptional(const QString& key)

View File

@ -112,7 +112,7 @@ static QStringList BrowseForFileInternal(QString context,
QFileDialog w(parentWidget, caption); QFileDialog w(parentWidget, caption);
QSet<QString> locations; QSet<QString> locations;
auto f = [&](QStandardPaths::StandardLocation l) { auto f = [&locations](QStandardPaths::StandardLocation l) {
QString location = QStandardPaths::writableLocation(l); QString location = QStandardPaths::writableLocation(l);
QFileInfo finfo(location); QFileInfo finfo(location);
if (!finfo.exists()) { if (!finfo.exists()) {

View File

@ -154,7 +154,7 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
// Qt doesn't like vertical moving toolbars, so we have to force them... // Qt doesn't like vertical moving toolbars, so we have to force them...
// See https://github.com/PolyMC/PolyMC/issues/493 // See https://github.com/PolyMC/PolyMC/issues/493
connect(ui->instanceToolBar, &QToolBar::orientationChanged, connect(ui->instanceToolBar, &QToolBar::orientationChanged,
[=](Qt::Orientation) { ui->instanceToolBar->setOrientation(Qt::Vertical); }); [this](Qt::Orientation) { ui->instanceToolBar->setOrientation(Qt::Vertical); });
// if you try to add a widget to a toolbar in a .ui file // if you try to add a widget to a toolbar in a .ui file
// qt designer will delete it when you save the file >:( // qt designer will delete it when you save the file >:(

View File

@ -106,9 +106,9 @@ void ModUpdateDialog::checkCandidates()
} }
connect(&check_task, &Task::failed, this, connect(&check_task, &Task::failed, this,
[&](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); [this](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); });
connect(&check_task, &Task::succeeded, this, [&]() { connect(&check_task, &Task::succeeded, this, [this, &check_task]() {
QStringList warnings = check_task.warnings(); QStringList warnings = check_task.warnings();
if (warnings.count()) { if (warnings.count()) {
CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->exec(); CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->exec();
@ -190,10 +190,14 @@ void ModUpdateDialog::checkCandidates()
auto depTask = makeShared<GetModDependenciesTask>(this, m_instance, m_mod_model.get(), selectedVers); auto depTask = makeShared<GetModDependenciesTask>(this, m_instance, m_mod_model.get(), selectedVers);
connect(depTask.get(), &Task::failed, this, connect(depTask.get(), &Task::failed, this,
[&](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); [this](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); });
connect(depTask.get(), &Task::succeeded, this, [&]() { auto weak = depTask.toWeakRef();
QStringList warnings = depTask->warnings(); connect(depTask.get(), &Task::succeeded, this, [this, weak]() {
QStringList warnings;
if (auto depTask = weak.lock()) {
warnings = depTask->warnings();
}
if (warnings.count()) { if (warnings.count()) {
CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->exec(); CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->exec();
} }
@ -273,7 +277,7 @@ auto ModUpdateDialog::ensureMetadata() -> bool
bool skip_rest = false; bool skip_rest = false;
ModPlatform::ResourceProvider provider_rest = ModPlatform::ResourceProvider::MODRINTH; ModPlatform::ResourceProvider provider_rest = ModPlatform::ResourceProvider::MODRINTH;
auto addToTmp = [&](Mod* m, ModPlatform::ResourceProvider p) { auto addToTmp = [&modrinth_tmp, &flame_tmp](Mod* m, ModPlatform::ResourceProvider p) {
switch (p) { switch (p) {
case ModPlatform::ResourceProvider::MODRINTH: case ModPlatform::ResourceProvider::MODRINTH:
modrinth_tmp.push_back(m); modrinth_tmp.push_back(m);

View File

@ -148,10 +148,14 @@ void ResourceDownloadDialog::confirm()
QStringList depNames; QStringList depNames;
if (auto task = getModDependenciesTask(); task) { if (auto task = getModDependenciesTask(); task) {
connect(task.get(), &Task::failed, this, connect(task.get(), &Task::failed, this,
[&](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); [this](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); });
connect(task.get(), &Task::succeeded, this, [&]() { auto weak = task.toWeakRef();
QStringList warnings = task->warnings(); connect(task.get(), &Task::succeeded, this, [this, weak]() {
QStringList warnings;
if (auto task = weak.lock()) {
warnings = task->warnings();
}
if (warnings.count()) { if (warnings.count()) {
CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->exec(); CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->exec();
} }

View File

@ -90,7 +90,7 @@ class LogFormatProxyModel : public QIdentityProxyModel {
QModelIndex find(const QModelIndex& start, const QString& value, bool reverse) const QModelIndex find(const QModelIndex& start, const QString& value, bool reverse) const
{ {
QModelIndex parentIndex = parent(start); QModelIndex parentIndex = parent(start);
auto compare = [&](int r) -> QModelIndex { auto compare = [this, start, parentIndex, value](int r) -> QModelIndex {
QModelIndex idx = index(r, start.column(), parentIndex); QModelIndex idx = index(r, start.column(), parentIndex);
if (!idx.isValid() || idx == start) { if (!idx.isValid() || idx == start) {
return QModelIndex(); return QModelIndex();

View File

@ -138,7 +138,7 @@ void OtherLogsPage::on_btnReload_clicked()
m_currentFile = QString(); m_currentFile = QString();
QMessageBox::critical(this, tr("Error"), tr("Unable to open %1 for reading: %2").arg(m_currentFile, file.errorString())); QMessageBox::critical(this, tr("Error"), tr("Unable to open %1 for reading: %2").arg(m_currentFile, file.errorString()));
} else { } else {
auto setPlainText = [&](const QString& text) { auto setPlainText = [this](const QString& text) {
QString fontFamily = APPLICATION->settings()->get("ConsoleFont").toString(); QString fontFamily = APPLICATION->settings()->get("ConsoleFont").toString();
bool conversionOk = false; bool conversionOk = false;
int fontSize = APPLICATION->settings()->get("ConsoleFontSize").toInt(&conversionOk); int fontSize = APPLICATION->settings()->get("ConsoleFontSize").toInt(&conversionOk);
@ -149,7 +149,7 @@ void OtherLogsPage::on_btnReload_clicked()
doc->setDefaultFont(QFont(fontFamily, fontSize)); doc->setDefaultFont(QFont(fontFamily, fontSize));
ui->text->setPlainText(text); ui->text->setPlainText(text);
}; };
auto showTooBig = [&]() { auto showTooBig = [setPlainText, &file]() {
setPlainText(tr("The file (%1) is too big. You may want to open it in a viewer optimized " setPlainText(tr("The file (%1) is too big. You may want to open it in a viewer optimized "
"for large files.") "for large files.")
.arg(file.fileName())); .arg(file.fileName()));

View File

@ -337,7 +337,7 @@ std::optional<QIcon> ResourceModel::getIcon(QModelIndex& index, const QUrl& url)
auto icon_fetch_action = Net::ApiDownload::makeCached(url, cache_entry); auto icon_fetch_action = Net::ApiDownload::makeCached(url, cache_entry);
auto full_file_path = cache_entry->getFullPath(); auto full_file_path = cache_entry->getFullPath();
connect(icon_fetch_action.get(), &Task::succeeded, this, [=] { connect(icon_fetch_action.get(), &Task::succeeded, this, [this, url, full_file_path, index] {
auto icon = QIcon(full_file_path); auto icon = QIcon(full_file_path);
QPixmapCache::insert(url.toString(), icon.pixmap(icon.actualSize({ 64, 64 }))); QPixmapCache::insert(url.toString(), icon.pixmap(icon.actualSize({ 64, 64 })));
@ -345,7 +345,7 @@ std::optional<QIcon> ResourceModel::getIcon(QModelIndex& index, const QUrl& url)
emit dataChanged(index, index, { Qt::DecorationRole }); emit dataChanged(index, index, { Qt::DecorationRole });
}); });
connect(icon_fetch_action.get(), &Task::failed, this, [=] { connect(icon_fetch_action.get(), &Task::failed, this, [this, url] {
m_currently_running_icon_actions.remove(url); m_currently_running_icon_actions.remove(url);
m_failed_icon_actions.insert(url); m_failed_icon_actions.insert(url);
}); });

View File

@ -57,7 +57,7 @@ void SetupWizard::pageChanged(int id)
if (basePagePtr->wantsRefreshButton()) { if (basePagePtr->wantsRefreshButton()) {
setButtonLayout({ QWizard::CustomButton1, QWizard::Stretch, QWizard::BackButton, QWizard::NextButton, QWizard::FinishButton }); setButtonLayout({ QWizard::CustomButton1, QWizard::Stretch, QWizard::BackButton, QWizard::NextButton, QWizard::FinishButton });
auto customButton = button(QWizard::CustomButton1); auto customButton = button(QWizard::CustomButton1);
connect(customButton, &QAbstractButton::clicked, [&]() { connect(customButton, &QAbstractButton::clicked, [this]() {
auto basePagePtr = getCurrentBasePage(); auto basePagePtr = getCurrentBasePage();
if (basePagePtr) { if (basePagePtr) {
basePagePtr->refresh(); basePagePtr->refresh();

View File

@ -181,7 +181,7 @@ bool CustomTheme::read(const QString& path, bool& hasCustomLogColors)
m_widgets = Json::requireString(root, "widgets", "Qt widget theme"); m_widgets = Json::requireString(root, "widgets", "Qt widget theme");
m_qssFilePath = Json::ensureString(root, "qssFilePath", "themeStyle.css"); m_qssFilePath = Json::ensureString(root, "qssFilePath", "themeStyle.css");
auto readColor = [&](const QJsonObject& colors, const QString& colorName) -> QColor { auto readColor = [](const QJsonObject& colors, const QString& colorName) -> QColor {
auto colorValue = Json::ensureString(colors, colorName, QString()); auto colorValue = Json::ensureString(colors, colorName, QString());
if (!colorValue.isEmpty()) { if (!colorValue.isEmpty()) {
QColor color(colorValue); QColor color(colorValue);
@ -196,7 +196,7 @@ bool CustomTheme::read(const QString& path, bool& hasCustomLogColors)
if (root.contains("colors")) { if (root.contains("colors")) {
auto colorsRoot = Json::requireObject(root, "colors"); auto colorsRoot = Json::requireObject(root, "colors");
auto readAndSetPaletteColor = [&](QPalette::ColorRole role, const QString& colorName) { auto readAndSetPaletteColor = [this, readColor, colorsRoot](QPalette::ColorRole role, const QString& colorName) {
auto color = readColor(colorsRoot, colorName); auto color = readColor(colorsRoot, colorName);
if (color.isValid()) { if (color.isValid()) {
m_palette.setColor(role, color); m_palette.setColor(role, color);
@ -229,7 +229,7 @@ bool CustomTheme::read(const QString& path, bool& hasCustomLogColors)
hasCustomLogColors = true; hasCustomLogColors = true;
auto logColorsRoot = Json::requireObject(root, "logColors"); auto logColorsRoot = Json::requireObject(root, "logColors");
auto readAndSetLogColor = [&](MessageLevel::Enum level, bool fg, const QString& colorName) { auto readAndSetLogColor = [this, readColor, logColorsRoot](MessageLevel::Enum level, bool fg, const QString& colorName) {
auto color = readColor(logColorsRoot, colorName); auto color = readColor(logColorsRoot, colorName);
if (color.isValid()) { if (color.isValid()) {
if (fg) if (fg)

View File

@ -37,7 +37,7 @@ class DummyResourceAPI : public ResourceAPI {
[[nodiscard]] Task::Ptr searchProjects(SearchArgs&&, SearchCallbacks&& callbacks) const override [[nodiscard]] Task::Ptr searchProjects(SearchArgs&&, SearchCallbacks&& callbacks) const override
{ {
auto task = makeShared<SearchTask>(); auto task = makeShared<SearchTask>();
QObject::connect(task.get(), &Task::succeeded, [=] { QObject::connect(task.get(), &Task::succeeded, [callbacks] {
auto json = searchRequestResult(); auto json = searchRequestResult();
callbacks.on_succeed(json); callbacks.on_succeed(json);
}); });

View File

@ -63,7 +63,7 @@ class LinkTask : public Task {
qDebug() << "EXPECTED: Link failure, Windows requires permissions for symlinks"; qDebug() << "EXPECTED: Link failure, Windows requires permissions for symlinks";
qDebug() << "atempting to run with privelage"; qDebug() << "atempting to run with privelage";
connect(m_lnk, &FS::create_link::finishedPrivileged, this, [&](bool gotResults) { connect(m_lnk, &FS::create_link::finishedPrivileged, this, [this](bool gotResults) {
if (gotResults) { if (gotResults) {
emitSucceeded(); emitSucceeded();
} else { } else {
@ -113,22 +113,12 @@ class FileSystemTest : public QObject {
QTest::addColumn<QString>("path1"); QTest::addColumn<QString>("path1");
QTest::addColumn<QString>("path2"); QTest::addColumn<QString>("path2");
QTest::newRow("qt 1") << "/abc/def/ghi/jkl" QTest::newRow("qt 1") << "/abc/def/ghi/jkl" << "/abc/def" << "ghi/jkl";
<< "/abc/def" QTest::newRow("qt 2") << "/abc/def/ghi/jkl" << "/abc/def/" << "ghi/jkl";
<< "ghi/jkl";
QTest::newRow("qt 2") << "/abc/def/ghi/jkl"
<< "/abc/def/"
<< "ghi/jkl";
#if defined(Q_OS_WIN) #if defined(Q_OS_WIN)
QTest::newRow("win native, from C:") << "C:/abc" QTest::newRow("win native, from C:") << "C:/abc" << "C:" << "abc";
<< "C:" QTest::newRow("win native 1") << "C:/abc/def/ghi/jkl" << "C:\\abc\\def" << "ghi\\jkl";
<< "abc"; QTest::newRow("win native 2") << "C:/abc/def/ghi/jkl" << "C:\\abc\\def\\" << "ghi\\jkl";
QTest::newRow("win native 1") << "C:/abc/def/ghi/jkl"
<< "C:\\abc\\def"
<< "ghi\\jkl";
QTest::newRow("win native 2") << "C:/abc/def/ghi/jkl"
<< "C:\\abc\\def\\"
<< "ghi\\jkl";
#endif #endif
} }
@ -148,39 +138,15 @@ class FileSystemTest : public QObject {
QTest::addColumn<QString>("path2"); QTest::addColumn<QString>("path2");
QTest::addColumn<QString>("path3"); QTest::addColumn<QString>("path3");
QTest::newRow("qt 1") << "/abc/def/ghi/jkl" QTest::newRow("qt 1") << "/abc/def/ghi/jkl" << "/abc" << "def" << "ghi/jkl";
<< "/abc" QTest::newRow("qt 2") << "/abc/def/ghi/jkl" << "/abc/" << "def" << "ghi/jkl";
<< "def" QTest::newRow("qt 3") << "/abc/def/ghi/jkl" << "/abc" << "def/" << "ghi/jkl";
<< "ghi/jkl"; QTest::newRow("qt 4") << "/abc/def/ghi/jkl" << "/abc/" << "def/" << "ghi/jkl";
QTest::newRow("qt 2") << "/abc/def/ghi/jkl"
<< "/abc/"
<< "def"
<< "ghi/jkl";
QTest::newRow("qt 3") << "/abc/def/ghi/jkl"
<< "/abc"
<< "def/"
<< "ghi/jkl";
QTest::newRow("qt 4") << "/abc/def/ghi/jkl"
<< "/abc/"
<< "def/"
<< "ghi/jkl";
#if defined(Q_OS_WIN) #if defined(Q_OS_WIN)
QTest::newRow("win 1") << "C:/abc/def/ghi/jkl" QTest::newRow("win 1") << "C:/abc/def/ghi/jkl" << "C:\\abc" << "def" << "ghi\\jkl";
<< "C:\\abc" QTest::newRow("win 2") << "C:/abc/def/ghi/jkl" << "C:\\abc\\" << "def" << "ghi\\jkl";
<< "def" QTest::newRow("win 3") << "C:/abc/def/ghi/jkl" << "C:\\abc" << "def\\" << "ghi\\jkl";
<< "ghi\\jkl"; QTest::newRow("win 4") << "C:/abc/def/ghi/jkl" << "C:\\abc\\" << "def" << "ghi\\jkl";
QTest::newRow("win 2") << "C:/abc/def/ghi/jkl"
<< "C:\\abc\\"
<< "def"
<< "ghi\\jkl";
QTest::newRow("win 3") << "C:/abc/def/ghi/jkl"
<< "C:\\abc"
<< "def\\"
<< "ghi\\jkl";
QTest::newRow("win 4") << "C:/abc/def/ghi/jkl"
<< "C:\\abc\\"
<< "def"
<< "ghi\\jkl";
#endif #endif
} }
@ -369,11 +335,12 @@ class FileSystemTest : public QObject {
LinkTask lnk_tsk(folder, target_dir.path()); LinkTask lnk_tsk(folder, target_dir.path());
lnk_tsk.linkRecursively(false); lnk_tsk.linkRecursively(false);
QObject::connect(&lnk_tsk, &Task::finished, QObject::connect(&lnk_tsk, &Task::finished, [&lnk_tsk] {
[&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); }); QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been.");
});
lnk_tsk.start(); lnk_tsk.start();
QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); QVERIFY2(QTest::qWaitFor([&lnk_tsk]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should.");
for (auto entry : target_dir.entryList()) { for (auto entry : target_dir.entryList()) {
qDebug() << entry; qDebug() << entry;
@ -465,11 +432,12 @@ class FileSystemTest : public QObject {
RegexpMatcher re("[.]?mcmeta"); RegexpMatcher re("[.]?mcmeta");
lnk_tsk.matcher(&re); lnk_tsk.matcher(&re);
lnk_tsk.linkRecursively(true); lnk_tsk.linkRecursively(true);
QObject::connect(&lnk_tsk, &Task::finished, QObject::connect(&lnk_tsk, &Task::finished, [&lnk_tsk] {
[&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); }); QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been.");
});
lnk_tsk.start(); lnk_tsk.start();
QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); QVERIFY2(QTest::qWaitFor([&lnk_tsk]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should.");
for (auto entry : target_dir.entryList()) { for (auto entry : target_dir.entryList()) {
qDebug() << entry; qDebug() << entry;
@ -512,11 +480,12 @@ class FileSystemTest : public QObject {
lnk_tsk.matcher(&re); lnk_tsk.matcher(&re);
lnk_tsk.linkRecursively(true); lnk_tsk.linkRecursively(true);
lnk_tsk.whitelist(true); lnk_tsk.whitelist(true);
QObject::connect(&lnk_tsk, &Task::finished, QObject::connect(&lnk_tsk, &Task::finished, [&lnk_tsk] {
[&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); }); QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been.");
});
lnk_tsk.start(); lnk_tsk.start();
QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); QVERIFY2(QTest::qWaitFor([&lnk_tsk]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should.");
for (auto entry : target_dir.entryList()) { for (auto entry : target_dir.entryList()) {
qDebug() << entry; qDebug() << entry;
@ -556,11 +525,12 @@ class FileSystemTest : public QObject {
LinkTask lnk_tsk(folder, target_dir.path()); LinkTask lnk_tsk(folder, target_dir.path());
lnk_tsk.linkRecursively(true); lnk_tsk.linkRecursively(true);
QObject::connect(&lnk_tsk, &Task::finished, QObject::connect(&lnk_tsk, &Task::finished, [&lnk_tsk] {
[&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); }); QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been.");
});
lnk_tsk.start(); lnk_tsk.start();
QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); QVERIFY2(QTest::qWaitFor([&lnk_tsk]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should.");
auto filter = QDir::Filter::Files | QDir::Filter::Dirs | QDir::Filter::Hidden; auto filter = QDir::Filter::Files | QDir::Filter::Dirs | QDir::Filter::Hidden;
@ -604,11 +574,12 @@ class FileSystemTest : public QObject {
qDebug() << target_dir.path(); qDebug() << target_dir.path();
LinkTask lnk_tsk(file, target_dir.filePath("pack.mcmeta")); LinkTask lnk_tsk(file, target_dir.filePath("pack.mcmeta"));
QObject::connect(&lnk_tsk, &Task::finished, QObject::connect(&lnk_tsk, &Task::finished, [&lnk_tsk] {
[&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); }); QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been.");
});
lnk_tsk.start(); lnk_tsk.start();
QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); QVERIFY2(QTest::qWaitFor([&lnk_tsk]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should.");
auto filter = QDir::Filter::Files; auto filter = QDir::Filter::Files;
@ -639,11 +610,12 @@ class FileSystemTest : public QObject {
LinkTask lnk_tsk(folder, target_dir.path()); LinkTask lnk_tsk(folder, target_dir.path());
lnk_tsk.linkRecursively(true); lnk_tsk.linkRecursively(true);
lnk_tsk.setMaxDepth(0); lnk_tsk.setMaxDepth(0);
QObject::connect(&lnk_tsk, &Task::finished, QObject::connect(&lnk_tsk, &Task::finished, [&lnk_tsk] {
[&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); }); QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been.");
});
lnk_tsk.start(); lnk_tsk.start();
QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); QVERIFY2(QTest::qWaitFor([&lnk_tsk]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should.");
QVERIFY(!QFileInfo(target_dir.path()).isSymLink()); QVERIFY(!QFileInfo(target_dir.path()).isSymLink());
@ -689,13 +661,14 @@ class FileSystemTest : public QObject {
LinkTask lnk_tsk(folder, target_dir.path()); LinkTask lnk_tsk(folder, target_dir.path());
lnk_tsk.linkRecursively(true); lnk_tsk.linkRecursively(true);
lnk_tsk.setMaxDepth(-1); lnk_tsk.setMaxDepth(-1);
QObject::connect(&lnk_tsk, &Task::finished, QObject::connect(&lnk_tsk, &Task::finished, [&lnk_tsk] {
[&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); }); QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been.");
});
lnk_tsk.start(); lnk_tsk.start();
QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); QVERIFY2(QTest::qWaitFor([&lnk_tsk]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should.");
std::function<void(QString)> verify_check = [&](QString check_path) { std::function<void(QString)> verify_check = [&verify_check](QString check_path) {
QDir check_dir(check_path); QDir check_dir(check_path);
auto filter = QDir::Filter::Files | QDir::Filter::Dirs | QDir::Filter::Hidden; auto filter = QDir::Filter::Files | QDir::Filter::Dirs | QDir::Filter::Hidden;
for (auto entry : check_dir.entryList(filter)) { for (auto entry : check_dir.entryList(filter)) {

View File

@ -66,7 +66,7 @@ class BigConcurrentTaskThread : public QThread {
} }
connect(&big_task, &Task::finished, this, &QThread::quit); connect(&big_task, &Task::finished, this, &QThread::quit);
connect(&m_deadline, &QTimer::timeout, this, [&] { connect(&m_deadline, &QTimer::timeout, this, [this] {
passed_the_deadline = true; passed_the_deadline = true;
quit(); quit();
}); });
@ -128,10 +128,10 @@ class TaskTest : public QObject {
{ {
BasicTask t; BasicTask t;
QObject::connect(&t, &Task::finished, QObject::connect(&t, &Task::finished,
[&] { QVERIFY2(t.wasSuccessful(), "Task finished but was not successful when it should have been."); }); [&t] { QVERIFY2(t.wasSuccessful(), "Task finished but was not successful when it should have been."); });
t.start(); t.start();
QVERIFY2(QTest::qWaitFor([&]() { return t.isFinished(); }, 1000), "Task didn't finish as it should."); QVERIFY2(QTest::qWaitFor([&t]() { return t.isFinished(); }, 1000), "Task didn't finish as it should.");
} }
void test_basicConcurrentRun() void test_basicConcurrentRun()
@ -154,7 +154,7 @@ class TaskTest : public QObject {
}); });
t.start(); t.start();
QVERIFY2(QTest::qWaitFor([&]() { return t.isFinished(); }, 1000), "Task didn't finish as it should."); QVERIFY2(QTest::qWaitFor([&t]() { return t.isFinished(); }, 1000), "Task didn't finish as it should.");
} }
// Tests if starting new tasks after the 6 initial ones is working // Tests if starting new tasks after the 6 initial ones is working
@ -196,7 +196,7 @@ class TaskTest : public QObject {
}); });
t.start(); t.start();
QVERIFY2(QTest::qWaitFor([&]() { return t.isFinished(); }, 1000), "Task didn't finish as it should."); QVERIFY2(QTest::qWaitFor([&t]() { return t.isFinished(); }, 1000), "Task didn't finish as it should.");
} }
void test_basicSequentialRun() void test_basicSequentialRun()
@ -219,7 +219,7 @@ class TaskTest : public QObject {
}); });
t.start(); t.start();
QVERIFY2(QTest::qWaitFor([&]() { return t.isFinished(); }, 1000), "Task didn't finish as it should."); QVERIFY2(QTest::qWaitFor([&t]() { return t.isFinished(); }, 1000), "Task didn't finish as it should.");
} }
void test_basicMultipleOptionsRun() void test_basicMultipleOptionsRun()
@ -242,7 +242,7 @@ class TaskTest : public QObject {
}); });
t.start(); t.start();
QVERIFY2(QTest::qWaitFor([&]() { return t.isFinished(); }, 1000), "Task didn't finish as it should."); QVERIFY2(QTest::qWaitFor([&t]() { return t.isFinished(); }, 1000), "Task didn't finish as it should.");
} }
void test_stackOverflowInConcurrentTask() void test_stackOverflowInConcurrentTask()