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("ManagedPackVersionID", "");
|
||||
m_settings->registerSetting("ManagedPackVersionName", "");
|
||||
m_settings->registerSetting("ManagedPackURL", "");
|
||||
|
||||
m_settings->registerSetting("Profiler", "");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
#include "ManagedPackPage.h"
|
||||
#include <QDesktopServices>
|
||||
#include <QLineEdit>
|
||||
#include <QUrl>
|
||||
#include <QUrlQuery>
|
||||
#include "modplatform/ModIndex.h"
|
||||
|
|
@ -123,6 +124,8 @@ ManagedPackPage::ManagedPackPage(BaseInstance* inst, InstanceWindow* instance_wi
|
|||
}
|
||||
QDesktopServices::openUrl(url);
|
||||
});
|
||||
|
||||
connect(ui->urlLine, &QLineEdit::textChanged, this, [this](QString text) { m_inst->settings()->set("ManagedPackURL", text); });
|
||||
}
|
||||
|
||||
ManagedPackPage::~ManagedPackPage()
|
||||
|
|
@ -138,16 +141,20 @@ void ManagedPackPage::openedImpl()
|
|||
ui->packOrigin->hide();
|
||||
ui->packOriginLabel->hide();
|
||||
ui->versionsComboBox->hide();
|
||||
ui->updateButton->hide();
|
||||
ui->updateToVersionLabel->hide();
|
||||
ui->updateFromFileButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
|
||||
ui->updateToVersionLabel->setText(tr("URL:"));
|
||||
ui->updateButton->setText(tr("Update Pack"));
|
||||
ui->updateButton->setDisabled(false);
|
||||
ui->urlLine->setText(m_inst->settings()->get("ManagedPackURL").toString());
|
||||
|
||||
ui->packName->setText(m_inst->name());
|
||||
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()));
|
||||
return;
|
||||
}
|
||||
ui->urlLine->hide();
|
||||
ui->packName->setText(m_inst->getManagedPackName());
|
||||
ui->packVersion->setText(m_inst->getManagedPackVersionName());
|
||||
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()
|
||||
{
|
||||
auto customURL = m_inst->settings()->get("ManagedPackURL").toString();
|
||||
if (m_inst->getManagedPackID().isEmpty() && !customURL.isEmpty()) {
|
||||
updatePack(customURL);
|
||||
return;
|
||||
}
|
||||
auto index = ui->versionsComboBox->currentIndex();
|
||||
if (m_pack.versions.length() == 0) {
|
||||
setFailState();
|
||||
|
|
@ -346,25 +358,7 @@ void ModrinthManagedPackPage::update()
|
|||
}
|
||||
auto version = m_pack.versions.at(index);
|
||||
|
||||
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_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);
|
||||
updatePack(version.downloadUrl, version.fileId.toString(), version.version);
|
||||
}
|
||||
|
||||
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)");
|
||||
if (output.isEmpty())
|
||||
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));
|
||||
|
||||
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);
|
||||
updatePack(output);
|
||||
}
|
||||
|
||||
// FLAME
|
||||
|
|
@ -487,6 +468,11 @@ void FlameManagedPackPage::suggestVersion()
|
|||
|
||||
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();
|
||||
if (m_pack.versions.length() == 0) {
|
||||
setFailState();
|
||||
|
|
@ -494,20 +480,7 @@ void FlameManagedPackPage::update()
|
|||
}
|
||||
auto version = m_pack.versions.at(index);
|
||||
|
||||
QMap<QString, QString> extra_info;
|
||||
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);
|
||||
updatePack(version.downloadUrl, version.fileId.toString());
|
||||
}
|
||||
|
||||
void FlameManagedPackPage::updateFromFile()
|
||||
|
|
@ -516,19 +489,33 @@ void FlameManagedPackPage::updateFromFile()
|
|||
if (output.isEmpty())
|
||||
return;
|
||||
|
||||
updatePack(output);
|
||||
}
|
||||
|
||||
void ManagedPackPage::updatePack(const QUrl& url, QString versionID, QString versionName)
|
||||
{
|
||||
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_version_id", QString());
|
||||
extra_info.insert("pack_version_id", versionID);
|
||||
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->setIcon(m_inst->iconKey());
|
||||
extracted->setConfirmUpdate(false);
|
||||
|
||||
// Run our task then handle the result
|
||||
auto did_succeed = runUpdateTask(extracted);
|
||||
onUpdateTaskCompleted(did_succeed);
|
||||
}
|
||||
|
||||
#include "ManagedPackPage.moc"
|
||||
|
|
|
|||
|
|
@ -86,6 +86,8 @@ class ManagedPackPage : public QWidget, public BasePage {
|
|||
*/
|
||||
bool runUpdateTask(InstanceTask*);
|
||||
|
||||
void updatePack(const QUrl& url, QString versionID = {}, QString versionName = {});
|
||||
|
||||
protected:
|
||||
InstanceWindow* m_instance_window = nullptr;
|
||||
|
||||
|
|
|
|||
|
|
@ -137,6 +137,9 @@
|
|||
<item>
|
||||
<widget class="QComboBox" name="versionsComboBox"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="urlLine"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="updateButton">
|
||||
<property name="enabled">
|
||||
|
|
|
|||
Loading…
Reference in a new issue