mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-18 08:22:15 -07:00
Make filtering consider search bar and color identity again.
This commit is contained in:
parent
8a809299d3
commit
a69dfdc135
7 changed files with 43 additions and 28 deletions
|
|
@ -112,9 +112,9 @@ DeckPreviewColorIdentityFilterWidget::DeckPreviewColorIdentityFilterWidget(Visua
|
|||
// Connect the button's toggled signal
|
||||
connect(toggleButton, &QPushButton::toggled, this, &DeckPreviewColorIdentityFilterWidget::updateFilterMode);
|
||||
connect(this, &DeckPreviewColorIdentityFilterWidget::activeColorsChanged, parent,
|
||||
&VisualDeckStorageWidget::refreshBannerCards);
|
||||
&VisualDeckStorageWidget::updateColorFilter);
|
||||
connect(this, &DeckPreviewColorIdentityFilterWidget::filterModeChanged, parent,
|
||||
&VisualDeckStorageWidget::refreshBannerCards);
|
||||
&VisualDeckStorageWidget::updateColorFilter);
|
||||
|
||||
// Call retranslateUi to set the initial text
|
||||
retranslateUi();
|
||||
|
|
@ -139,10 +139,8 @@ void DeckPreviewColorIdentityFilterWidget::updateFilterMode(bool checked)
|
|||
emit filterModeChanged(exactMatchMode);
|
||||
}
|
||||
|
||||
QList<DeckPreviewWidget *> DeckPreviewColorIdentityFilterWidget::filterWidgets(QList<DeckPreviewWidget *> &widgets)
|
||||
void DeckPreviewColorIdentityFilterWidget::filterWidgets(QList<DeckPreviewWidget *> widgets)
|
||||
{
|
||||
QList<DeckPreviewWidget *> filteredWidgets;
|
||||
|
||||
// Check if no colors are active
|
||||
bool noColorsActive = true;
|
||||
for (auto it = activeColors.constBegin(); it != activeColors.constEnd(); ++it) {
|
||||
|
|
@ -154,7 +152,9 @@ QList<DeckPreviewWidget *> DeckPreviewColorIdentityFilterWidget::filterWidgets(Q
|
|||
|
||||
// If no colors are active, return the unfiltered list of widgets
|
||||
if (noColorsActive) {
|
||||
return widgets;
|
||||
for (DeckPreviewWidget *previewWidget : widgets) {
|
||||
previewWidget->filteredByColor = false;
|
||||
}
|
||||
}
|
||||
|
||||
for (const auto &widget : widgets) {
|
||||
|
|
@ -192,10 +192,6 @@ QList<DeckPreviewWidget *> DeckPreviewColorIdentityFilterWidget::filterWidgets(Q
|
|||
}
|
||||
}
|
||||
|
||||
if (matchesFilter) {
|
||||
filteredWidgets << widget;
|
||||
}
|
||||
widget->filteredByColor = !matchesFilter;
|
||||
}
|
||||
|
||||
return filteredWidgets;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ class DeckPreviewColorIdentityFilterWidget : public QWidget
|
|||
public:
|
||||
explicit DeckPreviewColorIdentityFilterWidget(VisualDeckStorageWidget *parent);
|
||||
void retranslateUi();
|
||||
QList<DeckPreviewWidget *> filterWidgets(QList<DeckPreviewWidget *> &widgets);
|
||||
void filterWidgets(QList<DeckPreviewWidget *> widgets);
|
||||
|
||||
signals:
|
||||
void filterModeChanged(bool exactMatchMode);
|
||||
|
|
|
|||
|
|
@ -46,6 +46,10 @@ VisualDeckStorageFolderDisplayWidget::VisualDeckStorageFolderDisplayWidget(
|
|||
|
||||
connect(visualDeckStorageWidget, &VisualDeckStorageWidget::tagFilterUpdated, this,
|
||||
&VisualDeckStorageFolderDisplayWidget::updateVisibility);
|
||||
connect(visualDeckStorageWidget, &VisualDeckStorageWidget::colorFilterUpdated, this,
|
||||
&VisualDeckStorageFolderDisplayWidget::updateVisibility);
|
||||
connect(visualDeckStorageWidget, &VisualDeckStorageWidget::searchFilterUpdated, this,
|
||||
&VisualDeckStorageFolderDisplayWidget::updateVisibility);
|
||||
|
||||
createWidgetsForFiles();
|
||||
createWidgetsForFolders();
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ VisualDeckStorageSearchWidget::VisualDeckStorageSearchWidget(VisualDeckStorageWi
|
|||
searchDebounceTimer->start(300); // 300ms debounce
|
||||
});
|
||||
|
||||
connect(searchDebounceTimer, &QTimer::timeout, parent, &VisualDeckStorageWidget::refreshBannerCards);
|
||||
connect(searchDebounceTimer, &QTimer::timeout, parent, &VisualDeckStorageWidget::updateSearchFilter);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -38,23 +38,18 @@ QString VisualDeckStorageSearchWidget::getSearchText()
|
|||
return searchBar->text();
|
||||
}
|
||||
|
||||
QList<DeckPreviewWidget *> VisualDeckStorageSearchWidget::filterFiles(QList<DeckPreviewWidget *> &widgets,
|
||||
const QString &searchText)
|
||||
void VisualDeckStorageSearchWidget::filterWidgets(QList<DeckPreviewWidget *> widgets, const QString &searchText)
|
||||
{
|
||||
if (searchText.isEmpty() || searchText.isNull()) {
|
||||
return widgets;
|
||||
}
|
||||
|
||||
QList<DeckPreviewWidget *> filteredWidgets;
|
||||
|
||||
for (const auto &file : widgets) {
|
||||
QFileInfo fileInfo(file->filePath);
|
||||
QString fileName = fileInfo.fileName().toLower();
|
||||
|
||||
if (fileName.contains(searchText.toLower())) {
|
||||
filteredWidgets << file;
|
||||
for (auto widget : widgets) {
|
||||
widget->filteredBySearch = false;
|
||||
}
|
||||
}
|
||||
|
||||
return filteredWidgets;
|
||||
for (auto file : widgets) {
|
||||
QFileInfo fileInfo(file->filePath);
|
||||
QString fileName = fileInfo.fileName().toLower();
|
||||
|
||||
file->filteredBySearch = !fileName.contains(searchText.toLower());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ class VisualDeckStorageSearchWidget : public QWidget
|
|||
public:
|
||||
explicit VisualDeckStorageSearchWidget(VisualDeckStorageWidget *parent);
|
||||
QString getSearchText();
|
||||
QList<DeckPreviewWidget *> filterFiles(QList<DeckPreviewWidget *> &widgets, const QString &searchText);
|
||||
void filterWidgets(QList<DeckPreviewWidget *> widgets, const QString &searchText);
|
||||
|
||||
private:
|
||||
QHBoxLayout *layout;
|
||||
|
|
|
|||
|
|
@ -103,3 +103,19 @@ void VisualDeckStorageWidget::updateTagFilter()
|
|||
}
|
||||
emit tagFilterUpdated();
|
||||
}
|
||||
|
||||
void VisualDeckStorageWidget::updateColorFilter()
|
||||
{
|
||||
if (folderWidget) {
|
||||
deckPreviewColorIdentityFilterWidget->filterWidgets(folderWidget->findChildren<DeckPreviewWidget *>());
|
||||
}
|
||||
emit colorFilterUpdated();
|
||||
}
|
||||
|
||||
void VisualDeckStorageWidget::updateSearchFilter()
|
||||
{
|
||||
if (folderWidget) {
|
||||
searchWidget->filterWidgets(folderWidget->findChildren<DeckPreviewWidget *>(), searchWidget->getSearchText());
|
||||
}
|
||||
emit searchFilterUpdated();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@ public slots:
|
|||
void deckPreviewDoubleClickedEvent(QMouseEvent *event, DeckPreviewWidget *instance);
|
||||
void refreshBannerCards(); // Refresh the display of cards based on the current sorting option
|
||||
void updateTagFilter();
|
||||
void updateColorFilter();
|
||||
void updateSearchFilter();
|
||||
void updateSortOrder();
|
||||
|
||||
signals:
|
||||
|
|
@ -40,6 +42,8 @@ signals:
|
|||
void deckPreviewDoubleClicked(QMouseEvent *event, DeckPreviewWidget *instance);
|
||||
void deckLoadRequested(QString &filePath);
|
||||
void tagFilterUpdated();
|
||||
void colorFilterUpdated();
|
||||
void searchFilterUpdated();
|
||||
|
||||
private:
|
||||
QVBoxLayout *layout;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue