From caae0c8e10737e16c0a60c5b6e6a3ee70fbfddbf Mon Sep 17 00:00:00 2001 From: RickyRister Date: Fri, 4 Apr 2025 22:48:46 -0700 Subject: [PATCH] add search bar to ZoneViewWidget --- cockatrice/src/game/game_view.cpp | 2 +- cockatrice/src/game/zones/view_zone_widget.cpp | 17 +++++++++++++++++ cockatrice/src/game/zones/view_zone_widget.h | 3 +++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/cockatrice/src/game/game_view.cpp b/cockatrice/src/game/game_view.cpp index 7ce9dda3e..969e26e14 100644 --- a/cockatrice/src/game/game_view.cpp +++ b/cockatrice/src/game/game_view.cpp @@ -11,7 +11,7 @@ GameView::GameView(GameScene *scene, QWidget *parent) : QGraphicsView(scene, par { setBackgroundBrush(QBrush(QColor(0, 0, 0))); setRenderHints(QPainter::TextAntialiasing | QPainter::Antialiasing); - setFocusPolicy(Qt::NoFocus); + setFocusPolicy(Qt::ClickFocus); setViewportUpdateMode(BoundingRectViewportUpdate); connect(scene, &GameScene::sceneRectChanged, this, &GameView::updateSceneRect); diff --git a/cockatrice/src/game/zones/view_zone_widget.cpp b/cockatrice/src/game/zones/view_zone_widget.cpp index 7dd21b9d5..cf5838484 100644 --- a/cockatrice/src/game/zones/view_zone_widget.cpp +++ b/cockatrice/src/game/zones/view_zone_widget.cpp @@ -1,7 +1,9 @@ #include "view_zone_widget.h" +#include "../../client/ui/pixel_map_generator.h" #include "../../settings/cache_settings.h" #include "../cards/card_item.h" +#include "../filters/syntax_help.h" #include "../game_scene.h" #include "../player/player.h" #include "pb/command_shuffle.pb.h" @@ -41,9 +43,24 @@ ZoneViewWidget::ZoneViewWidget(Player *_player, setFlag(ItemIgnoresTransformations); QGraphicsLinearLayout *vbox = new QGraphicsLinearLayout(Qt::Vertical); + vbox->setSpacing(2); // If the number is < 0, then it means that we can give the option to make the area sorted if (numberCards < 0) { + // search edit + searchEdit.setFocusPolicy(Qt::ClickFocus); + searchEdit.setPlaceholderText(tr("Search by card name (or search expressions)")); + searchEdit.setClearButtonEnabled(true); + searchEdit.addAction(loadColorAdjustedPixmap("theme:icons/search"), QLineEdit::LeadingPosition); + auto help = searchEdit.addAction(QPixmap("theme:icons/info"), QLineEdit::TrailingPosition); + + connect(help, &QAction::triggered, this, [this] { createSearchSyntaxHelpWindow(&searchEdit); }); + + QGraphicsProxyWidget *searchEditProxy = new QGraphicsProxyWidget; + searchEditProxy->setWidget(&searchEdit); + searchEditProxy->setZValue(2000000007); + vbox->addItem(searchEditProxy); + // top row QGraphicsLinearLayout *hTopRow = new QGraphicsLinearLayout(Qt::Horizontal); diff --git a/cockatrice/src/game/zones/view_zone_widget.h b/cockatrice/src/game/zones/view_zone_widget.h index 177bcb92a..04662ebc9 100644 --- a/cockatrice/src/game/zones/view_zone_widget.h +++ b/cockatrice/src/game/zones/view_zone_widget.h @@ -7,6 +7,7 @@ #include #include #include +#include class QLabel; class QPushButton; @@ -47,6 +48,8 @@ private: QPushButton *closeButton; QScrollBar *scrollBar; ScrollableGraphicsProxyWidget *scrollBarProxy; + + QLineEdit searchEdit; QComboBox groupBySelector; QComboBox sortBySelector; QCheckBox shuffleCheckBox;