From 8cf88ffc580310e2e814d097358ff783cd5c4416 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Mon, 7 Aug 2017 00:46:29 +0200 Subject: GH-1314 add UI for custom minecraft jar addition Also changes the text of the jar mod addition button. It should be clearer what it does and hopefully will not confuse as many people. --- application/GuiUtil.cpp | 21 ++++++++++++++++++--- application/GuiUtil.h | 1 + application/MultiMC.cpp | 3 --- application/pages/VersionPage.cpp | 34 ++++++++++------------------------ application/pages/VersionPage.h | 1 + application/pages/VersionPage.ui | 12 +++++++++--- 6 files changed, 39 insertions(+), 33 deletions(-) (limited to 'application') diff --git a/application/GuiUtil.cpp b/application/GuiUtil.cpp index 26050488..b05fc57c 100644 --- a/application/GuiUtil.cpp +++ b/application/GuiUtil.cpp @@ -56,8 +56,7 @@ void GuiUtil::setClipboardText(const QString &text) QApplication::clipboard()->setText(text); } - -QStringList GuiUtil::BrowseForFiles(QString context, QString caption, QString filter, QString defaultPath, QWidget *parentWidget) +static QStringList BrowseForFileInternal(QString context, QString caption, QString filter, QString defaultPath, QWidget *parentWidget, bool single) { static QMap savedPaths; @@ -82,7 +81,7 @@ QStringList GuiUtil::BrowseForFiles(QString context, QString caption, QString fi } urls.append(QUrl::fromLocalFile(defaultPath)); - w.setFileMode(QFileDialog::ExistingFiles); + w.setFileMode(single ? QFileDialog::ExistingFile : QFileDialog::ExistingFiles); w.setAcceptMode(QFileDialog::AcceptOpen); w.setNameFilter(filter); @@ -114,3 +113,19 @@ QStringList GuiUtil::BrowseForFiles(QString context, QString caption, QString fi savedPaths[context] = w.directory().absolutePath(); return {}; } + +QString GuiUtil::BrowseForFile(QString context, QString caption, QString filter, QString defaultPath, QWidget *parentWidget) +{ + auto resultList = BrowseForFileInternal(context, caption, filter, defaultPath, parentWidget, true); + if(resultList.size()) + { + return resultList[0]; + } + return QString(); +} + + +QStringList GuiUtil::BrowseForFiles(QString context, QString caption, QString filter, QString defaultPath, QWidget *parentWidget) +{ + return BrowseForFileInternal(context, caption, filter, defaultPath, parentWidget, false); +} diff --git a/application/GuiUtil.h b/application/GuiUtil.h index 52520c56..5e109383 100644 --- a/application/GuiUtil.h +++ b/application/GuiUtil.h @@ -7,4 +7,5 @@ namespace GuiUtil QString uploadPaste(const QString &text, QWidget *parentWidget); void setClipboardText(const QString &text); QStringList BrowseForFiles(QString context, QString caption, QString filter, QString defaultPath, QWidget *parentWidget); +QString BrowseForFile(QString context, QString caption, QString filter, QString defaultPath, QWidget *parentWidget); } diff --git a/application/MultiMC.cpp b/application/MultiMC.cpp index 64e6bba2..4eec3927 100644 --- a/application/MultiMC.cpp +++ b/application/MultiMC.cpp @@ -501,9 +501,6 @@ MultiMC::MultiMC(int &argc, char **argv) : QApplication(argc, argv) m_settings->registerSetting("UpdateDialogGeometry", ""); - // Jar mod nag dialog in version page - m_settings->registerSetting("JarModNagSeen", false); - // paste.ee API key m_settings->registerSetting("PasteEEAPIKey", "multimc"); diff --git a/application/pages/VersionPage.cpp b/application/pages/VersionPage.cpp index 8c14818f..90fd3241 100644 --- a/application/pages/VersionPage.cpp +++ b/application/pages/VersionPage.cpp @@ -250,34 +250,20 @@ void VersionPage::on_modBtn_clicked() void VersionPage::on_jarmodBtn_clicked() { - bool nagShown = false; - if (!m_profile->hasTrait("legacyLaunch") && !m_profile->hasTrait("alphaLaunch")) - { - // not legacy launch... nag - auto seenNag = MMC->settings()->get("JarModNagSeen").toBool(); - if(!seenNag) - { - auto result = QMessageBox::question(this, - tr("Are you sure?"), - tr("This will add mods directly to the Minecraft jar.\n" - "Unless you KNOW that this is what NEEDS to be done, you should just use the mods folder (Loader mods).\n" - "\n" - "Do you want to continue?"), - tr("I understand, continue."), tr("Cancel"), QString(), 1, 1 - ); - if(result != 0) - return; - nagShown = true; - } - } auto list = GuiUtil::BrowseForFiles("jarmod", tr("Select jar mods"), tr("Minecraft.jar mods (*.zip *.jar)"), MMC->settings()->get("CentralModsDir").toString(), this->parentWidget()); if(!list.empty()) { m_profile->installJarMods(list); - if(nagShown) - { - MMC->settings()->set("JarModNagSeen", QVariant(true)); - } + } + updateButtons(); +} + +void VersionPage::on_jarBtn_clicked() +{ + auto jarPath = GuiUtil::BrowseForFile("jar", tr("Select jar"), tr("Minecraft.jar replacement (*.jar)"), MMC->settings()->get("CentralModsDir").toString(), this->parentWidget()); + if(!jarPath.isEmpty()) + { + m_profile->installCustomJar(jarPath); } updateButtons(); } diff --git a/application/pages/VersionPage.h b/application/pages/VersionPage.h index cc6c0b7b..12a699eb 100644 --- a/application/pages/VersionPage.h +++ b/application/pages/VersionPage.h @@ -58,6 +58,7 @@ private slots: void on_moveUpBtn_clicked(); void on_moveDownBtn_clicked(); void on_jarmodBtn_clicked(); + void on_jarBtn_clicked(); void on_revertBtn_clicked(); void on_editBtn_clicked(); void on_modBtn_clicked(); diff --git a/application/pages/VersionPage.ui b/application/pages/VersionPage.ui index c16208db..afb33164 100644 --- a/application/pages/VersionPage.ui +++ b/application/pages/VersionPage.ui @@ -7,7 +7,7 @@ 0 0 693 - 750 + 788 @@ -206,7 +206,14 @@ Add a mod into the Minecraft jar file. - Add jar mod + Add to Minecraft.jar + + + + + + + Replace Minecraft.jar @@ -281,7 +288,6 @@ - tabWidget packageView changeVersionBtn moveUpBtn -- cgit v1.2.3