mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2025-04-29 22:24:26 +02:00
do not capture by default all values in lambdas
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
parent
e7ff3146fe
commit
82bffabb69
@ -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());
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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!";
|
||||||
}
|
}
|
||||||
|
@ -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, ¤tItem]() {
|
||||||
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();
|
||||||
|
@ -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 = [¤tSection](QChar lastChar, QChar currentChar) {
|
||||||
if (lastChar.isNull())
|
if (lastChar.isNull())
|
||||||
return false;
|
return false;
|
||||||
if (lastChar.isDigit() != currentChar.isDigit())
|
if (lastChar.isDigit() != currentChar.isDigit())
|
||||||
|
@ -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();
|
||||||
|
@ -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;
|
||||||
|
@ -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:
|
||||||
|
@ -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:
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
},
|
},
|
||||||
|
@ -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 */
|
||||||
|
@ -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 {};
|
||||||
}
|
}
|
||||||
|
@ -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."));
|
||||||
|
@ -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();
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
});
|
});
|
||||||
|
@ -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) {
|
||||||
|
@ -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);
|
||||||
});
|
});
|
||||||
|
@ -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)
|
||||||
|
@ -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()) {
|
||||||
|
@ -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 >:(
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
@ -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()));
|
||||||
|
@ -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);
|
||||||
});
|
});
|
||||||
|
@ -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();
|
||||||
|
@ -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)
|
||||||
|
@ -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);
|
||||||
});
|
});
|
||||||
|
@ -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)) {
|
||||||
|
@ -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()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user