Entries updating on the table view

This commit is contained in:
igarri
2021-05-10 10:39:01 +01:00
parent b7c2495911
commit 65550d3f1c
8 changed files with 395 additions and 54 deletions
@@ -31,7 +31,8 @@ namespace AzToolsFramework
AssetBrowserFilterModel::AssetBrowserFilterModel(QObject* parent)
: QSortFilterProxyModel(parent)
{
m_showColumn.insert(AssetBrowserModel::m_column);
m_showColumn.insert(static_cast<int>(AssetBrowserEntry::Column::DisplayName));
m_showColumn.insert(static_cast<int>(AssetBrowserEntry::Column::Path));
m_collator.setNumericMode(true);
AssetBrowserComponentNotificationBus::Handler::BusConnect();
}
@@ -163,7 +164,6 @@ namespace AzToolsFramework
{
m_alreadyRecomputingFilters = false;
FilterUpdatedSlotImmediate();
//beginInsertRows()
}
);
}
@@ -144,7 +144,8 @@ namespace AzToolsFramework
if (parent.isValid())
{
if ((parent.column() != static_cast<int>(AssetBrowserEntry::Column::DisplayName)) &&
(parent.column() != static_cast<int>(AssetBrowserEntry::Column::Name)))
(parent.column() != static_cast<int>(AssetBrowserEntry::Column::Name)) &&
(parent.column() != static_cast<int>(AssetBrowserEntry::Column::Path)))
{
return 0;
}
@@ -1,4 +1,16 @@
#include "AssetBrowserTableModel.h"
#include <AzToolsFramework/AssetBrowser/Entries/FolderAssetBrowserEntry.h>
#include <AzToolsFramework/AssetBrowser/Entries/ProductAssetBrowserEntry.h>
#include <AzToolsFramework/AssetBrowser/Entries/SourceAssetBrowserEntry.h>
#include <AzToolsFramework/AssetBrowser/Search/Filter.h>
AZ_PUSH_DISABLE_WARNING(4251, "-Wunknown-warning-option")
#include <AssetBrowser/AssetBrowserTableModel.h>
#include <AssetBrowser/AssetBrowserModel.h>
#include <QCollator>
#include <QSharedPointer>
#include <QTimer>
AZ_POP_DISABLE_WARNING
namespace AzToolsFramework
{
namespace AssetBrowser
@@ -6,9 +18,24 @@ namespace AzToolsFramework
AssetBrowserTableModel::AssetBrowserTableModel(QObject* parent /* = nullptr */)
: QSortFilterProxyModel(parent)
{
m_showColumn.insert(static_cast<int>(AssetBrowserEntry::Column::DisplayName));
m_showColumn.insert(static_cast<int>(AssetBrowserEntry::Column::Path));
sort(0);
setDynamicSortFilter(false);
setRecursiveFilteringEnabled(true);
AssetBrowserComponentNotificationBus::Handler::BusConnect();
}
AssetBrowserTableModel::~AssetBrowserTableModel()
{
AssetBrowserComponentNotificationBus::Handler::BusDisconnect();
}
void AssetBrowserTableModel::OnAssetBrowserComponentReady()
{
BuildMap(sourceModel());
}
void AssetBrowserTableModel::setSourceModel(QAbstractItemModel* sourceModel)
{
QSortFilterProxyModel::setSourceModel(sourceModel);
}
QModelIndex AssetBrowserTableModel::mapToSource(const QModelIndex& proxyIndex) const
{
Q_ASSERT(!proxyIndex.isValid() || proxyIndex.model() == this);
@@ -18,6 +45,11 @@ namespace AzToolsFramework
}
return m_indexMap[proxyIndex.row()];
}
QModelIndex AssetBrowserTableModel::parent(const QModelIndex& child) const
{
AZ_UNUSED(child);
return QModelIndex();
}
QModelIndex AssetBrowserTableModel::mapFromSource(const QModelIndex& sourceIndex) const
{
Q_ASSERT(!sourceIndex.isValid() || sourceIndex.model() == sourceModel());
@@ -27,16 +59,14 @@ namespace AzToolsFramework
}
return createIndex(m_rowMap[sourceIndex], sourceIndex.column(), sourceIndex.internalPointer());
}
//QModelIndex AssetBrowserTableModel::index(int row, int column, const QModelIndex& parent) const
//{
// //return parent.isValid() ? QModelIndex() : createIndex(row, column , m_indexMap[row].internalPointer());
// if (!parent.isValid())
// {
// QModelIndex();
// }
// return createIndex(row, column, m_indexMap[row].internalPointer());
//}
QModelIndex AssetBrowserTableModel::index(int row, int column, const QModelIndex& parent) const
{
/*AZ_UNUSED(row);
AZ_UNUSED(column);*/
return parent.isValid() ? QModelIndex() : createIndex(row, column, m_indexMap[row].internalPointer());
}
QVariant AssetBrowserTableModel::data(const QModelIndex& index, int role) const
{
//AZ_UNUSED(role);
@@ -47,34 +77,67 @@ namespace AzToolsFramework
AssetBrowserEntry* entry = GetAssetEntry(sourceIndex); // static_cast<AssetBrowserEntry*>(sourceIndex.internalPointer());
if (entry == nullptr)
{
AZ_Assert(false, "ERROR - index internal pointer not pointing to an AssetEntry. Tree provided by the AssetBrowser invalid?");
AZ_Assert(
false, "ERROR - index internal pointer not pointing to an AssetEntry. Tree provided by the AssetBrowser invalid?");
return Qt::PartiallyChecked;
}
return sourceIndex.data(role); //return entry->data(index.column());
return sourceIndex.data(role); // return entry->data(index.column());
//return QVariant::fromValue(entry);
//AZ_UNUSED(role);
//if (index.isValid())
//{
// ////if (role == AssetBrowserModel::EntryRole)
// //{
// QModelIndex modelIndex = mapFromSource(index);
// auto assetEntry = static_cast<const AssetBrowserEntry*>(index.internalPointer());
// return QVariant::fromValue(assetEntry);
//}
//return QVariant(); // AzToolsFramework::AssetBrowser::AssetBrowserModel::data(index, role);
}
bool AssetBrowserTableModel::filterAcceptsRow(int source_row, const QModelIndex& source_parent) const
int AssetBrowserTableModel::rowCount(const QModelIndex& parent) const
{
AZ_UNUSED(source_row);
AZ_UNUSED(source_parent);
return true;
}
bool AssetBrowserTableModel::filterAcceptsColumn(int source_column, const QModelIndex&) const
{
return m_showColumn.find(source_column) != m_showColumn.end();
return !parent.isValid() ? m_rowMap.size() : 0;
}
int AssetBrowserTableModel::BuildMap(const QAbstractItemModel* model, const QModelIndex& parent, int row)
{
//int rows = model ? model->rowCount(parent) : 0;
//for (int i = 0; i < rows; ++i)
//{
// auto index = model->index(i, 0, parent);
// //if (!model->hasChildren(index))
// //{
// beginInsertRows(parent, row, row);
// m_rowMap[index] = row;
// m_indexMap[row] = index;
// endInsertRows();
// Q_EMIT dataChanged(parent, parent);
// row = row + 1;
// //}
// if (model->hasChildren(index))
// {
// row = BuildMap(model, index, row);
// }
//}
//return row;
int rows = model ? model->rowCount(parent) : 0;
for (int i = 0; i < rows; ++i)
{
auto index = model->index(i, 0, parent);
if (model->hasChildren(index) == false)
{
beginInsertRows(parent, row, row);
m_rowMap[index] = row;
m_indexMap[row] = index;
endInsertRows();
Q_EMIT dataChanged(parent, parent);
row = row + 1;
}
m_rowMap[index] = row;
m_indexMap[row] = index;
row = row + 1;
if (model->hasChildren(index))
{
row = BuildMap(model, index, row);
@@ -96,8 +159,159 @@ namespace AzToolsFramework
}
void AssetBrowserTableModel::UpdateMap()
{
m_indexMap.clear();
m_rowMap.clear();
BuildMap(sourceModel());
}
//---------------------------------------AssetBrowserTableFilterModel--------------------------------------------
AssetBrowserTableFilterModel::AssetBrowserTableFilterModel(QObject* parent)
: QSortFilterProxyModel(parent)
{
m_showColumn.insert(static_cast<int>(AssetBrowserEntry::Column::DisplayName));
m_showColumn.insert(static_cast<int>(AssetBrowserEntry::Column::Path));
AssetBrowserComponentNotificationBus::Handler::BusConnect();
}
AssetBrowserTableFilterModel::~AssetBrowserTableFilterModel()
{
AssetBrowserComponentNotificationBus::Handler::BusDisconnect();
}
void AssetBrowserTableFilterModel::setSourceModel(QAbstractItemModel* sourceModel)
{
QSortFilterProxyModel::setSourceModel(sourceModel);
}
void AssetBrowserTableFilterModel::SetFilter(FilterConstType filter)
{
connect(filter.data(), &AssetBrowserEntryFilter::updatedSignal, this, &AssetBrowserTableFilterModel::filterUpdatedSlot);
m_filter = filter;
m_invalidateFilter = true;
// asset browser entries are not guaranteed to have populated when the filter is set, delay filtering until they are
bool isAssetBrowserComponentReady = false;
AssetBrowserComponentRequestBus::BroadcastResult(isAssetBrowserComponentReady, &AssetBrowserComponentRequests::AreEntriesReady);
if (isAssetBrowserComponentReady)
{
OnAssetBrowserComponentReady();
}
}
void AssetBrowserTableFilterModel::FilterUpdatedSlotImmediate()
{
auto compFilter = qobject_cast<QSharedPointer<const CompositeFilter>>(m_filter);
if (compFilter)
{
auto& subFilters = compFilter->GetSubFilters();
auto it = AZStd::find_if(subFilters.begin(), subFilters.end(), [subFilters](FilterConstType filter) -> bool {
auto assetTypeFilter = qobject_cast<QSharedPointer<const CompositeFilter>>(filter);
return !assetTypeFilter.isNull();
});
if (it != subFilters.end())
{
m_assetTypeFilter = qobject_cast<QSharedPointer<const CompositeFilter>>(*it);
}
it = AZStd::find_if(subFilters.begin(), subFilters.end(), [subFilters](FilterConstType filter) -> bool {
auto stringFilter = qobject_cast<QSharedPointer<const StringFilter>>(filter);
return !stringFilter.isNull();
});
if (it != subFilters.end())
{
m_stringFilter = qobject_cast<QSharedPointer<const StringFilter>>(*it);
}
}
invalidateFilter();
Q_EMIT filterChanged();
}
void AssetBrowserTableFilterModel::OnAssetBrowserComponentReady()
{
if (m_invalidateFilter)
{
invalidateFilter();
m_invalidateFilter = false;
}
Q_EMIT entriesUpdated();
}
bool AssetBrowserTableFilterModel::filterAcceptsRow(int source_row, const QModelIndex& source_parent) const
{
AZ_UNUSED(source_row);
AZ_UNUSED(source_parent);
QModelIndex idx = sourceModel()->index(source_row, 0, source_parent);
if (!idx.isValid())
{
return false;
}
// no filter present, every entry is visible
if (!m_filter)
{
return true;
}
//// the entry is the internal pointer of the index
//auto entry = static_cast<AssetBrowserEntry*>(idx.internalPointer());
//if (entry)
//{
// // root should return true even if its not displayed in the treeview
// if (entry && entry->GetEntryType() == AssetBrowserEntry::AssetEntryType::Root)
// {
// return true;
// }
// return m_filter->Match(entry);
//}
return true;
}
bool AssetBrowserTableFilterModel::filterAcceptsColumn(int source_column, const QModelIndex&) const
{
return m_showColumn.find(source_column) != m_showColumn.end();
}
bool AssetBrowserTableFilterModel::lessThan(const QModelIndex& source_left, const QModelIndex& source_right) const
{
if (source_left.column() == source_right.column())
{
QVariant leftData = sourceModel()->data(source_left, AssetBrowserModel::Roles::EntryRole);
QVariant rightData = sourceModel()->data(source_right, AssetBrowserModel::Roles::EntryRole);
if (leftData.canConvert<const AssetBrowserEntry*>() && rightData.canConvert<const AssetBrowserEntry*>())
{
auto leftEntry = qvariant_cast<const AssetBrowserEntry*>(leftData);
auto rightEntry = qvariant_cast<const AssetBrowserEntry*>(rightData);
// folders should always come first
if (azrtti_istypeof<const FolderAssetBrowserEntry*>(leftEntry) &&
azrtti_istypeof<const SourceAssetBrowserEntry*>(rightEntry))
{
return false;
}
if (azrtti_istypeof<const SourceAssetBrowserEntry*>(leftEntry) &&
azrtti_istypeof<const FolderAssetBrowserEntry*>(rightEntry))
{
return true;
}
// if both entries are of same type, sort alphabetically
return m_collator.compare(leftEntry->GetDisplayName(), rightEntry->GetDisplayName()) > 0;
}
}
return QSortFilterProxyModel::lessThan(source_left, source_right);
}
void AssetBrowserTableFilterModel::filterUpdatedSlot()
{
if (!m_alreadyRecomputingFilters)
{
m_alreadyRecomputingFilters = true;
// de-bounce it, since we may get many filter updates all at once.
QTimer::singleShot(0, this, [this]() {
m_alreadyRecomputingFilters = false;
FilterUpdatedSlotImmediate();
});
}
}
} // namespace AssetBrowser
} // namespace AzToolsFramework
#include "AssetBrowser/moc_AssetBrowserTableModel.cpp"
@@ -21,32 +21,87 @@ namespace AzToolsFramework
{
class AssetBrowserTableModel
: public QSortFilterProxyModel
, public AssetBrowserComponentNotificationBus::Handler
{
Q_OBJECT
public:
AZ_CLASS_ALLOCATOR(AssetBrowserTableModel, AZ::SystemAllocator, 0);
explicit AssetBrowserTableModel(QObject* parent = nullptr);
QModelIndex mapToSource(const QModelIndex &proxyIndex) const override;
QModelIndex mapFromSource(const QModelIndex &sourceIndex) const override;
//QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const override;
~AssetBrowserTableModel();
////////////////////////////////////////////////////////////////////
// AssetBrowserComponentNotificationBus
////////////////////////////////////////////////////////////////////
void OnAssetBrowserComponentReady() override;
void setSourceModel(QAbstractItemModel* sourceModel) override;
////////////////////////////////////////////////////////////////////
// QSortFilterProxyModel
QModelIndex mapToSource(const QModelIndex& proxyIndex) const override;
QModelIndex mapFromSource(const QModelIndex& sourceIndex) const override;
QModelIndex parent(const QModelIndex& child) const override;
QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const override;
QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
public Q_SLOTS:
void UpdateMap();
protected:
bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const override;
bool filterAcceptsColumn(int source_column, const QModelIndex& /*source_parent*/) const override;
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
//QVariant headerData(int section, Qt::Orientation orientation, int role /* = Qt::DisplayRole */) const override;
////////////////////////////////////////////////////////////////////
private:
int BuildMap(const QAbstractItemModel* model, const QModelIndex& parent = QModelIndex(), int row = 0);
AssetBrowserEntry* GetAssetEntry(QModelIndex index) const;
int BuildMap(const QAbstractItemModel* model, const QModelIndex& parent = QModelIndex(), int row = 0);
private:
AZStd::fixed_unordered_set<int, 3, static_cast<int>(AssetBrowserEntry::Column::Count)> m_showColumn;
QMap<int, QModelIndex> m_indexMap;
QMap<QModelIndex, int> m_rowMap;
};
}
}
class AssetBrowserTableFilterModel
: public QSortFilterProxyModel
, public AssetBrowserComponentNotificationBus::Handler
{
Q_OBJECT
public:
explicit AssetBrowserTableFilterModel(QObject* parent = nullptr);
~AssetBrowserTableFilterModel();
void setSourceModel(QAbstractItemModel* sourceModel) override;
// asset type filtering
void SetFilter(FilterConstType filter);
void FilterUpdatedSlotImmediate();
//////////////////////////////////////////////////////////////////////////
// AssetBrowserComponentNotificationBus
//////////////////////////////////////////////////////////////////////////
void OnAssetBrowserComponentReady() override;
Q_SIGNALS:
void filterChanged();
void entriesUpdated();
//////////////////////////////////////////////////////////////////////////
// QSortFilterProxyModel
protected:
bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const override;
bool filterAcceptsColumn(int source_column, const QModelIndex& /*source_parent*/) const override;
bool lessThan(const QModelIndex& source_left, const QModelIndex& source_right) const override;
//////////////////////////////////////////////////////////////////////////
public Q_SLOTS:
void filterUpdatedSlot();
private:
AZStd::fixed_unordered_set<int, 3, static_cast<int>(AssetBrowserEntry::Column::Count)> m_showColumn;
bool m_alreadyRecomputingFilters = false;
// asset source name match filter
FilterConstType m_filter;
AZ_PUSH_DISABLE_WARNING(4251, "-Wunknown-warning-option") // 4251: class '...' needs to have dll-interface to be used by clients of class '...'
QWeakPointer<const StringFilter> m_stringFilter;
QWeakPointer<const CompositeFilter> m_assetTypeFilter;
QCollator m_collator; // cache the collator as its somewhat expensive to constantly create and destroy one.
AZ_POP_DISABLE_WARNING
bool m_invalidateFilter = false;
};
} // namespace AssetBrowser
} // namespace AzToolsFramework
@@ -41,13 +41,13 @@ namespace AzToolsFramework
{
setSortingEnabled(true);
setItemDelegate(m_delegate);
// header()->hide();
//header()->hide();
setContextMenuPolicy(Qt::CustomContextMenu);
setMouseTracking(true);
connect(this, &QTableView::customContextMenuRequested, this, &AssetBrowserTableView::OnContextMenu);
//connect(m_scTimer, &QTimer::timeout, this, &AssetBrowserTreeView::OnUpdateSCThumbnailsList);
connect(m_scTimer, &QTimer::timeout, this, &AssetBrowserTableView::OnUpdateSCThumbnailsList);
AssetBrowserViewRequestBus::Handler::BusConnect();
AssetBrowserComponentNotificationBus::Handler::BusConnect();
@@ -59,9 +59,9 @@ namespace AzToolsFramework
}
void AssetBrowserTableView::setModel(QAbstractItemModel* model)
{
m_sourceModel = qobject_cast<AssetBrowserTableModel*>(model);
AZ_Assert(m_sourceModel, "Expecting AssetBrowserTableModel");
m_sourceFilterModel = qobject_cast<AssetBrowserFilterModel*>(m_sourceModel->sourceModel());
m_filterModel = qobject_cast<AssetBrowserTableModel*>(model);
AZ_Assert(m_filterModel, "Expecting AssetBrowserTableModel");
m_sourceModel = qobject_cast<AssetBrowserFilterModel*>(m_filterModel->sourceModel());
QTableView::setModel(model);
}
void AssetBrowserTableView::SetName(const QString& name)
@@ -76,9 +76,40 @@ namespace AzToolsFramework
}
AZStd::vector<AssetBrowserEntry*> AssetBrowserTableView::GetSelectedAssets() const
{
return AZStd::vector<AssetBrowserEntry*>();
}
QModelIndexList sourceIndexes{};
//for (const auto& index : selectedIndexes())
//{
// sourceIndexes.push_back(m_sourceModel->mapToSource(index));
//}
AZStd::vector<AssetBrowserEntry*> entries;
//AssetBrowserModel::SourceIndexesToAssetDatabaseEntries(sourceIndexes, entries);
return entries;
}
void AssetBrowserTableView::selectionChanged(const QItemSelection& selected, const QItemSelection& deselected)
{
AZ_UNUSED(selected);
AZ_UNUSED(deselected);
}
void AssetBrowserTableView::rowsAboutToBeRemoved(const QModelIndex& parent, int start, int end)
{
// if selected entry is being removed, clear selection so not to select (and attempt to preview) other entries potentially
// marked for deletion
if (selectionModel() && selectionModel()->selectedIndexes().size() == 1)
{
QModelIndex selectedIndex = selectionModel()->selectedIndexes().first();
QModelIndex parentSelectedIndex = selectedIndex.parent();
if (parentSelectedIndex == parent && selectedIndex.row() >= start && selectedIndex.row() <= end)
{
selectionModel()->clear();
}
}
QTableView::rowsAboutToBeRemoved(parent, start, end);
}
void AssetBrowserTableView::OnUpdateSCThumbnailsList()
{
}
void AssetBrowserTableView::SelectProduct(AZ::Data::AssetId assetID)
{
AZ_UNUSED(assetID);
@@ -91,6 +122,9 @@ namespace AzToolsFramework
void AssetBrowserTableView::ClearFilter()
{
emit ClearStringFilter();
emit ClearTypeFilter();
m_sourceModel->FilterUpdatedSlotImmediate();
}
void AssetBrowserTableView::Update()
@@ -48,18 +48,32 @@ namespace AzToolsFramework
void OnAssetBrowserComponentReady() override;
//////////////////////////////////////////////////////////////////////////
private Q_SLOTS:
void OnContextMenu(const QPoint& point);
Q_SIGNALS:
void selectionChangedSignal(const QItemSelection& selected, const QItemSelection& deselected);
void ClearStringFilter();
void ClearTypeFilter();
protected Q_SLOTS:
void selectionChanged(const QItemSelection& selected, const QItemSelection& deselected) override;
void rowsAboutToBeRemoved(const QModelIndex& parent, int start, int end) override;
//! Get all visible source entries and place them in a queue to update their source control status
//void OnUpdateSCThumbnailsList();
private:
QString m_name;
QPointer<AssetBrowserFilterModel> m_sourceFilterModel = nullptr;
QPointer<AssetBrowserTableModel> m_sourceModel = nullptr;
QPointer<AssetBrowserTableModel> m_filterModel = nullptr;
QPointer<AssetBrowserFilterModel> m_sourceModel = nullptr;
EntryDelegate* m_delegate = nullptr;
QTimer* m_scTimer = nullptr;
const int m_scUpdateInterval = 100;
private Q_SLOTS:
void OnContextMenu(const QPoint& point);
//! Get all visible source entries and place them in a queue to update their source control status
void OnUpdateSCThumbnailsList();
};
} // namespace AssetBrowser
} // namespace AzToolsFramework
@@ -68,6 +68,7 @@ AzAssetBrowserWindow::AzAssetBrowserWindow(QWidget* parent)
, m_ui(new Ui::AzAssetBrowserWindowClass())
, m_filterModel(new AzToolsFramework::AssetBrowser::AssetBrowserFilterModel(parent))
, m_tableModel(new AzToolsFramework::AssetBrowser::AssetBrowserTableModel(parent))
, m_tableFilterModel(new AzToolsFramework::AssetBrowser::AssetBrowserTableFilterModel(parent))
{
m_ui->setupUi(this);
m_ui->m_searchWidget->Setup(true, true);
@@ -82,12 +83,18 @@ AzAssetBrowserWindow::AzAssetBrowserWindow(QWidget* parent)
m_tableModel->setSourceModel(m_filterModel.data());
//m_tableModel->setSourceModel(m_assetBrowserModel);
m_ui->m_assetBrowserTreeViewWidget->setModel(m_filterModel.data());
m_ui->m_assetBrowserTableViewWidget->setModel(m_tableModel.data());
m_tableFilterModel->setSourceModel(m_tableModel.data());
m_tableFilterModel->SetFilter(m_ui->m_searchWidget->GetFilter());
m_ui->m_assetBrowserTreeViewWidget->setModel(m_filterModel.data());
m_ui->m_assetBrowserTreeViewWidget->hideColumn(static_cast<int>(AssetBrowserEntry::Column::Path));
//m_ui->m_assetBrowserTableViewWidget->setModel(m_tableFilterModel.data());
m_ui->m_assetBrowserTableViewWidget->setModel(m_tableModel.data());
m_ui->m_assetBrowserTableViewWidget->setVisible(false);
connect(m_filterModel.data(), &AssetBrowserFilterModel::entriesUpdated, m_tableModel.data(), &AssetBrowserTableModel::UpdateMap);
//connect(m_filterModel.data(), &AssetBrowserFilterModel::entriesUpdated, m_tableModel.data(), &AssetBrowserTableModel::UpdateMap);
connect(m_ui->m_searchWidget->GetFilter().data(), &AssetBrowserEntryFilter::updatedSignal,
m_filterModel.data(), &AssetBrowserFilterModel::filterUpdatedSlot);
@@ -97,6 +104,17 @@ AzAssetBrowserWindow::AzAssetBrowserWindow(QWidget* parent)
const bool selectFirstFilteredIndex = false;
m_ui->m_assetBrowserTreeViewWidget->UpdateAfterFilter(hasFilter, selectFirstFilteredIndex);
});
//connect( m_ui->m_searchWidget->GetFilter().data(), &AssetBrowserEntryFilter::updatedSignal, m_tableFilterModel.data(),
// &AssetBrowserTableFilterModel::filterUpdatedSlot);
//connect(m_tableFilterModel.data(), &AssetBrowserTableFilterModel::filterChanged, this, [this]() {
// const bool hasFilter = !m_ui->m_searchWidget->GetFilterString().isEmpty();
// const bool selectFirstFilteredIndex = false;
// m_ui->m_assetBrowserTableViewWidget->UpdateAfterFilter(hasFilter, selectFirstFilteredIndex);
//});
connect(m_filterModel.data(), &AssetBrowserFilterModel::filterChanged, m_tableModel.data(), &AssetBrowserTableModel::UpdateMap);
connect(m_ui->m_assetBrowserTreeViewWidget, &AssetBrowserTreeView::selectionChangedSignal,
this, &AzAssetBrowserWindow::SelectionChangedSlot);
connect(m_ui->m_assetBrowserTreeViewWidget, &QAbstractItemView::doubleClicked, this, &AzAssetBrowserWindow::DoubleClickedItem);
@@ -104,6 +122,9 @@ AzAssetBrowserWindow::AzAssetBrowserWindow(QWidget* parent)
connect(m_ui->m_assetBrowserTreeViewWidget, &AssetBrowserTreeView::ClearStringFilter, m_ui->m_searchWidget, &SearchWidget::ClearStringFilter);
connect(m_ui->m_assetBrowserTreeViewWidget, &AssetBrowserTreeView::ClearTypeFilter, m_ui->m_searchWidget, &SearchWidget::ClearTypeFilter);
connect(m_ui->m_assetBrowserTableViewWidget, &AssetBrowserTableView::ClearStringFilter, m_ui->m_searchWidget, &SearchWidget::ClearStringFilter);
connect(m_ui->m_assetBrowserTableViewWidget, &AssetBrowserTableView::ClearTypeFilter, m_ui->m_searchWidget, &SearchWidget::ClearTypeFilter);
m_ui->m_assetBrowserTreeViewWidget->SetName("AssetBrowserTreeView_main");
m_ui->m_assetBrowserTableViewWidget->SetName("AssetBrowserTableView_main");
@@ -31,6 +31,7 @@ namespace AzToolsFramework
class AssetBrowserFilterModel;
class AssetBrowserTableModel;
class AssetBrowserModel;
class AssetBrowserTableFilterModel;
}
}
@@ -55,6 +56,7 @@ private:
QScopedPointer<Ui::AzAssetBrowserWindowClass> m_ui;
QScopedPointer<AzToolsFramework::AssetBrowser::AssetBrowserFilterModel> m_filterModel;
QScopedPointer<AzToolsFramework::AssetBrowser::AssetBrowserTableModel> m_tableModel;
QScopedPointer<AzToolsFramework::AssetBrowser::AssetBrowserTableFilterModel> m_tableFilterModel;
AzToolsFramework::AssetBrowser::AssetBrowserModel* m_assetBrowserModel;
void UpdatePreview() const;