From 2f784dd9973fd71d35dda6f4ab72b27e8b320cce Mon Sep 17 00:00:00 2001 From: RickyRister <42636155+RickyRister@users.noreply.github.com> Date: Sun, 4 May 2025 17:09:11 -0700 Subject: [PATCH] Add setting to auto focus search bar when opening card view window (#5906) * add new setting * implement thing * Rename setting * fix build failure --- cockatrice/src/dialogs/dlg_settings.cpp | 10 ++++++++-- cockatrice/src/dialogs/dlg_settings.h | 1 + cockatrice/src/game/zones/view_zone_widget.cpp | 5 +++++ cockatrice/src/settings/cache_settings.cpp | 7 +++++++ cockatrice/src/settings/cache_settings.h | 6 ++++++ dbconverter/src/mocks.cpp | 3 +++ tests/carddatabase/mocks.cpp | 3 +++ 7 files changed, 33 insertions(+), 2 deletions(-) diff --git a/cockatrice/src/dialogs/dlg_settings.cpp b/cockatrice/src/dialogs/dlg_settings.cpp index 8f7077ee3..8849da5d9 100644 --- a/cockatrice/src/dialogs/dlg_settings.cpp +++ b/cockatrice/src/dialogs/dlg_settings.cpp @@ -606,6 +606,10 @@ UserInterfaceSettingsPage::UserInterfaceSettingsPage() connect(&closeEmptyCardViewCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(), &SettingsCache::setCloseEmptyCardView); + focusCardViewSearchBarCheckBox.setChecked(SettingsCache::instance().getFocusCardViewSearchBar()); + connect(&focusCardViewSearchBarCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(), + &SettingsCache::setFocusCardViewSearchBar); + annotateTokensCheckBox.setChecked(SettingsCache::instance().getAnnotateTokens()); connect(&annotateTokensCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(), &SettingsCache::setAnnotateTokens); @@ -619,8 +623,9 @@ UserInterfaceSettingsPage::UserInterfaceSettingsPage() generalGrid->addWidget(&clickPlaysAllSelectedCheckBox, 1, 0); generalGrid->addWidget(&playToStackCheckBox, 2, 0); generalGrid->addWidget(&closeEmptyCardViewCheckBox, 3, 0); - generalGrid->addWidget(&annotateTokensCheckBox, 4, 0); - generalGrid->addWidget(&useTearOffMenusCheckBox, 5, 0); + generalGrid->addWidget(&focusCardViewSearchBarCheckBox, 4, 0); + generalGrid->addWidget(&annotateTokensCheckBox, 5, 0); + generalGrid->addWidget(&useTearOffMenusCheckBox, 6, 0); generalGroupBox = new QGroupBox; generalGroupBox->setLayout(generalGrid); @@ -725,6 +730,7 @@ void UserInterfaceSettingsPage::retranslateUi() clickPlaysAllSelectedCheckBox.setText(tr("&Clicking plays all selected cards (instead of just the clicked card)")); playToStackCheckBox.setText(tr("&Play all nonlands onto the stack (not the battlefield) by default")); closeEmptyCardViewCheckBox.setText(tr("Close card view window when last card is removed")); + focusCardViewSearchBarCheckBox.setText(tr("Auto focus search bar when card view window is opened")); annotateTokensCheckBox.setText(tr("Annotate card text on tokens")); useTearOffMenusCheckBox.setText(tr("Use tear-off menus, allowing right click menus to persist on screen")); notificationsGroupBox->setTitle(tr("Notifications settings")); diff --git a/cockatrice/src/dialogs/dlg_settings.h b/cockatrice/src/dialogs/dlg_settings.h index 633bbdc2b..c588d7174 100644 --- a/cockatrice/src/dialogs/dlg_settings.h +++ b/cockatrice/src/dialogs/dlg_settings.h @@ -144,6 +144,7 @@ private: QCheckBox clickPlaysAllSelectedCheckBox; QCheckBox playToStackCheckBox; QCheckBox closeEmptyCardViewCheckBox; + QCheckBox focusCardViewSearchBarCheckBox; QCheckBox annotateTokensCheckBox; QCheckBox useTearOffMenusCheckBox; QCheckBox tapAnimationCheckBox; diff --git a/cockatrice/src/game/zones/view_zone_widget.cpp b/cockatrice/src/game/zones/view_zone_widget.cpp index 85a91afdf..83c8d9599 100644 --- a/cockatrice/src/game/zones/view_zone_widget.cpp +++ b/cockatrice/src/game/zones/view_zone_widget.cpp @@ -56,6 +56,11 @@ ZoneViewWidget::ZoneViewWidget(Player *_player, connect(help, &QAction::triggered, this, [this] { createSearchSyntaxHelpWindow(&searchEdit); }); + if (SettingsCache::instance().getFocusCardViewSearchBar()) { + this->setActive(true); + searchEdit.setFocus(); + } + QGraphicsProxyWidget *searchEditProxy = new QGraphicsProxyWidget; searchEditProxy->setWidget(&searchEdit); searchEditProxy->setZValue(2000000007); diff --git a/cockatrice/src/settings/cache_settings.cpp b/cockatrice/src/settings/cache_settings.cpp index 25c7a3d27..37704ecb3 100644 --- a/cockatrice/src/settings/cache_settings.cpp +++ b/cockatrice/src/settings/cache_settings.cpp @@ -251,6 +251,7 @@ SettingsCache::SettingsCache() cardViewInitialRowsMax = settings->value("interface/cardViewInitialRowsMax", 14).toInt(); cardViewExpandedRowsMax = settings->value("interface/cardViewExpandedRowsMax", 20).toInt(); closeEmptyCardView = settings->value("interface/closeEmptyCardView", true).toBool(); + focusCardViewSearchBar = settings->value("interface/focusCardViewSearchBar", true).toBool(); showShortcuts = settings->value("menu/showshortcuts", true).toBool(); displayCardNames = settings->value("cards/displaycardnames", true).toBool(); @@ -360,6 +361,12 @@ void SettingsCache::setCloseEmptyCardView(QT_STATE_CHANGED_T value) settings->setValue("interface/closeEmptyCardView", closeEmptyCardView); } +void SettingsCache::setFocusCardViewSearchBar(QT_STATE_CHANGED_T value) +{ + focusCardViewSearchBar = value; + settings->setValue("interface/focusCardViewSearchBar", focusCardViewSearchBar); +} + void SettingsCache::setKnownMissingFeatures(const QString &_knownMissingFeatures) { knownMissingFeatures = _knownMissingFeatures; diff --git a/cockatrice/src/settings/cache_settings.h b/cockatrice/src/settings/cache_settings.h index ab5b43401..0cc0ecfb5 100644 --- a/cockatrice/src/settings/cache_settings.h +++ b/cockatrice/src/settings/cache_settings.h @@ -173,6 +173,7 @@ private: int cardViewInitialRowsMax; int cardViewExpandedRowsMax; bool closeEmptyCardView; + bool focusCardViewSearchBar; int pixmapCacheSize; int networkCacheSize; int redirectCacheTtl; @@ -660,6 +661,7 @@ public: void setCardViewInitialRowsMax(int _cardViewInitialRowsMax); void setCardViewExpandedRowsMax(int value); void setCloseEmptyCardView(QT_STATE_CHANGED_T value); + void setFocusCardViewSearchBar(QT_STATE_CHANGED_T value); QString getClientID() { return clientID; @@ -688,6 +690,10 @@ public: { return closeEmptyCardView; } + bool getFocusCardViewSearchBar() const + { + return focusCardViewSearchBar; + } ShortcutsSettings &shortcuts() const { return *shortcutsSettings; diff --git a/dbconverter/src/mocks.cpp b/dbconverter/src/mocks.cpp index e1d095a5a..23f75cca5 100644 --- a/dbconverter/src/mocks.cpp +++ b/dbconverter/src/mocks.cpp @@ -64,6 +64,9 @@ void SettingsCache::setCardViewExpandedRowsMax(int /* value */) void SettingsCache::setCloseEmptyCardView(const QT_STATE_CHANGED_T /* value */) { } +void SettingsCache::setFocusCardViewSearchBar(QT_STATE_CHANGED_T /* value */) +{ +} void SettingsCache::setKnownMissingFeatures(const QString & /* _knownMissingFeatures */) { } diff --git a/tests/carddatabase/mocks.cpp b/tests/carddatabase/mocks.cpp index f01245dab..f784af70a 100644 --- a/tests/carddatabase/mocks.cpp +++ b/tests/carddatabase/mocks.cpp @@ -68,6 +68,9 @@ void SettingsCache::setCardViewExpandedRowsMax(int /* value */) void SettingsCache::setCloseEmptyCardView(QT_STATE_CHANGED_T /* value */) { } +void SettingsCache::setFocusCardViewSearchBar(QT_STATE_CHANGED_T /* value */) +{ +} void SettingsCache::setKnownMissingFeatures(const QString & /* _knownMissingFeatures */) { }