From b9c9811d3566a008feb330ef79d82b501bcd2ac3 Mon Sep 17 00:00:00 2001 From: igarri Date: Mon, 17 May 2021 14:06:01 +0100 Subject: [PATCH] Fixing qobject_cast to the StringFilter --- .../AssetBrowser/AssetBrowserFilterModel.cpp | 33 ++++++++++++++----- .../AssetBrowser/AssetBrowserFilterModel.h | 2 +- .../AzAssetBrowser/AzAssetBrowserWindow.cpp | 2 +- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserFilterModel.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserFilterModel.cpp index b4728633d3..9ee00a96ae 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserFilterModel.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserFilterModel.cpp @@ -130,9 +130,7 @@ namespace AzToolsFramework if (compFilter) { auto& subFilters = compFilter->GetSubFilters(); - //bool bNoFilters = false; - auto it = AZStd::find_if(subFilters.begin(), subFilters.end(), [subFilters](FilterConstType filter) -> bool { auto assetTypeFilter = qobject_cast >(filter); @@ -142,21 +140,38 @@ namespace AzToolsFramework { m_assetTypeFilter = qobject_cast >(*it); } - it = AZStd::find_if(subFilters.begin(), subFilters.end(), [subFilters](FilterConstType filter) -> bool + + it = AZStd::find_if(subFilters.begin(), subFilters.end(), [](FilterConstType filter) -> bool { - auto stringFilter = qobject_cast >(filter); - return !stringFilter.isNull(); + auto stringCompositeFilter = qobject_cast >(filter); + bool isStringFilter = false; + if (stringCompositeFilter) + { + auto& subFilters = stringCompositeFilter->GetSubFilters(); + auto it = AZStd::find_if(subFilters.begin(), subFilters.end(), [](FilterConstType filt) -> bool + { + auto strFilter = qobject_cast>(filt); + return !strFilter.isNull(); + }); + if (it != subFilters.end()) + { + isStringFilter = true; + } + } + + return isStringFilter; }); if (it != subFilters.end()) { - m_stringFilter = qobject_cast >(*it); - emit switchFilterView(m_stringFilter.toStrongRef()->IsEmpty()); + auto compStringFilter = qobject_cast>(*it); + m_stringFilter = qobject_cast>(compStringFilter->GetSubFilters()[0]); } + } - - invalidateFilter(); Q_EMIT filterChanged(); + emit stringFilterPopulated(!m_stringFilter.isNull()); + } void AssetBrowserFilterModel::filterUpdatedSlot() diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserFilterModel.h b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserFilterModel.h index 71689354d1..7a6faf9f18 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserFilterModel.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserFilterModel.h @@ -52,7 +52,7 @@ namespace AzToolsFramework void OnAssetBrowserComponentReady() override; Q_SIGNALS: - void switchFilterView(int); + void stringFilterPopulated(bool); void filterChanged(); ////////////////////////////////////////////////////////////////////////// //QSortFilterProxyModel diff --git a/Code/Sandbox/Editor/AzAssetBrowser/AzAssetBrowserWindow.cpp b/Code/Sandbox/Editor/AzAssetBrowser/AzAssetBrowserWindow.cpp index d1bbbb1f9d..047d4d4dc2 100644 --- a/Code/Sandbox/Editor/AzAssetBrowser/AzAssetBrowserWindow.cpp +++ b/Code/Sandbox/Editor/AzAssetBrowser/AzAssetBrowserWindow.cpp @@ -97,7 +97,6 @@ AzAssetBrowserWindow::AzAssetBrowserWindow(QWidget* parent) }); connect(m_filterModel.data(), &AssetBrowserFilterModel::filterChanged, m_tableModel.data(), &AssetBrowserTableModel::UpdateTableModelMaps); - connect(m_filterModel.data(), &AssetBrowserFilterModel::switchFilterView, this, &AzAssetBrowserWindow::SwitchDisplayView); connect(m_ui->m_assetBrowserTreeViewWidget, &AssetBrowserTreeView::selectionChangedSignal, this, &AzAssetBrowserWindow::SelectionChangedSlot); @@ -119,6 +118,7 @@ AzAssetBrowserWindow::AzAssetBrowserWindow(QWidget* parent) m_ui->m_assetBrowserTreeViewWidget->SetName("AssetBrowserTreeView_main"); m_ui->m_assetBrowserTableViewWidget->SetName("AssetBrowserTableView_main"); + connect(m_filterModel.data(), &AssetBrowserFilterModel::stringFilterPopulated, this, &AzAssetBrowserWindow::SwitchDisplayView); connect(m_ui->m_viewSwitcherCheckBox, &QCheckBox::stateChanged, this, &AzAssetBrowserWindow::SwitchDisplayView); }