diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_search_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_search_widget.cpp index 8b6006a31..9b7f65224 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_search_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_search_widget.cpp @@ -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 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 widgets, + const QString &searchText, + bool includeFolderName) { if (searchText.isEmpty() || searchText.isNull()) { for (auto widget : widgets) { @@ -47,9 +71,7 @@ void VisualDeckStorageSearchWidget::filterWidgets(QList 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()); } } diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_search_widget.h b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_search_widget.h index e8b91bc5b..444ea9a27 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_search_widget.h +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_search_widget.h @@ -16,7 +16,7 @@ class VisualDeckStorageSearchWidget : public QWidget public: explicit VisualDeckStorageSearchWidget(VisualDeckStorageWidget *parent); QString getSearchText(); - void filterWidgets(QList widgets, const QString &searchText); + void filterWidgets(QList widgets, const QString &searchText, bool includeFolderName); private: QHBoxLayout *layout; diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp index 2fbec750c..b2ea6577a 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp @@ -204,7 +204,8 @@ void VisualDeckStorageWidget::updateColorFilter() void VisualDeckStorageWidget::updateSearchFilter() { if (folderWidget) { - searchWidget->filterWidgets(folderWidget->findChildren(), searchWidget->getSearchText()); + searchWidget->filterWidgets(folderWidget->findChildren(), searchWidget->getSearchText(), + showFoldersCheckBox->isChecked()); } emit searchFilterUpdated(); }