Added management for downloaded javas from prism

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97
2024-02-09 22:47:39 +02:00
parent 0a3303bcbd
commit 27d662e642
7 changed files with 143 additions and 7 deletions

View File

@ -338,6 +338,7 @@ QList<QString> JavaUtils::FindJavaPaths()
candidates.append(getMinecraftJavaBundle());
candidates.append(getPrismJavaBundle());
candidates.append(getPrismExtraJavaPaths());
candidates = addJavasFromEnv(candidates);
candidates.removeDuplicates();
return candidates;
@ -365,6 +366,7 @@ QList<QString> JavaUtils::FindJavaPaths()
}
javas.append(getMinecraftJavaBundle());
javas.append(getPrismJavaBundle());
javas.append(getPrismExtraJavaPaths());
javas = addJavasFromEnv(javas);
javas.removeDuplicates();
return javas;
@ -418,6 +420,7 @@ QList<QString> JavaUtils::FindJavaPaths()
javas.append(getMinecraftJavaBundle());
javas.append(getPrismJavaBundle());
javas.append(getPrismExtraJavaPaths());
javas = addJavasFromEnv(javas);
javas.removeDuplicates();
return javas;
@ -432,6 +435,7 @@ QList<QString> JavaUtils::FindJavaPaths()
javas.append(getMinecraftJavaBundle());
javas.append(getPrismJavaBundle());
javas.append(getPrismExtraJavaPaths());
javas.removeDuplicates();
return addJavasFromEnv(javas);
}
@ -515,6 +519,33 @@ QStringList getPrismJavaBundle()
scanJavaDir(APPLICATION->javaPath());
return javas;
}
QStringList getPrismExtraJavaPaths()
{
QList<QString> javas;
QString executable = "java";
#if defined(Q_OS_WIN32)
executable += "w.exe";
#endif
auto scanDir = [&](QString prefix) {
javas.append(FS::PathCombine(prefix, "jre", "bin", executable));
javas.append(FS::PathCombine(prefix, "bin", executable));
javas.append(FS::PathCombine(prefix, executable));
};
auto scanJavaDir = [&](const QString& dirPath) {
QDir dir(dirPath);
if (!dir.exists())
return;
auto entries = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
for (auto& entry : entries) {
scanDir(entry.canonicalFilePath());
}
};
auto extra_paths = APPLICATION->settings()->get("JavaExtraSearchPaths").toStringList();
for (auto& entry : extra_paths) {
scanDir(entry);