diff options
author | flow <flowlnlnln@gmail.com> | 2022-07-15 11:20:08 -0300 |
---|---|---|
committer | flow <flowlnlnln@gmail.com> | 2022-08-01 07:33:29 -0300 |
commit | 5936c7b65ceef28fb569e966f2bcbe3aed3fa999 (patch) | |
tree | 5ebb9db5a4bbb96b3c592a0dcee7a338a8623c0e /launcher/ui/dialogs | |
parent | a8bcd85c93ad1e5af277652862f773413c255c47 (diff) | |
download | PrismLauncher-5936c7b65ceef28fb569e966f2bcbe3aed3fa999.tar.gz PrismLauncher-5936c7b65ceef28fb569e966f2bcbe3aed3fa999.tar.bz2 PrismLauncher-5936c7b65ceef28fb569e966f2bcbe3aed3fa999.zip |
change: preserve search term across different mod providers
Signed-off-by: flow <flowlnlnln@gmail.com>
Diffstat (limited to 'launcher/ui/dialogs')
-rw-r--r-- | launcher/ui/dialogs/ModDownloadDialog.cpp | 20 | ||||
-rw-r--r-- | launcher/ui/dialogs/ModDownloadDialog.h | 5 |
2 files changed, 24 insertions, 1 deletions
diff --git a/launcher/ui/dialogs/ModDownloadDialog.cpp b/launcher/ui/dialogs/ModDownloadDialog.cpp index 31253bc2..af6704d9 100644 --- a/launcher/ui/dialogs/ModDownloadDialog.cpp +++ b/launcher/ui/dialogs/ModDownloadDialog.cpp @@ -55,6 +55,8 @@ ModDownloadDialog::ModDownloadDialog(const std::shared_ptr<ModFolderModel>& mods m_container->addButtons(m_buttons); + connect(m_container, &PageContainer::selectedPageChanged, this, &ModDownloadDialog::selectedPageChanged); + // Bonk Qt over its stupid head and make sure it understands which button is the default one... // See: https://stackoverflow.com/questions/24556831/qbuttonbox-set-default-button auto OkButton = m_buttons->button(QDialogButtonBox::Ok); @@ -163,3 +165,21 @@ const QList<ModDownloadTask*> ModDownloadDialog::getTasks() { return modTask.values(); } + +void ModDownloadDialog::selectedPageChanged(BasePage* previous, BasePage* selected) +{ + auto* prev_page = dynamic_cast<ModPage*>(previous); + if (!prev_page) { + qCritical() << "Page '" << previous->displayName() << "' in ModDownloadDialog is not a ModPage!"; + return; + } + + auto* selected_page = dynamic_cast<ModPage*>(selected); + if (!selected_page) { + qCritical() << "Page '" << selected->displayName() << "' in ModDownloadDialog is not a ModPage!"; + return; + } + + // Same effect as having a global search bar + selected_page->setSearchTerm(prev_page->getSearchTerm()); +} diff --git a/launcher/ui/dialogs/ModDownloadDialog.h b/launcher/ui/dialogs/ModDownloadDialog.h index 2a26c849..18a5f0f3 100644 --- a/launcher/ui/dialogs/ModDownloadDialog.h +++ b/launcher/ui/dialogs/ModDownloadDialog.h @@ -34,7 +34,7 @@ class PageContainer; class QDialogButtonBox; class ModrinthModPage; -class ModDownloadDialog : public QDialog, public BasePageProvider +class ModDownloadDialog final : public QDialog, public BasePageProvider { Q_OBJECT @@ -58,6 +58,9 @@ public slots: void accept() override; void reject() override; +private slots: + void selectedPageChanged(BasePage* previous, BasePage* selected); + private: Ui::ModDownloadDialog *ui = nullptr; PageContainer * m_container = nullptr; |