include folder name in VDS search when folders are enabled (#5637)

This commit is contained in:
RickyRister 2025-02-25 15:39:34 -08:00 committed by GitHub
parent 06b25f1cfc
commit 9ac13018c6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 30 additions and 7 deletions

View file

@ -1,5 +1,7 @@
#include "visual_deck_storage_search_widget.h"
#include "../../../../settings/cache_settings.h"
/**
* @brief Constructs a PrintingSelectorCardSearchWidget for searching cards by set name or set code.
*
@ -38,7 +40,29 @@ QString VisualDeckStorageSearchWidget::getSearchText()
return searchBar->text();
}
void VisualDeckStorageSearchWidget::filterWidgets(QList<DeckPreviewWidget *> widgets, const QString &searchText)
/**
* Gets the filename used for the search.
*
* if includeFolderName is true, then this returns the relative filepath starting from the deck folder.
* If the file isn't in the deck folder, or includeFolderName is false, then this will just return the filename.
*
* @param filePath The filePath to convert into a search name
*/
static QString getFileSearchName(const QString &filePath, bool includeFolderName)
{
QString deckPath = SettingsCache::instance().getDeckPath();
if (includeFolderName && filePath.startsWith(deckPath)) {
return filePath.mid(deckPath.length()).toLower();
}
QFileInfo fileInfo(filePath);
QString fileName = fileInfo.fileName().toLower();
return fileName;
}
void VisualDeckStorageSearchWidget::filterWidgets(QList<DeckPreviewWidget *> widgets,
const QString &searchText,
bool includeFolderName)
{
if (searchText.isEmpty() || searchText.isNull()) {
for (auto widget : widgets) {
@ -47,9 +71,7 @@ void VisualDeckStorageSearchWidget::filterWidgets(QList<DeckPreviewWidget *> wid
}
for (auto file : widgets) {
QFileInfo fileInfo(file->filePath);
QString fileName = fileInfo.fileName().toLower();
file->filteredBySearch = !fileName.contains(searchText.toLower());
QString fileSearchName = getFileSearchName(file->filePath, includeFolderName);
file->filteredBySearch = !fileSearchName.contains(searchText.toLower());
}
}

View file

@ -16,7 +16,7 @@ class VisualDeckStorageSearchWidget : public QWidget
public:
explicit VisualDeckStorageSearchWidget(VisualDeckStorageWidget *parent);
QString getSearchText();
void filterWidgets(QList<DeckPreviewWidget *> widgets, const QString &searchText);
void filterWidgets(QList<DeckPreviewWidget *> widgets, const QString &searchText, bool includeFolderName);
private:
QHBoxLayout *layout;

View file

@ -204,7 +204,8 @@ void VisualDeckStorageWidget::updateColorFilter()
void VisualDeckStorageWidget::updateSearchFilter()
{
if (folderWidget) {
searchWidget->filterWidgets(folderWidget->findChildren<DeckPreviewWidget *>(), searchWidget->getSearchText());
searchWidget->filterWidgets(folderWidget->findChildren<DeckPreviewWidget *>(), searchWidget->getSearchText(),
showFoldersCheckBox->isChecked());
}
emit searchFilterUpdated();
}