MCPcopy Create free account
hub / github.com/FreesmTeam/FreesmLauncher / downloadJava

Method downloadJava

launcher/minecraft/launch/AutoInstallJava.cpp:161–202  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

159}
160
161void AutoInstallJava::downloadJava(Meta::Version::Ptr version, QString javaName)
162{
163 auto runtimes = version->data()->runtimes;
164 for (auto java : runtimes) {
165 if (java->runtimeOS == m_supported_arch && java->name() == javaName) {
166 QDir javaDir(APPLICATION->javaPath());
167 auto final_path = javaDir.absoluteFilePath(java->m_name);
168 switch (java->downloadType) {
169 case Java::DownloadType::Manifest:
170 m_current_task = makeShared<Java::ManifestDownloadTask>(java->url, final_path, java->checksumType, java->checksumHash);
171 break;
172 case Java::DownloadType::Archive:
173 m_current_task = makeShared<Java::ArchiveDownloadTask>(java->url, final_path, java->checksumType, java->checksumHash);
174 break;
175 case Java::DownloadType::Unknown:
176 emitFailed(tr("Could not determine Java download type!"));
177 return;
178 }
179#if defined(Q_OS_MACOS)
180 auto seq = makeShared<SequentialTask>(tr("Install Java"));
181 seq->addTask(m_current_task);
182 seq->addTask(makeShared<Java::SymlinkTask>(final_path));
183 m_current_task = seq;
184#endif
185 auto deletePath = [final_path] { FS::deletePath(final_path); };
186 connect(m_current_task.get(), &Task::failed, this, [this, deletePath](QString reason) {
187 deletePath();
188 emitFailed(reason);
189 });
190 connect(m_current_task.get(), &Task::aborted, this, [deletePath] { deletePath(); });
191 connect(m_current_task.get(), &Task::succeeded, this, &AutoInstallJava::setJavaPathFromPartial);
192 connect(m_current_task.get(), &Task::failed, this, &AutoInstallJava::tryNextMajorJava);
193 connect(m_current_task.get(), &Task::progress, this, &AutoInstallJava::setProgress);
194 connect(m_current_task.get(), &Task::stepProgress, this, &AutoInstallJava::propagateStepProgress);
195 connect(m_current_task.get(), &Task::status, this, &AutoInstallJava::setStatus);
196 connect(m_current_task.get(), &Task::details, this, &AutoInstallJava::setDetails);
197 m_current_task->start();
198 return;
199 }
200 }
201 tryNextMajorJava();
202}
203
204void AutoInstallJava::tryNextMajorJava()
205{

Callers

nothing calls this directly

Calls 7

deletePathFunction · 0.85
addTaskMethod · 0.80
dataMethod · 0.45
nameMethod · 0.45
javaPathMethod · 0.45
getMethod · 0.45
startMethod · 0.45

Tested by

no test coverage detected