Fixed asset completer model for source handle picker.

Signed-off-by: Chris Galvan <chgalvan@amazon.com>
This commit is contained in:
Chris Galvan
2021-11-19 16:20:54 -06:00
parent 9ec4b408fd
commit 1937e1ea51
5 changed files with 48 additions and 8 deletions
@@ -125,9 +125,6 @@ namespace AzToolsFramework
int rows = m_assetBrowserFilterModel->rowCount(index);
if (rows == 0)
{
if (index != QModelIndex()) {
AZ_Error("AssetCompleterModel", false, "No children detected in FetchResources()");
}
return;
}
@@ -136,7 +133,7 @@ namespace AzToolsFramework
QModelIndex childIndex = m_assetBrowserFilterModel->index(i, 0, index);
AssetBrowserEntry* childEntry = GetAssetEntry(m_assetBrowserFilterModel->mapToSource(childIndex));
if (childEntry->GetEntryType() == AssetBrowserEntry::AssetEntryType::Product)
if (childEntry->GetEntryType() == m_entryType)
{
ProductAssetBrowserEntry* productEntry = static_cast<ProductAssetBrowserEntry*>(childEntry);
AZStd::string assetName;
@@ -172,7 +169,6 @@ namespace AzToolsFramework
return m_assets[index.row()].m_displayName;
}
const AZ::Data::AssetId AssetCompleterModel::GetAssetIdFromIndex(const QModelIndex& index)
{
if (!index.isValid())
@@ -182,4 +178,19 @@ namespace AzToolsFramework
return m_assets[index.row()].m_assetId;
}
const AZStd::string_view AssetCompleterModel::GetPathFromIndex(const QModelIndex& index)
{
if (!index.isValid())
{
return "";
}
return m_assets[index.row()].m_path;
}
void AssetCompleterModel::SetFetchEntryType(AssetBrowserEntry::AssetEntryType entryType)
{
m_entryType = entryType;
}
}
@@ -40,6 +40,9 @@ namespace AzToolsFramework
const AZStd::string_view GetNameFromIndex(const QModelIndex& index);
const AZ::Data::AssetId GetAssetIdFromIndex(const QModelIndex& index);
const AZStd::string_view GetPathFromIndex(const QModelIndex& index);
void SetFetchEntryType(AssetBrowserEntry::AssetEntryType entryType);
private:
struct AssetItem
@@ -58,6 +61,8 @@ namespace AzToolsFramework
AZStd::vector<AssetItem> m_assets;
//! String that will be highlighted in the suggestions
QString m_highlightString;
AssetBrowserEntry::AssetEntryType m_entryType = AssetBrowserEntry::AssetEntryType::Product;
};
}
@@ -173,10 +173,11 @@ namespace AzToolsFramework
virtual void SetFolderSelection(const AZStd::string& /* folderPath */) {}
virtual void ClearAssetInternal();
void ConfigureAutocompleter();
virtual void ConfigureAutocompleter();
void RefreshAutocompleter();
void EnableAutocompleter();
void DisableAutocompleter();
const QModelIndex GetSourceIndex(const QModelIndex& index);
void HandleFieldClear();
AZStd::string AddDefaultSuffix(const AZStd::string& filename);
@@ -240,13 +241,12 @@ namespace AzToolsFramework
virtual void OnEditButtonClicked();
void OnThumbnailClicked();
void OnCompletionModelReset();
void OnAutocomplete(const QModelIndex& index);
virtual void OnAutocomplete(const QModelIndex& index);
void OnTextChange(const QString& text);
void OnReturnPressed();
void ShowContextMenu(const QPoint& pos);
private:
const QModelIndex GetSourceIndex(const QModelIndex& index);
void UpdateThumbnail();
};
@@ -13,6 +13,7 @@
#include <AzToolsFramework/AssetBrowser/AssetBrowserBus.h>
#include <AzToolsFramework/AssetBrowser/AssetBrowserEntry.h>
#include <AzToolsFramework/UI/PropertyEditor/Model/AssetCompleterModel.h>
#include <AzToolsFramework/UI/PropertyEditor/PropertyEditorAPI.h>
namespace ScriptCanvasEditor
@@ -61,6 +62,20 @@ namespace ScriptCanvasEditor
PropertyAssetCtrl::ClearAssetInternal();
}
void SourceHandlePropertyAssetCtrl::ConfigureAutocompleter()
{
if (m_completerIsConfigured)
{
return;
}
AzToolsFramework::PropertyAssetCtrl::ConfigureAutocompleter();
AssetSelectionModel selection = GetAssetSelectionModel();
m_model->SetFetchEntryType(AssetBrowserEntry::AssetEntryType::Source);
m_model->SetFilter(selection.GetDisplayFilter());
}
void SourceHandlePropertyAssetCtrl::SetSourceAssetFilterPattern(const QString& filterPattern)
{
m_sourceAssetFilterPattern = filterPattern;
@@ -86,6 +101,11 @@ namespace ScriptCanvasEditor
emit OnAssetIDChanged(AZ::Data::AssetId());
}
void SourceHandlePropertyAssetCtrl::OnAutocomplete(const QModelIndex& index)
{
SetSelectedSourcePath(m_model->GetPathFromIndex(GetSourceIndex(index)));
}
QWidget* SourceHandlePropertyHandler::CreateGUI(QWidget* pParent)
{
SourceHandlePropertyAssetCtrl* newCtrl = aznew SourceHandlePropertyAssetCtrl(pParent);
@@ -29,12 +29,16 @@ namespace ScriptCanvasEditor
AzToolsFramework::AssetBrowser::AssetSelectionModel GetAssetSelectionModel() override;
void PopupAssetPicker() override;
void ClearAssetInternal() override;
void ConfigureAutocompleter() override;
void SetSourceAssetFilterPattern(const QString& filterPattern);
AZ::IO::Path GetSelectedSourcePath() const;
void SetSelectedSourcePath(const AZ::IO::Path& sourcePath);
public Q_SLOTS:
void OnAutocomplete(const QModelIndex& index) override;
private:
//! A regular expression pattern for filtering by source assets
//! If this is set, the PropertyAssetCtrl will be dealing with source assets