mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2025-06-12 05:07:46 +02:00
Added management for downloaded javas from prism
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
@ -46,7 +46,9 @@
|
||||
#include "java/JavaUtils.h"
|
||||
#include "tasks/ConcurrentTask.h"
|
||||
|
||||
JavaInstallList::JavaInstallList(QObject* parent) : BaseVersionList(parent) {}
|
||||
JavaInstallList::JavaInstallList(QObject* parent, bool onlyManagedVersions)
|
||||
: BaseVersionList(parent), m_only_managed_versions(onlyManagedVersions)
|
||||
{}
|
||||
|
||||
Task::Ptr JavaInstallList::getLoadTask()
|
||||
{
|
||||
@ -66,7 +68,7 @@ void JavaInstallList::load()
|
||||
{
|
||||
if (m_status != Status::InProgress) {
|
||||
m_status = Status::InProgress;
|
||||
m_load_task.reset(new JavaListLoadTask(this));
|
||||
m_load_task.reset(new JavaListLoadTask(this, m_only_managed_versions));
|
||||
m_load_task->start();
|
||||
}
|
||||
}
|
||||
@ -148,7 +150,7 @@ void JavaInstallList::sortVersions()
|
||||
endResetModel();
|
||||
}
|
||||
|
||||
JavaListLoadTask::JavaListLoadTask(JavaInstallList* vlist) : Task()
|
||||
JavaListLoadTask::JavaListLoadTask(JavaInstallList* vlist, bool onlyManagedVersions) : Task(), m_only_managed_versions(onlyManagedVersions)
|
||||
{
|
||||
m_list = vlist;
|
||||
m_current_recommended = NULL;
|
||||
@ -159,7 +161,7 @@ void JavaListLoadTask::executeTask()
|
||||
setStatus(tr("Detecting Java installations..."));
|
||||
|
||||
JavaUtils ju;
|
||||
QList<QString> candidate_paths = ju.FindJavaPaths();
|
||||
QList<QString> candidate_paths = m_only_managed_versions ? getPrismJavaBundle() : ju.FindJavaPaths();
|
||||
|
||||
ConcurrentTask::Ptr job(new ConcurrentTask(this, "Java detection", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()));
|
||||
m_job.reset(job);
|
||||
|
@ -33,7 +33,7 @@ class JavaInstallList : public BaseVersionList {
|
||||
enum class Status { NotDone, InProgress, Done };
|
||||
|
||||
public:
|
||||
explicit JavaInstallList(QObject* parent = 0);
|
||||
explicit JavaInstallList(QObject* parent = 0, bool onlyManagedVersions = false);
|
||||
|
||||
Task::Ptr getLoadTask() override;
|
||||
bool isLoaded() override;
|
||||
@ -55,13 +55,14 @@ class JavaInstallList : public BaseVersionList {
|
||||
Status m_status = Status::NotDone;
|
||||
shared_qobject_ptr<JavaListLoadTask> m_load_task;
|
||||
QList<BaseVersion::Ptr> m_vlist;
|
||||
bool m_only_managed_versions;
|
||||
};
|
||||
|
||||
class JavaListLoadTask : public Task {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit JavaListLoadTask(JavaInstallList* vlist);
|
||||
explicit JavaListLoadTask(JavaInstallList* vlist, bool onlyManagedVersions = false);
|
||||
virtual ~JavaListLoadTask() = default;
|
||||
|
||||
protected:
|
||||
@ -74,4 +75,5 @@ class JavaListLoadTask : public Task {
|
||||
JavaInstallList* m_list;
|
||||
JavaInstall* m_current_recommended;
|
||||
QList<JavaChecker::Result> m_results;
|
||||
bool m_only_managed_versions;
|
||||
};
|
||||
|
@ -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);
|
||||
|
@ -27,6 +27,7 @@ QString stripVariableEntries(QString name, QString target, QString remove);
|
||||
QProcessEnvironment CleanEnviroment();
|
||||
QStringList getMinecraftJavaBundle();
|
||||
QStringList getPrismJavaBundle();
|
||||
QStringList getPrismExtraJavaPaths();
|
||||
|
||||
class JavaUtils : public QObject {
|
||||
Q_OBJECT
|
||||
|
Reference in New Issue
Block a user