From 5f15f51610f861521afdb295df0de6d9407ba951 Mon Sep 17 00:00:00 2001 From: flow Date: Thu, 14 Apr 2022 10:52:23 -0300 Subject: [PATCH] ui: underline search button text when changing filters This hopefully makes it easier to the user to know that their changes will only apply after hitting the search button. I tried setting the background color, but it seems more unreliable on cross-platform than underlining. Also, it could be worse for daltonic people, so I don't know what to do :( --- launcher/CMakeLists.txt | 7 +++---- launcher/ui/pages/modplatform/ModPage.cpp | 7 +++++++ launcher/ui/widgets/ModFilterWidget.cpp | 12 +++++++++++- launcher/ui/widgets/ModFilterWidget.h | 4 ++++ 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 8579071a..0ab398e8 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -824,9 +824,6 @@ SET(LAUNCHER_SOURCES ui/dialogs/SkinUploadDialog.h ui/dialogs/ModDownloadDialog.cpp ui/dialogs/ModDownloadDialog.h - ui/dialogs/FilterModsDialog.cpp - ui/dialogs/FilterModsDialog.h - # GUI - widgets ui/widgets/Common.cpp @@ -851,6 +848,8 @@ SET(LAUNCHER_SOURCES ui/widgets/LogView.h ui/widgets/MCModInfoFrame.cpp ui/widgets/MCModInfoFrame.h + ui/widgets/ModFilterWidget.cpp + ui/widgets/ModFilterWidget.h ui/widgets/ModListView.cpp ui/widgets/ModListView.h ui/widgets/PageContainer.cpp @@ -909,6 +908,7 @@ qt5_wrap_ui(LAUNCHER_UI ui/widgets/InstanceCardWidget.ui ui/widgets/CustomCommands.ui ui/widgets/MCModInfoFrame.ui + ui/widgets/ModFilterWidget.ui ui/dialogs/CopyInstanceDialog.ui ui/dialogs/ProfileSetupDialog.ui ui/dialogs/ProgressDialog.ui @@ -925,7 +925,6 @@ qt5_wrap_ui(LAUNCHER_UI ui/dialogs/LoginDialog.ui ui/dialogs/EditAccountDialog.ui ui/dialogs/ReviewMessageBox.ui - ui/dialogs/FilterModsDialog.ui ) qt5_add_resources(LAUNCHER_RESOURCES diff --git a/launcher/ui/pages/modplatform/ModPage.cpp b/launcher/ui/pages/modplatform/ModPage.cpp index 57c2e45d..29f6b601 100644 --- a/launcher/ui/pages/modplatform/ModPage.cpp +++ b/launcher/ui/pages/modplatform/ModPage.cpp @@ -28,6 +28,13 @@ ModPage::ModPage(ModDownloadDialog* dialog, BaseInstance* instance, ModAPI* api) filter_widget.setInstance(static_cast(m_instance)); m_filter = filter_widget.getFilter(); + + connect(&filter_widget, &ModFilterWidget::filterChanged, this, [&]{ + ui->searchButton->setStyleSheet("text-decoration: underline"); + }); + connect(&filter_widget, &ModFilterWidget::filterUnchanged, this, [&]{ + ui->searchButton->setStyleSheet("text-decoration: none"); + }); } ModPage::~ModPage() diff --git a/launcher/ui/widgets/ModFilterWidget.cpp b/launcher/ui/widgets/ModFilterWidget.cpp index 339ecb4b..ffc8d05d 100644 --- a/launcher/ui/widgets/ModFilterWidget.cpp +++ b/launcher/ui/widgets/ModFilterWidget.cpp @@ -38,6 +38,7 @@ void ModFilterWidget::setInstance(MinecraftInstance* instance) auto ModFilterWidget::getFilter() -> std::shared_ptr { m_last_version_id = m_version_id; + emit filterUnchanged(); return m_filter; } @@ -70,7 +71,11 @@ void ModFilterWidget::onVersionFilterChanged(int id) int index = 0; auto cast_id = (VersionButtonID) id; - m_version_id = cast_id; + if (cast_id != m_version_id) { + m_version_id = cast_id; + } else { + return; + } m_filter->versions.clear(); @@ -91,6 +96,11 @@ void ModFilterWidget::onVersionFilterChanged(int id) // TODO break; } + + if(changed()) + emit filterChanged(); + else + emit filterUnchanged(); } ModFilterWidget::~ModFilterWidget() diff --git a/launcher/ui/widgets/ModFilterWidget.h b/launcher/ui/widgets/ModFilterWidget.h index 5348882f..334fc672 100644 --- a/launcher/ui/widgets/ModFilterWidget.h +++ b/launcher/ui/widgets/ModFilterWidget.h @@ -52,6 +52,10 @@ private: private slots: void onVersionFilterChanged(int id); +public: signals: + void filterChanged(); + void filterUnchanged(); + private: Ui::ModFilterWidget* ui;