implement filter logic

This commit is contained in:
RickyRister 2025-04-04 22:31:27 -07:00
parent caae0c8e10
commit 6ef8537d5d
3 changed files with 21 additions and 1 deletions

View file

@ -148,7 +148,16 @@ void ZoneViewZone::updateCardIds(CardAction action)
// Because of boundingRect(), this function must not be called before the zone was added to a scene.
void ZoneViewZone::reorganizeCards()
{
CardList cardsToDisplay(cards);
// filter cards
CardList cardsToDisplay = CardList(cards.getContentsKnown());
for (auto card : cards) {
if (filterString.check(card->getInfo())) {
card->show();
cardsToDisplay.append(card);
} else {
card->hide();
}
}
// sort cards
QList<CardList::SortOption> sortOptions;
@ -263,6 +272,12 @@ ZoneViewZone::GridSize ZoneViewZone::positionCardsForDisplay(CardList &cards, Ca
}
}
void ZoneViewZone::setFilterString(const QString &_filterString)
{
filterString = FilterString(_filterString);
reorganizeCards();
}
void ZoneViewZone::setGroupBy(CardList::SortOption _groupBy)
{
groupBy = _groupBy;

View file

@ -1,6 +1,7 @@
#ifndef ZONEVIEWERZONE_H
#define ZONEVIEWERZONE_H
#include "../filters/filter_string.h"
#include "select_zone.h"
#include <QGraphicsLayoutItem>
@ -35,6 +36,7 @@ private:
int minRows, numberCards;
CardZone *origZone;
bool revealZone, writeableRevealZone;
FilterString filterString = FilterString("");
CardList::SortOption groupBy, sortBy;
bool pileView;
bool isReversed;
@ -96,6 +98,7 @@ public:
}
public slots:
void close();
void setFilterString(const QString &_filterString);
void setGroupBy(CardList::SortOption _groupBy);
void setSortBy(CardList::SortOption _sortBy);
void setPileView(int _pileView);

View file

@ -145,6 +145,8 @@ ZoneViewWidget::ZoneViewWidget(Player *_player,
if (CardList::NoSort == static_cast<CardList::SortOption>(groupBySelector.currentData().toInt())) {
pileViewCheckBox.setEnabled(false);
}
connect(&searchEdit, &QLineEdit::textChanged, zone, &ZoneViewZone::setFilterString);
}
setLayout(vbox);