From b215d1c09860082463f09800802b73b5c22cb15a Mon Sep 17 00:00:00 2001 From: mnaumov Date: Fri, 23 Apr 2021 14:56:28 -0700 Subject: [PATCH 1/5] Enlarged thumbnails on hover --- .../UI/PropertyEditor/PropertyAssetCtrl.cpp | 41 +++-------------- .../UI/PropertyEditor/PropertyAssetCtrl.hxx | 9 +--- ...DropDown.cpp => ThumbnailPropertyCtrl.cpp} | 45 +++++++++++++++---- ...nailDropDown.h => ThumbnailPropertyCtrl.h} | 7 ++- .../aztoolsframework_files.cmake | 4 +- .../Material/EditorMaterialComponentSlot.cpp | 2 +- 6 files changed, 52 insertions(+), 56 deletions(-) rename Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/{ThumbnailDropDown.cpp => ThumbnailPropertyCtrl.cpp} (65%) rename Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/{ThumbnailDropDown.h => ThumbnailPropertyCtrl.h} (84%) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp index 261645e79a..9d9a3da69b 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp @@ -63,7 +63,7 @@ AZ_POP_DISABLE_WARNING #include #include -#include +#include namespace AzToolsFramework { @@ -93,15 +93,11 @@ namespace AzToolsFramework setAcceptDrops(true); - m_thumbnail = new Thumbnailer::ThumbnailWidget(this); - m_thumbnail->setFixedSize(QSize(24, 24)); + m_thumbnail = new ThumbnailPropertyCtrl(this); + m_thumbnail->setFixedSize(QSize(40, 24)); m_thumbnail->setVisible(false); - m_thumbnailDropDown = new ThumbnailDropDown(this); - m_thumbnailDropDown->setFixedSize(QSize(40, 24)); - m_thumbnailDropDown->setVisible(false); - - connect(m_thumbnailDropDown, &ThumbnailDropDown::clicked, this, &PropertyAssetCtrl::OnEditButtonClicked); + connect(m_thumbnail, &ThumbnailPropertyCtrl::clicked, this, &PropertyAssetCtrl::OnEditButtonClicked); m_editButton = new QToolButton(this); m_editButton->setAutoRaise(true); @@ -112,7 +108,6 @@ namespace AzToolsFramework connect(m_editButton, &QToolButton::clicked, this, &PropertyAssetCtrl::OnEditButtonClicked); pLayout->addWidget(m_thumbnail); - pLayout->addWidget(m_thumbnailDropDown); pLayout->addWidget(m_browseEdit); pLayout->addWidget(m_editButton); @@ -1091,9 +1086,8 @@ namespace AzToolsFramework void PropertyAssetCtrl::UpdateThumbnail() { m_thumbnail->setVisible(m_showThumbnail); - m_thumbnailDropDown->setVisible(m_showThumbnailDropDown); - if (m_showThumbnail || m_showThumbnailDropDown) + if (m_showThumbnail) { const AZ::Data::AssetId assetID = GetCurrentAssetID(); if (assetID.IsValid()) @@ -1112,17 +1106,12 @@ namespace AzToolsFramework { m_thumbnail->SetThumbnailKey(thumbnailKey, Thumbnailer::ThumbnailContext::DefaultContext); } - if (m_showThumbnailDropDown) - { - m_thumbnailDropDown->SetThumbnailKey(thumbnailKey, Thumbnailer::ThumbnailContext::DefaultContext); - } return; } } } m_thumbnail->ClearThumbnail(); - m_thumbnailDropDown->ClearThumbnail(); } void PropertyAssetCtrl::SetClearButtonEnabled(bool enable) @@ -1156,16 +1145,6 @@ namespace AzToolsFramework return m_showThumbnail; } - void PropertyAssetCtrl::SetShowThumbnailDropDown(bool enable) - { - m_showThumbnailDropDown = enable; - } - - bool PropertyAssetCtrl::GetShowThumbnailDropDown() const - { - return m_showThumbnailDropDown; - } - const AZ::Uuid& AssetPropertyHandlerDefault::GetHandledType() const { return AZ::GetAssetClassId(); @@ -1276,19 +1255,11 @@ namespace AzToolsFramework } } else if (attrib == AZ_CRC_CE("Thumbnail")) - { - bool showThumbnail = false; - if (attrValue->Read(showThumbnail)) - { - GUI->SetShowThumbnail(showThumbnail); - } - } - else if (attrib == AZ_CRC_CE("ThumbnailWithDropDown")) { PropertyAssetCtrl::EditCallbackType* func = azdynamic_cast(attrValue->GetAttribute()); if (func) { - GUI->SetShowThumbnailDropDown(true); + GUI->SetShowThumbnail(true); GUI->SetEditNotifyCallback(func); } else diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx index b1f2dbb529..f7f7ece856 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx @@ -45,7 +45,7 @@ namespace AzToolsFramework { class AssetCompleterModel; class AssetCompleterListView; - class ThumbnailDropDown; + class ThumbnailPropertyCtrl; namespace Thumbnailer { @@ -95,8 +95,7 @@ namespace AzToolsFramework void OnAssetIDChanged(AZ::Data::AssetId newAssetID); protected: - ThumbnailDropDown* m_thumbnailDropDown = nullptr; - Thumbnailer::ThumbnailWidget* m_thumbnail = nullptr; + ThumbnailPropertyCtrl* m_thumbnail = nullptr; QPushButton* m_errorButton = nullptr; QToolButton* m_editButton = nullptr; @@ -158,8 +157,6 @@ namespace AzToolsFramework bool m_showThumbnail = false; - bool m_showThumbnailDropDown = false; - // ! Default suffix used in the field's placeholder text when a default value is set. const char* m_DefaultSuffix = " (default)"; @@ -209,8 +206,6 @@ namespace AzToolsFramework void SetShowThumbnail(bool enable); bool GetShowThumbnail() const; - void SetShowThumbnailDropDown(bool enable); - bool GetShowThumbnailDropDown() const; void SetSelectedAssetID(const AZ::Data::AssetId& newID); void SetCurrentAssetType(const AZ::Data::AssetType& newType); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailDropDown.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.cpp similarity index 65% rename from Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailDropDown.cpp rename to Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.cpp index 8a942a952a..6b9322226f 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailDropDown.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.cpp @@ -19,12 +19,14 @@ AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // 4251: 'QRawFon #include #include #include +#include AZ_POP_DISABLE_WARNING -#include "ThumbnailDropDown.h" +#include "ThumbnailPropertyCtrl.h" namespace AzToolsFramework { - ThumbnailDropDown::ThumbnailDropDown(QWidget* parent) + + ThumbnailPropertyCtrl::ThumbnailPropertyCtrl(QWidget* parent) : QWidget(parent) { QHBoxLayout* pLayout = new QHBoxLayout(); @@ -51,19 +53,20 @@ namespace AzToolsFramework setLayout(pLayout); } - void ThumbnailDropDown::SetThumbnailKey(Thumbnailer::SharedThumbnailKey key, const char* contextName) + void ThumbnailPropertyCtrl::SetThumbnailKey(Thumbnailer::SharedThumbnailKey key, const char* contextName) { + m_key = key; m_emptyThumbnail->setVisible(false); m_thumbnail->SetThumbnailKey(key, contextName); } - void ThumbnailDropDown::ClearThumbnail() + void ThumbnailPropertyCtrl::ClearThumbnail() { m_emptyThumbnail->setVisible(true); m_thumbnail->ClearThumbnail(); } - bool ThumbnailDropDown::event(QEvent* e) + bool ThumbnailPropertyCtrl::event(QEvent* e) { if (isEnabled()) { @@ -77,7 +80,7 @@ namespace AzToolsFramework return QWidget::event(e); } - void ThumbnailDropDown::paintEvent(QPaintEvent* e) + void ThumbnailPropertyCtrl::paintEvent(QPaintEvent* e) { QPainter p(this); QRect targetRect(QPoint(), QSize(40, 24)); @@ -85,17 +88,41 @@ namespace AzToolsFramework QWidget::paintEvent(e); } - void ThumbnailDropDown::enterEvent(QEvent* e) +#pragma optimize("", off) + void ThumbnailPropertyCtrl::enterEvent(QEvent* e) { m_dropDownArrow->setPixmap(QPixmap(":/stylesheet/img/triangle0_highlighted.png")); + if (!m_thumbnailEnlarged && m_key) + { + QWidget* rootWidget = QApplication::activeWindow(); + if (!rootWidget) + return; + QPoint rootPosition = rootWidget->pos(); + QPoint myPosition = pos(); + QPoint position = mapToGlobal(myPosition - QPoint(185, 0)); + QSize size(180, 180); + m_thumbnailEnlarged = new Thumbnailer::ThumbnailWidget(); + m_thumbnailEnlarged->setFixedSize(size); + m_thumbnailEnlarged->move(position); + m_thumbnailEnlarged->setWindowTitle("test"); + m_thumbnailEnlarged->setWindowFlags(Qt::Window | Qt::FramelessWindowHint); + m_thumbnailEnlarged->SetThumbnailKey(m_key); + m_thumbnailEnlarged->show(); + } QWidget::enterEvent(e); } +#pragma optimize("", on) - void ThumbnailDropDown::leaveEvent(QEvent* e) + void ThumbnailPropertyCtrl::leaveEvent(QEvent* e) { m_dropDownArrow->setPixmap(QPixmap(":/stylesheet/img/triangle0.png")); + if (m_thumbnailEnlarged) + { + delete m_thumbnailEnlarged; + m_thumbnailEnlarged = nullptr; + } QWidget::leaveEvent(e); } } -#include "UI/PropertyEditor/moc_ThumbnailDropDown.cpp" +#include "UI/PropertyEditor/moc_ThumbnailPropertyCtrl.cpp" diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailDropDown.h b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.h similarity index 84% rename from Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailDropDown.h rename to Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.h index da269742ff..129b68f307 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailDropDown.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.h @@ -30,11 +30,12 @@ namespace AzToolsFramework class ThumbnailWidget; } - class ThumbnailDropDown : public QWidget + //! Used by PropertyAssetCtrl to display thumbnail preview of the asset as well as additional drop-down actions + class ThumbnailPropertyCtrl : public QWidget { Q_OBJECT public: - explicit ThumbnailDropDown(QWidget* parent = nullptr); + explicit ThumbnailPropertyCtrl(QWidget* parent = nullptr); //! Call this to set what thumbnail widget will display void SetThumbnailKey(Thumbnailer::SharedThumbnailKey key, const char* contextName = "Default"); @@ -52,7 +53,9 @@ namespace AzToolsFramework void leaveEvent(QEvent* e) override; private: + Thumbnailer::SharedThumbnailKey m_key; Thumbnailer::ThumbnailWidget* m_thumbnail = nullptr; + Thumbnailer::ThumbnailWidget* m_thumbnailEnlarged = nullptr; QLabel* m_emptyThumbnail = nullptr; AspectRatioAwarePixmapWidget* m_dropDownArrow = nullptr; }; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/aztoolsframework_files.cmake b/Code/Framework/AzToolsFramework/AzToolsFramework/aztoolsframework_files.cmake index 2939bb44ad..96eaab3009 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/aztoolsframework_files.cmake +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/aztoolsframework_files.cmake @@ -417,8 +417,8 @@ set(FILES UI/PropertyEditor/GrowTextEdit.cpp UI/PropertyEditor/MultiLineTextEditHandler.h UI/PropertyEditor/MultiLineTextEditHandler.cpp - UI/PropertyEditor/ThumbnailDropDown.h - UI/PropertyEditor/ThumbnailDropDown.cpp + UI/PropertyEditor/ThumbnailPropertyCtrl.h + UI/PropertyEditor/ThumbnailPropertyCtrl.cpp UI/Slice/SlicePushWidget.cpp UI/Slice/SlicePushWidget.hxx UI/Slice/SliceOverridesNotificationWindow.cpp diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialComponentSlot.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialComponentSlot.cpp index 2f74991756..a8c5a7eb41 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialComponentSlot.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialComponentSlot.cpp @@ -98,7 +98,7 @@ namespace AZ ->Attribute(AZ::Edit::Attributes::DefaultAsset, &EditorMaterialComponentSlot::GetDefaultAssetId) ->Attribute(AZ::Edit::Attributes::NameLabelOverride, &EditorMaterialComponentSlot::GetLabel) ->Attribute(AZ::Edit::Attributes::ShowProductAssetFileName, true) - ->Attribute("ThumbnailWithDropDown", &EditorMaterialComponentSlot::OpenPopupMenu) + ->Attribute("Thumbnail", &EditorMaterialComponentSlot::OpenPopupMenu) ; } } From 9f4606c17a729449f5774a26bd791d0b33e49603 Mon Sep 17 00:00:00 2001 From: mnaumov Date: Fri, 23 Apr 2021 15:01:11 -0700 Subject: [PATCH 2/5] Removing test code --- .../UI/PropertyEditor/ThumbnailPropertyCtrl.cpp | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.cpp index 6b9322226f..a5b9f71cc5 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.cpp @@ -88,30 +88,22 @@ namespace AzToolsFramework QWidget::paintEvent(e); } -#pragma optimize("", off) void ThumbnailPropertyCtrl::enterEvent(QEvent* e) { m_dropDownArrow->setPixmap(QPixmap(":/stylesheet/img/triangle0_highlighted.png")); if (!m_thumbnailEnlarged && m_key) { - QWidget* rootWidget = QApplication::activeWindow(); - if (!rootWidget) - return; - QPoint rootPosition = rootWidget->pos(); - QPoint myPosition = pos(); - QPoint position = mapToGlobal(myPosition - QPoint(185, 0)); + QPoint position = mapToGlobal(pos() - QPoint(185, 0)); QSize size(180, 180); m_thumbnailEnlarged = new Thumbnailer::ThumbnailWidget(); m_thumbnailEnlarged->setFixedSize(size); m_thumbnailEnlarged->move(position); - m_thumbnailEnlarged->setWindowTitle("test"); m_thumbnailEnlarged->setWindowFlags(Qt::Window | Qt::FramelessWindowHint); m_thumbnailEnlarged->SetThumbnailKey(m_key); m_thumbnailEnlarged->show(); } QWidget::enterEvent(e); } -#pragma optimize("", on) void ThumbnailPropertyCtrl::leaveEvent(QEvent* e) { From 30458bc1be353aa791e9e0bc7b999e179881a7a7 Mon Sep 17 00:00:00 2001 From: mnaumov Date: Fri, 23 Apr 2021 21:40:27 -0700 Subject: [PATCH 3/5] PR feedback --- .../UI/PropertyEditor/PropertyAssetCtrl.cpp | 34 +++++++++++++++---- .../UI/PropertyEditor/PropertyAssetCtrl.hxx | 7 +++- .../PropertyEditor/ThumbnailPropertyCtrl.cpp | 14 ++++++++ .../UI/PropertyEditor/ThumbnailPropertyCtrl.h | 2 ++ .../Material/EditorMaterialComponentSlot.cpp | 2 +- 5 files changed, 51 insertions(+), 8 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp index 9d9a3da69b..276b8f75ab 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp @@ -97,7 +97,7 @@ namespace AzToolsFramework m_thumbnail->setFixedSize(QSize(40, 24)); m_thumbnail->setVisible(false); - connect(m_thumbnail, &ThumbnailPropertyCtrl::clicked, this, &PropertyAssetCtrl::OnEditButtonClicked); + connect(m_thumbnail, &ThumbnailPropertyCtrl::clicked, [&]() { PropertyAssetCtrl::OnEditButtonClicked(m_thumbnailCallback); }); m_editButton = new QToolButton(this); m_editButton->setAutoRaise(true); @@ -105,7 +105,7 @@ namespace AzToolsFramework m_editButton->setToolTip("Edit asset"); m_editButton->setVisible(false); - connect(m_editButton, &QToolButton::clicked, this, &PropertyAssetCtrl::OnEditButtonClicked); + connect(m_editButton, &QToolButton::clicked, [&]() { PropertyAssetCtrl::OnEditButtonClicked(m_editNotifyCallback); }); pLayout->addWidget(m_thumbnail); pLayout->addWidget(m_browseEdit); @@ -704,13 +704,13 @@ namespace AzToolsFramework AzFramework::AssetCatalogEventBus::Handler::BusDisconnect(); } - void PropertyAssetCtrl::OnEditButtonClicked() + void PropertyAssetCtrl::OnEditButtonClicked(EditCallbackType* editNotifyCallback) { const AZ::Data::AssetId assetID = GetCurrentAssetID(); - if (m_editNotifyCallback) + if (editNotifyCallback) { AZ_Error("Asset Property", m_editNotifyTarget, "No notification target set for edit callback."); - m_editNotifyCallback->Invoke(m_editNotifyTarget, assetID, GetCurrentAssetType()); + editNotifyCallback->Invoke(m_editNotifyTarget, assetID, GetCurrentAssetType()); return; } else @@ -1089,6 +1089,7 @@ namespace AzToolsFramework if (m_showThumbnail) { + m_thumbnail->ShowDropDownArrow(m_showThumbnailDropDownButton); const AZ::Data::AssetId assetID = GetCurrentAssetID(); if (assetID.IsValid()) { @@ -1145,6 +1146,21 @@ namespace AzToolsFramework return m_showThumbnail; } + void PropertyAssetCtrl::SetShowThumbnailDropDownButton(bool enable) + { + m_showThumbnailDropDownButton = enable; + } + + bool PropertyAssetCtrl::GetShowThumbnailDropDownButton() const + { + return m_showThumbnailDropDownButton; + } + + void PropertyAssetCtrl::SetThumbnailCallback(EditCallbackType* editNotifyCallback) + { + m_thumbnailCallback = editNotifyCallback; + } + const AZ::Uuid& AssetPropertyHandlerDefault::GetHandledType() const { return AZ::GetAssetClassId(); @@ -1255,15 +1271,21 @@ namespace AzToolsFramework } } else if (attrib == AZ_CRC_CE("Thumbnail")) + { + GUI->SetShowThumbnail(true); + } + else if (attrib == AZ_CRC_CE("ThumbnailCallback")) { PropertyAssetCtrl::EditCallbackType* func = azdynamic_cast(attrValue->GetAttribute()); if (func) { GUI->SetShowThumbnail(true); - GUI->SetEditNotifyCallback(func); + GUI->SetShowThumbnailDropDownButton(true); + GUI->SetThumbnailCallback(func); } else { + GUI->SetShowThumbnailDropDownButton(false); GUI->SetEditNotifyCallback(nullptr); } } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx index f7f7ece856..aa4a174607 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx @@ -156,6 +156,8 @@ namespace AzToolsFramework bool m_showProductAssetName = true; bool m_showThumbnail = false; + bool m_showThumbnailDropDownButton = false; + EditCallbackType* m_thumbnailCallback = nullptr; // ! Default suffix used in the field's placeholder text when a default value is set. const char* m_DefaultSuffix = " (default)"; @@ -206,6 +208,9 @@ namespace AzToolsFramework void SetShowThumbnail(bool enable); bool GetShowThumbnail() const; + void SetShowThumbnailDropDownButton(bool enable); + bool GetShowThumbnailDropDownButton() const; + void SetThumbnailCallback(EditCallbackType* editNotifyCallback); void SetSelectedAssetID(const AZ::Data::AssetId& newID); void SetCurrentAssetType(const AZ::Data::AssetType& newType); @@ -216,7 +221,7 @@ namespace AzToolsFramework void OnClearButtonClicked(); void UpdateAssetDisplay(); void OnLineEditFocus(bool focus); - virtual void OnEditButtonClicked(); + virtual void OnEditButtonClicked(EditCallbackType* editNotifyCallback); void OnCompletionModelReset(); void OnAutocomplete(const QModelIndex& index); void OnTextChange(const QString& text); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.cpp index a5b9f71cc5..4a501484c2 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.cpp @@ -39,6 +39,7 @@ namespace AzToolsFramework m_dropDownArrow = new AspectRatioAwarePixmapWidget(this); m_dropDownArrow->setPixmap(QPixmap(":/stylesheet/img/triangle0.png")); m_dropDownArrow->setFixedSize(QSize(8, 24)); + ShowDropDownArrow(false); m_emptyThumbnail = new QLabel(this); m_emptyThumbnail->setPixmap(QPixmap(":/stylesheet/img/line.png")); @@ -66,6 +67,19 @@ namespace AzToolsFramework m_thumbnail->ClearThumbnail(); } + void ThumbnailPropertyCtrl::ShowDropDownArrow(bool visible) + { + if (visible) + { + setFixedSize(QSize(40, 24)); + } + else + { + setFixedSize(QSize(24, 24)); + } + m_dropDownArrow->setVisible(visible); + } + bool ThumbnailPropertyCtrl::event(QEvent* e) { if (isEnabled()) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.h b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.h index 129b68f307..ee61deab07 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.h @@ -42,6 +42,8 @@ namespace AzToolsFramework //! Remove current thumbnail void ClearThumbnail(); + void ShowDropDownArrow(bool visible); + bool event(QEvent* e) override; Q_SIGNALS: diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialComponentSlot.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialComponentSlot.cpp index a8c5a7eb41..9d63f4a4a9 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialComponentSlot.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialComponentSlot.cpp @@ -98,7 +98,7 @@ namespace AZ ->Attribute(AZ::Edit::Attributes::DefaultAsset, &EditorMaterialComponentSlot::GetDefaultAssetId) ->Attribute(AZ::Edit::Attributes::NameLabelOverride, &EditorMaterialComponentSlot::GetLabel) ->Attribute(AZ::Edit::Attributes::ShowProductAssetFileName, true) - ->Attribute("Thumbnail", &EditorMaterialComponentSlot::OpenPopupMenu) + ->Attribute("ThumbnailCallback", &EditorMaterialComponentSlot::OpenPopupMenu) ; } } From 0bcc85e4d86f05d61439fd3c579a8d34d0056984 Mon Sep 17 00:00:00 2001 From: mnaumov Date: Fri, 23 Apr 2021 21:55:14 -0700 Subject: [PATCH 4/5] scope pointer --- .../UI/PropertyEditor/ThumbnailPropertyCtrl.cpp | 5 ++--- .../UI/PropertyEditor/ThumbnailPropertyCtrl.h | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.cpp index 4a501484c2..bb9232435a 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.cpp @@ -109,7 +109,7 @@ namespace AzToolsFramework { QPoint position = mapToGlobal(pos() - QPoint(185, 0)); QSize size(180, 180); - m_thumbnailEnlarged = new Thumbnailer::ThumbnailWidget(); + m_thumbnailEnlarged.reset(new Thumbnailer::ThumbnailWidget()); m_thumbnailEnlarged->setFixedSize(size); m_thumbnailEnlarged->move(position); m_thumbnailEnlarged->setWindowFlags(Qt::Window | Qt::FramelessWindowHint); @@ -124,8 +124,7 @@ namespace AzToolsFramework m_dropDownArrow->setPixmap(QPixmap(":/stylesheet/img/triangle0.png")); if (m_thumbnailEnlarged) { - delete m_thumbnailEnlarged; - m_thumbnailEnlarged = nullptr; + m_thumbnailEnlarged.reset(); } QWidget::leaveEvent(e); } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.h b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.h index ee61deab07..428f24dbf6 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/ThumbnailPropertyCtrl.h @@ -57,7 +57,7 @@ namespace AzToolsFramework private: Thumbnailer::SharedThumbnailKey m_key; Thumbnailer::ThumbnailWidget* m_thumbnail = nullptr; - Thumbnailer::ThumbnailWidget* m_thumbnailEnlarged = nullptr; + QScopedPointer m_thumbnailEnlarged; QLabel* m_emptyThumbnail = nullptr; AspectRatioAwarePixmapWidget* m_dropDownArrow = nullptr; }; From c4e3c39ee2d246926dadd1e314abd94f8ab57e70 Mon Sep 17 00:00:00 2001 From: mnaumov Date: Mon, 26 Apr 2021 12:44:51 -0700 Subject: [PATCH 5/5] PR feedback --- .../UI/PropertyEditor/PropertyAssetCtrl.cpp | 23 ++++++++++++++----- .../UI/PropertyEditor/PropertyAssetCtrl.hxx | 3 ++- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp index 276b8f75ab..d2e34c662f 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp @@ -97,7 +97,7 @@ namespace AzToolsFramework m_thumbnail->setFixedSize(QSize(40, 24)); m_thumbnail->setVisible(false); - connect(m_thumbnail, &ThumbnailPropertyCtrl::clicked, [&]() { PropertyAssetCtrl::OnEditButtonClicked(m_thumbnailCallback); }); + connect(m_thumbnail, &ThumbnailPropertyCtrl::clicked, this, &PropertyAssetCtrl::OnThumbnailClicked); m_editButton = new QToolButton(this); m_editButton->setAutoRaise(true); @@ -105,7 +105,7 @@ namespace AzToolsFramework m_editButton->setToolTip("Edit asset"); m_editButton->setVisible(false); - connect(m_editButton, &QToolButton::clicked, [&]() { PropertyAssetCtrl::OnEditButtonClicked(m_editNotifyCallback); }); + connect(m_editButton, &QToolButton::clicked, this, &PropertyAssetCtrl::OnEditButtonClicked); pLayout->addWidget(m_thumbnail); pLayout->addWidget(m_browseEdit); @@ -183,6 +183,17 @@ namespace AzToolsFramework } } + void PropertyAssetCtrl::OnThumbnailClicked() + { + const AZ::Data::AssetId assetID = GetCurrentAssetID(); + if (m_thumbnailCallback) + { + AZ_Error("Asset Property", m_editNotifyTarget, "No notification target set for edit callback."); + m_thumbnailCallback->Invoke(m_editNotifyTarget, assetID, GetCurrentAssetType()); + return; + } + } + void PropertyAssetCtrl::OnCompletionModelReset() { if (!m_completerIsActive) @@ -704,13 +715,13 @@ namespace AzToolsFramework AzFramework::AssetCatalogEventBus::Handler::BusDisconnect(); } - void PropertyAssetCtrl::OnEditButtonClicked(EditCallbackType* editNotifyCallback) + void PropertyAssetCtrl::OnEditButtonClicked() { const AZ::Data::AssetId assetID = GetCurrentAssetID(); - if (editNotifyCallback) + if (m_editNotifyCallback) { AZ_Error("Asset Property", m_editNotifyTarget, "No notification target set for edit callback."); - editNotifyCallback->Invoke(m_editNotifyTarget, assetID, GetCurrentAssetType()); + m_editNotifyCallback->Invoke(m_editNotifyTarget, assetID, GetCurrentAssetType()); return; } else @@ -1286,7 +1297,7 @@ namespace AzToolsFramework else { GUI->SetShowThumbnailDropDownButton(false); - GUI->SetEditNotifyCallback(nullptr); + GUI->SetThumbnailCallback(nullptr); } } } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx index aa4a174607..b28ce3247c 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx @@ -221,7 +221,8 @@ namespace AzToolsFramework void OnClearButtonClicked(); void UpdateAssetDisplay(); void OnLineEditFocus(bool focus); - virtual void OnEditButtonClicked(EditCallbackType* editNotifyCallback); + virtual void OnEditButtonClicked(); + void OnThumbnailClicked(); void OnCompletionModelReset(); void OnAutocomplete(const QModelIndex& index); void OnTextChange(const QString& text);