mirror of
https://github.com/PrismLauncher/PrismLauncher
synced 2026-04-23 09:05:03 +00:00
update local pack by url
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
parent
2e8256e322
commit
0b81260cab
|
|
@ -123,6 +123,7 @@ BaseInstance::BaseInstance(SettingsObject* globalSettings, std::unique_ptr<Setti
|
||||||
m_settings->registerSetting("ManagedPackName", "");
|
m_settings->registerSetting("ManagedPackName", "");
|
||||||
m_settings->registerSetting("ManagedPackVersionID", "");
|
m_settings->registerSetting("ManagedPackVersionID", "");
|
||||||
m_settings->registerSetting("ManagedPackVersionName", "");
|
m_settings->registerSetting("ManagedPackVersionName", "");
|
||||||
|
m_settings->registerSetting("ManagedPackURL", "");
|
||||||
|
|
||||||
m_settings->registerSetting("Profiler", "");
|
m_settings->registerSetting("Profiler", "");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#include "ManagedPackPage.h"
|
#include "ManagedPackPage.h"
|
||||||
#include <QDesktopServices>
|
#include <QDesktopServices>
|
||||||
|
#include <QLineEdit>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QUrlQuery>
|
#include <QUrlQuery>
|
||||||
#include "modplatform/ModIndex.h"
|
#include "modplatform/ModIndex.h"
|
||||||
|
|
@ -123,6 +124,8 @@ ManagedPackPage::ManagedPackPage(BaseInstance* inst, InstanceWindow* instance_wi
|
||||||
}
|
}
|
||||||
QDesktopServices::openUrl(url);
|
QDesktopServices::openUrl(url);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
connect(ui->urlLine, &QLineEdit::textChanged, this, [this](QString text) { m_inst->settings()->set("ManagedPackURL", text); });
|
||||||
}
|
}
|
||||||
|
|
||||||
ManagedPackPage::~ManagedPackPage()
|
ManagedPackPage::~ManagedPackPage()
|
||||||
|
|
@ -138,16 +141,20 @@ void ManagedPackPage::openedImpl()
|
||||||
ui->packOrigin->hide();
|
ui->packOrigin->hide();
|
||||||
ui->packOriginLabel->hide();
|
ui->packOriginLabel->hide();
|
||||||
ui->versionsComboBox->hide();
|
ui->versionsComboBox->hide();
|
||||||
ui->updateButton->hide();
|
ui->updateToVersionLabel->setText(tr("URL:"));
|
||||||
ui->updateToVersionLabel->hide();
|
ui->updateButton->setText(tr("Update Pack"));
|
||||||
ui->updateFromFileButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
|
ui->updateButton->setDisabled(false);
|
||||||
|
ui->urlLine->setText(m_inst->settings()->get("ManagedPackURL").toString());
|
||||||
|
|
||||||
ui->packName->setText(m_inst->name());
|
ui->packName->setText(m_inst->name());
|
||||||
ui->changelogTextBrowser->setText(tr("This is a local modpack.\n"
|
ui->changelogTextBrowser->setText(tr("This is a local modpack.\n"
|
||||||
"This can be updated only using a file in %1 format\n")
|
"This can be updated either using a file in %1 format or an URL.\n"
|
||||||
|
"Do not use a different format than the one mentioned as it may break the instance.\n"
|
||||||
|
"Make sure you also trust the URL.\n")
|
||||||
.arg(displayName()));
|
.arg(displayName()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
ui->urlLine->hide();
|
||||||
ui->packName->setText(m_inst->getManagedPackName());
|
ui->packName->setText(m_inst->getManagedPackName());
|
||||||
ui->packVersion->setText(m_inst->getManagedPackVersionName());
|
ui->packVersion->setText(m_inst->getManagedPackVersionName());
|
||||||
ui->packOrigin->setText(tr("Website: <a href=%1>%2</a> | Pack ID: %3 | Version ID: %4")
|
ui->packOrigin->setText(tr("Website: <a href=%1>%2</a> | Pack ID: %3 | Version ID: %4")
|
||||||
|
|
@ -339,6 +346,11 @@ void ManagedPackPage::onUpdateTaskCompleted(bool did_succeed) const
|
||||||
|
|
||||||
void ModrinthManagedPackPage::update()
|
void ModrinthManagedPackPage::update()
|
||||||
{
|
{
|
||||||
|
auto customURL = m_inst->settings()->get("ManagedPackURL").toString();
|
||||||
|
if (m_inst->getManagedPackID().isEmpty() && !customURL.isEmpty()) {
|
||||||
|
updatePack(customURL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
auto index = ui->versionsComboBox->currentIndex();
|
auto index = ui->versionsComboBox->currentIndex();
|
||||||
if (m_pack.versions.length() == 0) {
|
if (m_pack.versions.length() == 0) {
|
||||||
setFailState();
|
setFailState();
|
||||||
|
|
@ -346,25 +358,7 @@ void ModrinthManagedPackPage::update()
|
||||||
}
|
}
|
||||||
auto version = m_pack.versions.at(index);
|
auto version = m_pack.versions.at(index);
|
||||||
|
|
||||||
QMap<QString, QString> extra_info;
|
updatePack(version.downloadUrl, version.fileId.toString(), version.version);
|
||||||
// NOTE: Don't use 'm_pack.id' here, since we didn't completely parse all the metadata for the pack, including this field.
|
|
||||||
extra_info.insert("pack_id", m_inst->getManagedPackID());
|
|
||||||
extra_info.insert("pack_version_id", version.fileId.toString());
|
|
||||||
extra_info.insert("original_instance_id", m_inst->id());
|
|
||||||
|
|
||||||
auto extracted = new InstanceImportTask(version.downloadUrl, this, std::move(extra_info));
|
|
||||||
|
|
||||||
InstanceName inst_name(m_inst->getManagedPackName(), version.version);
|
|
||||||
inst_name.setName(m_inst->name().replace(m_inst->getManagedPackVersionName(), version.version));
|
|
||||||
extracted->setName(inst_name);
|
|
||||||
|
|
||||||
extracted->setGroup(APPLICATION->instances()->getInstanceGroup(m_inst->id()));
|
|
||||||
extracted->setIcon(m_inst->iconKey());
|
|
||||||
extracted->setConfirmUpdate(false);
|
|
||||||
|
|
||||||
// Run our task then handle the result
|
|
||||||
auto did_succeed = runUpdateTask(extracted);
|
|
||||||
onUpdateTaskCompleted(did_succeed);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModrinthManagedPackPage::updateFromFile()
|
void ModrinthManagedPackPage::updateFromFile()
|
||||||
|
|
@ -372,21 +366,8 @@ void ModrinthManagedPackPage::updateFromFile()
|
||||||
auto output = QFileDialog::getOpenFileUrl(this, tr("Choose update file"), QDir::homePath(), tr("Modrinth pack") + " (*.mrpack *.zip)");
|
auto output = QFileDialog::getOpenFileUrl(this, tr("Choose update file"), QDir::homePath(), tr("Modrinth pack") + " (*.mrpack *.zip)");
|
||||||
if (output.isEmpty())
|
if (output.isEmpty())
|
||||||
return;
|
return;
|
||||||
QMap<QString, QString> extra_info;
|
|
||||||
extra_info.insert("pack_id", m_inst->getManagedPackID());
|
|
||||||
extra_info.insert("pack_version_id", QString());
|
|
||||||
extra_info.insert("original_instance_id", m_inst->id());
|
|
||||||
|
|
||||||
auto extracted = new InstanceImportTask(output, this, std::move(extra_info));
|
updatePack(output);
|
||||||
|
|
||||||
extracted->setName(m_inst->name());
|
|
||||||
extracted->setGroup(APPLICATION->instances()->getInstanceGroup(m_inst->id()));
|
|
||||||
extracted->setIcon(m_inst->iconKey());
|
|
||||||
extracted->setConfirmUpdate(false);
|
|
||||||
|
|
||||||
// Run our task then handle the result
|
|
||||||
auto did_succeed = runUpdateTask(extracted);
|
|
||||||
onUpdateTaskCompleted(did_succeed);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// FLAME
|
// FLAME
|
||||||
|
|
@ -487,6 +468,11 @@ void FlameManagedPackPage::suggestVersion()
|
||||||
|
|
||||||
void FlameManagedPackPage::update()
|
void FlameManagedPackPage::update()
|
||||||
{
|
{
|
||||||
|
auto customURL = m_inst->settings()->get("ManagedPackURL").toString();
|
||||||
|
if (m_inst->getManagedPackID().isEmpty() && !customURL.isEmpty()) {
|
||||||
|
updatePack(customURL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
auto index = ui->versionsComboBox->currentIndex();
|
auto index = ui->versionsComboBox->currentIndex();
|
||||||
if (m_pack.versions.length() == 0) {
|
if (m_pack.versions.length() == 0) {
|
||||||
setFailState();
|
setFailState();
|
||||||
|
|
@ -494,20 +480,7 @@ void FlameManagedPackPage::update()
|
||||||
}
|
}
|
||||||
auto version = m_pack.versions.at(index);
|
auto version = m_pack.versions.at(index);
|
||||||
|
|
||||||
QMap<QString, QString> extra_info;
|
updatePack(version.downloadUrl, version.fileId.toString());
|
||||||
extra_info.insert("pack_id", m_inst->getManagedPackID());
|
|
||||||
extra_info.insert("pack_version_id", version.fileId.toString());
|
|
||||||
extra_info.insert("original_instance_id", m_inst->id());
|
|
||||||
|
|
||||||
auto extracted = new InstanceImportTask(version.downloadUrl, this, std::move(extra_info));
|
|
||||||
|
|
||||||
extracted->setName(m_inst->name());
|
|
||||||
extracted->setGroup(APPLICATION->instances()->getInstanceGroup(m_inst->id()));
|
|
||||||
extracted->setIcon(m_inst->iconKey());
|
|
||||||
extracted->setConfirmUpdate(false);
|
|
||||||
|
|
||||||
auto did_succeed = runUpdateTask(extracted);
|
|
||||||
onUpdateTaskCompleted(did_succeed);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FlameManagedPackPage::updateFromFile()
|
void FlameManagedPackPage::updateFromFile()
|
||||||
|
|
@ -516,19 +489,33 @@ void FlameManagedPackPage::updateFromFile()
|
||||||
if (output.isEmpty())
|
if (output.isEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
updatePack(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ManagedPackPage::updatePack(const QUrl& url, QString versionID, QString versionName)
|
||||||
|
{
|
||||||
QMap<QString, QString> extra_info;
|
QMap<QString, QString> extra_info;
|
||||||
|
// NOTE: Don't use 'm_pack.id' here, since we didn't completely parse all the metadata for the pack, including this field.
|
||||||
extra_info.insert("pack_id", m_inst->getManagedPackID());
|
extra_info.insert("pack_id", m_inst->getManagedPackID());
|
||||||
extra_info.insert("pack_version_id", QString());
|
extra_info.insert("pack_version_id", versionID);
|
||||||
extra_info.insert("original_instance_id", m_inst->id());
|
extra_info.insert("original_instance_id", m_inst->id());
|
||||||
|
|
||||||
auto extracted = new InstanceImportTask(output, this, std::move(extra_info));
|
auto extracted = new InstanceImportTask(url, this, std::move(extra_info));
|
||||||
|
|
||||||
extracted->setName(m_inst->name());
|
if (versionName.isEmpty()) {
|
||||||
|
extracted->setName(m_inst->name());
|
||||||
|
} else {
|
||||||
|
InstanceName inst_name(m_inst->getManagedPackName(), versionName);
|
||||||
|
inst_name.setName(m_inst->name().replace(m_inst->getManagedPackVersionName(), versionName));
|
||||||
|
extracted->setName(inst_name);
|
||||||
|
}
|
||||||
extracted->setGroup(APPLICATION->instances()->getInstanceGroup(m_inst->id()));
|
extracted->setGroup(APPLICATION->instances()->getInstanceGroup(m_inst->id()));
|
||||||
extracted->setIcon(m_inst->iconKey());
|
extracted->setIcon(m_inst->iconKey());
|
||||||
extracted->setConfirmUpdate(false);
|
extracted->setConfirmUpdate(false);
|
||||||
|
|
||||||
|
// Run our task then handle the result
|
||||||
auto did_succeed = runUpdateTask(extracted);
|
auto did_succeed = runUpdateTask(extracted);
|
||||||
onUpdateTaskCompleted(did_succeed);
|
onUpdateTaskCompleted(did_succeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "ManagedPackPage.moc"
|
#include "ManagedPackPage.moc"
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,8 @@ class ManagedPackPage : public QWidget, public BasePage {
|
||||||
*/
|
*/
|
||||||
bool runUpdateTask(InstanceTask*);
|
bool runUpdateTask(InstanceTask*);
|
||||||
|
|
||||||
|
void updatePack(const QUrl& url, QString versionID = {}, QString versionName = {});
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
InstanceWindow* m_instance_window = nullptr;
|
InstanceWindow* m_instance_window = nullptr;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,9 @@
|
||||||
<item>
|
<item>
|
||||||
<widget class="QComboBox" name="versionsComboBox"/>
|
<widget class="QComboBox" name="versionsComboBox"/>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="urlLine"/>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="updateButton">
|
<widget class="QPushButton" name="updateButton">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue