diff options
| author | TheKodeToad <TheKodeToad@proton.me> | 2023-07-09 22:10:43 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-09 22:10:43 +0100 | 
| commit | f816e3cd3fff4e27ec4f66db9f98bddab2efd1c9 (patch) | |
| tree | fffbb9e9898f58b1f98d682bca3cf5024d40512e /launcher/ui/pages/instance | |
| parent | 49109b9213a14718316e1e6328f37b4e86599dd4 (diff) | |
| parent | bc2940e16a8a7839a120a45be9232b5adebbe751 (diff) | |
| download | PrismLauncher-f816e3cd3fff4e27ec4f66db9f98bddab2efd1c9.tar.gz PrismLauncher-f816e3cd3fff4e27ec4f66db9f98bddab2efd1c9.tar.bz2 PrismLauncher-f816e3cd3fff4e27ec4f66db9f98bddab2efd1c9.zip | |
Merge pull request #1241 from Trial97/settings
Allow editing of running instances
Diffstat (limited to 'launcher/ui/pages/instance')
| -rw-r--r-- | launcher/ui/pages/instance/ExternalResourcesPage.cpp | 33 | ||||
| -rw-r--r-- | launcher/ui/pages/instance/ExternalResourcesPage.h | 2 | ||||
| -rw-r--r-- | launcher/ui/pages/instance/InstanceSettingsPage.cpp | 13 | ||||
| -rw-r--r-- | launcher/ui/pages/instance/InstanceSettingsPage.h | 3 | ||||
| -rw-r--r-- | launcher/ui/pages/instance/ModFolderPage.cpp | 29 | ||||
| -rw-r--r-- | launcher/ui/pages/instance/ModFolderPage.h | 1 | ||||
| -rw-r--r-- | launcher/ui/pages/instance/ResourcePackPage.cpp | 2 | ||||
| -rw-r--r-- | launcher/ui/pages/instance/ShaderPackPage.cpp | 3 | ||||
| -rw-r--r-- | launcher/ui/pages/instance/TexturePackPage.cpp | 2 | 
9 files changed, 33 insertions, 55 deletions
| diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.cpp b/launcher/ui/pages/instance/ExternalResourcesPage.cpp index 173bcb66..12038f88 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.cpp +++ b/launcher/ui/pages/instance/ExternalResourcesPage.cpp @@ -151,9 +151,6 @@ void ExternalResourcesPage::retranslate()  void ExternalResourcesPage::itemActivated(const QModelIndex&)  { -    if (!m_controlsEnabled) -        return; -      auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection());  } @@ -197,9 +194,6 @@ bool ExternalResourcesPage::eventFilter(QObject* obj, QEvent* ev)  void ExternalResourcesPage::addItem()  { -    if (!m_controlsEnabled) -        return; -      auto list = GuiUtil::BrowseForFiles(          helpPage(), tr("Select %1", "Select whatever type of files the page contains. Example: 'Loader Mods'").arg(displayName()),          m_fileSelectionFilter.arg(displayName()), APPLICATION->settings()->get("CentralModsDir").toString(), this->parentWidget()); @@ -213,9 +207,6 @@ void ExternalResourcesPage::addItem()  void ExternalResourcesPage::removeItem()  { -    if (!m_controlsEnabled) -        return; -      auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection());      int count = 0; @@ -259,23 +250,37 @@ void ExternalResourcesPage::removeItem()  void ExternalResourcesPage::removeItems(const QItemSelection& selection)  { +    if (m_instance != nullptr && m_instance->isRunning()) { +        auto response = CustomMessageBox::selectable(this, "Confirm Delete", +                                                     "If you remove this resource while the game is running it may crash your game.\n" +                                                     "Are you sure you want to do this?", +                                                     QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) +                            ->exec(); + +        if (response != QMessageBox::Yes) +            return; +    }      m_model->deleteResources(selection.indexes());  }  void ExternalResourcesPage::enableItem()  { -    if (!m_controlsEnabled) -        return; -      auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection());      m_model->setResourceEnabled(selection.indexes(), EnableAction::ENABLE);  }  void ExternalResourcesPage::disableItem()  { -    if (!m_controlsEnabled) -        return; +    if (m_instance != nullptr && m_instance->isRunning()) { +        auto response = CustomMessageBox::selectable(this, "Confirm disable", +                                                     "If you disable this resource while the game is running it may crash your game.\n" +                                                     "Are you sure you want to do this?", +                                                     QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) +                            ->exec(); +        if (response != QMessageBox::Yes) +            return; +    }      auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection());      m_model->setResourceEnabled(selection.indexes(), EnableAction::DISABLE);  } diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.h b/launcher/ui/pages/instance/ExternalResourcesPage.h index 6c0a12cb..97d922d8 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.h +++ b/launcher/ui/pages/instance/ExternalResourcesPage.h @@ -73,7 +73,5 @@ class ExternalResourcesPage : public QMainWindow, public BasePage {      QString m_fileSelectionFilter;      QString m_viewFilter; -    bool m_controlsEnabled = true; -      std::shared_ptr<Setting> m_wide_bar_setting = nullptr;  }; diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index 2a7c5b27..943ff17f 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -60,17 +60,13 @@ InstanceSettingsPage::InstanceSettingsPage(BaseInstance *inst, QWidget *parent)      m_settings = inst->settings();      ui->setupUi(this); -    // As the signal will (probably) not be triggered once we click edit, let's update it manually instead. -    updateRunningStatus(m_instance->isRunning()); - -    connect(m_instance, &BaseInstance::runningStatusChanged, this, &InstanceSettingsPage::updateRunningStatus);      connect(ui->openGlobalJavaSettingsButton, &QCommandLinkButton::clicked, this, &InstanceSettingsPage::globalSettingsButtonClicked);      connect(APPLICATION, &Application::globalSettingsAboutToOpen, this, &InstanceSettingsPage::applySettings);      connect(APPLICATION, &Application::globalSettingsClosed, this, &InstanceSettingsPage::loadSettings); -    connect(ui->instanceAccountSelector, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &InstanceSettingsPage::changeInstanceAccount); +    connect(ui->instanceAccountSelector, QOverload<int>::of(&QComboBox::currentIndexChanged), this, +            &InstanceSettingsPage::changeInstanceAccount);      loadSettings(); -      updateThresholds();  } @@ -523,8 +519,3 @@ void InstanceSettingsPage::updateThresholds()          ui->labelMaxMemIcon->setPixmap(pix);      }  } - -void InstanceSettingsPage::updateRunningStatus(bool running) -{ -    setEnabled(!running); -} diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.h b/launcher/ui/pages/instance/InstanceSettingsPage.h index 0438fe3b..036b4181 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.h +++ b/launcher/ui/pages/instance/InstanceSettingsPage.h @@ -79,8 +79,7 @@ public:      void updateThresholds(); -private slots: -    void updateRunningStatus(bool running); +   private slots:      void on_javaDetectBtn_clicked();      void on_javaTestBtn_clicked();      void on_javaBrowseBtn_clicked(); diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index 9f077618..cef292bd 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -92,9 +92,7 @@ ModFolderPage::ModFolderPage(BaseInstance* inst, std::shared_ptr<ModFolderModel>          ui->actionsToolbar->addAction(ui->actionVisitItemPage);          connect(ui->actionVisitItemPage, &QAction::triggered, this, &ModFolderPage::visitModPages); -        auto check_allow_update = [this] { -            return (!m_instance || !m_instance->isRunning()) && (ui->treeView->selectionModel()->hasSelection() || !m_model->empty()); -        }; +        auto check_allow_update = [this] { return ui->treeView->selectionModel()->hasSelection() || !m_model->empty(); };          connect(ui->treeView->selectionModel(), &QItemSelectionModel::selectionChanged, this, [this, check_allow_update] {              ui->actionUpdateItem->setEnabled(check_allow_update()); @@ -121,22 +119,9 @@ ModFolderPage::ModFolderPage(BaseInstance* inst, std::shared_ptr<ModFolderModel>          connect(mods.get(), &ModFolderModel::updateFinished, this,                  [this, check_allow_update] { ui->actionUpdateItem->setEnabled(check_allow_update()); }); - -        connect(m_instance, &BaseInstance::runningStatusChanged, this, &ModFolderPage::runningStateChanged); -        ModFolderPage::runningStateChanged(m_instance && m_instance->isRunning());      }  } -void ModFolderPage::runningStateChanged(bool running) -{ -    ui->actionDownloadItem->setEnabled(!running); -    ui->actionUpdateItem->setEnabled(!running); -    ui->actionAddItem->setEnabled(!running); -    ui->actionEnableItem->setEnabled(!running); -    ui->actionDisableItem->setEnabled(!running); -    ui->actionRemoveItem->setEnabled(!running); -} -  bool ModFolderPage::shouldDisplay() const  {      return true; @@ -155,13 +140,21 @@ bool ModFolderPage::onSelectionChanged(const QModelIndex& current, const QModelI  void ModFolderPage::removeItems(const QItemSelection& selection)  { +    if (m_instance != nullptr && m_instance->isRunning()) { +        auto response = CustomMessageBox::selectable(this, "Confirm Delete", +                                                     "If you remove mods while the game is running it may crash your game.\n" +                                                     "Are you sure you want to do this?", +                                                     QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) +                            ->exec(); + +        if (response != QMessageBox::Yes) +            return; +    }      m_model->deleteMods(selection.indexes());  }  void ModFolderPage::installMods()  { -    if (!m_controlsEnabled) -        return;      if (m_instance->typeName() != "Minecraft")          return;  // this is a null instance or a legacy instance diff --git a/launcher/ui/pages/instance/ModFolderPage.h b/launcher/ui/pages/instance/ModFolderPage.h index 2c1a9c77..a23dcae1 100644 --- a/launcher/ui/pages/instance/ModFolderPage.h +++ b/launcher/ui/pages/instance/ModFolderPage.h @@ -60,7 +60,6 @@ class ModFolderPage : public ExternalResourcesPage {      bool onSelectionChanged(const QModelIndex& current, const QModelIndex& previous) override;     private slots: -    void runningStateChanged(bool running);      void removeItems(const QItemSelection& selection) override;      void installMods(); diff --git a/launcher/ui/pages/instance/ResourcePackPage.cpp b/launcher/ui/pages/instance/ResourcePackPage.cpp index 24bfb38d..12b371df 100644 --- a/launcher/ui/pages/instance/ResourcePackPage.cpp +++ b/launcher/ui/pages/instance/ResourcePackPage.cpp @@ -67,8 +67,6 @@ bool ResourcePackPage::onSelectionChanged(const QModelIndex& current, const QMod  void ResourcePackPage::downloadRPs()  { -    if (!m_controlsEnabled) -        return;      if (m_instance->typeName() != "Minecraft")          return;  // this is a null instance or a legacy instance diff --git a/launcher/ui/pages/instance/ShaderPackPage.cpp b/launcher/ui/pages/instance/ShaderPackPage.cpp index 2d0c10aa..dc8b0a05 100644 --- a/launcher/ui/pages/instance/ShaderPackPage.cpp +++ b/launcher/ui/pages/instance/ShaderPackPage.cpp @@ -46,7 +46,6 @@  #include "ui/dialogs/ProgressDialog.h"  #include "ui/dialogs/ResourceDownloadDialog.h" -  ShaderPackPage::ShaderPackPage(MinecraftInstance* instance, std::shared_ptr<ShaderPackFolderModel> model, QWidget* parent)      : ExternalResourcesPage(instance, model, parent)  { @@ -61,8 +60,6 @@ ShaderPackPage::ShaderPackPage(MinecraftInstance* instance, std::shared_ptr<Shad  void ShaderPackPage::downloadShaders()  { -    if (!m_controlsEnabled) -        return;      if (m_instance->typeName() != "Minecraft")          return;  // this is a null instance or a legacy instance diff --git a/launcher/ui/pages/instance/TexturePackPage.cpp b/launcher/ui/pages/instance/TexturePackPage.cpp index 427aba11..e477ceda 100644 --- a/launcher/ui/pages/instance/TexturePackPage.cpp +++ b/launcher/ui/pages/instance/TexturePackPage.cpp @@ -69,8 +69,6 @@ bool TexturePackPage::onSelectionChanged(const QModelIndex& current, const QMode  void TexturePackPage::downloadTPs()  { -    if (!m_controlsEnabled) -        return;      if (m_instance->typeName() != "Minecraft")          return;  // this is a null instance or a legacy instance | 
