123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- /*
- * Copyright (c) Contributors to the Open 3D Engine Project.
- * For complete copyright and license terms please see the LICENSE at the root of this distribution.
- *
- * SPDX-License-Identifier: Apache-2.0 OR MIT
- *
- */
- #pragma once
- #include <QGraphicsLinearLayout>
- #include <QGraphicsWidget>
- #include <AzCore/Component/Component.h>
- #include <GraphCanvas/Components/GraphCanvasPropertyBus.h>
- #include <GraphCanvas/Components/Nodes/NodeBus.h>
- #include <GraphCanvas/Components/Nodes/NodeTitleBus.h>
- #include <GraphCanvas/Components/SceneBus.h>
- #include <GraphCanvas/Components/StyleBus.h>
- #include <GraphCanvas/Components/VisualBus.h>
- #include <GraphCanvas/Types/EntitySaveData.h>
- #include <Widgets/GraphCanvasLabel.h>
- namespace GraphCanvas
- {
- class GeneralNodeTitleGraphicsWidget;
- //! The Title component gives a Node the ability to display a title.
- class GeneralNodeTitleComponent
- : public AZ::Component
- , public NodeTitleRequestBus::Handler
- , public SceneMemberNotificationBus::Handler
- , public VisualNotificationBus::Handler
- {
- public:
- AZ_COMPONENT(GeneralNodeTitleComponent, "{67D54B26-A924-4028-8544-5684B16BF04A}");
- static void Reflect(AZ::ReflectContext*);
- GeneralNodeTitleComponent();
- ~GeneralNodeTitleComponent() = default;
- // AZ::Component
- static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided)
- {
- provided.push_back(NodeTitleServiceCrc);
- }
- static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible)
- {
- incompatible.push_back(NodeTitleServiceCrc);
- }
- static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent)
- {
- (void)dependent;
- }
- static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required)
- {
- required.push_back(AZ_CRC("GraphCanvas_StyledGraphicItemService", 0xeae4cdf4));
- required.push_back(AZ_CRC("GraphCanvas_SceneMemberService", 0xe9759a2d));
- }
-
- void Init() override;
- void Activate() override;
- void Deactivate() override;
- ////
- // NodeTitleRequestBus
- void SetDetails(const AZStd::string& title, const AZStd::string& subtitle) override;
- void SetTitle(const AZStd::string& title) override;
- AZStd::string GetTitle() const override;
- void SetSubTitle(const AZStd::string& subtitle) override;
- AZStd::string GetSubTitle() const override;
- QGraphicsWidget* GetGraphicsWidget() override;
- void SetDefaultPalette(const AZStd::string& palette) override;
- void SetPaletteOverride(const AZStd::string& paletteOverride) override;
- void SetDataPaletteOverride(const AZ::Uuid& uuid) override;
- void SetColorPaletteOverride(const QColor& color) override;
- void ConfigureIconConfiguration(PaletteIconConfiguration& paletteConfiguration) override;
- void ClearPaletteOverride() override;
- /////
- // SceneMemberNotificationBus
- void OnSceneSet(const AZ::EntityId& graphId) override;
- ////
- private:
- GeneralNodeTitleComponent(const GeneralNodeTitleComponent&) = delete;
- AZStd::string m_title;
- AZStd::string m_subTitle;
- AZStd::string m_basePalette;
- GeneralNodeTitleComponentSaveData m_saveData;
-
- GeneralNodeTitleGraphicsWidget* m_generalNodeTitleWidget = nullptr;
- };
- //! The Title QGraphicsWidget for displaying a title
- class GeneralNodeTitleGraphicsWidget
- : public QGraphicsWidget
- , public SceneNotificationBus::Handler
- , public SceneMemberNotificationBus::Handler
- , public NodeNotificationBus::Handler
- , public RootGraphicsItemNotificationBus::Handler
- {
- public:
- AZ_TYPE_INFO(GeneralNodeTitleGraphicsWidget, "{9DE7D3C0-D88C-47D8-85D4-5E0F619E60CB}");
- AZ_CLASS_ALLOCATOR(GeneralNodeTitleGraphicsWidget, AZ::SystemAllocator, 0);
- GeneralNodeTitleGraphicsWidget(const AZ::EntityId& entityId);
- ~GeneralNodeTitleGraphicsWidget() override;
- void Initialize();
- void Activate();
- void Deactivate();
- void SetDetails(const AZStd::string& title, const AZStd::string& subtitle);
- void SetTitle(const AZStd::string& title);
- void SetSubTitle(const AZStd::string& subtitle);
- void SetPaletteOverride(AZStd::string_view paletteOverride);
- void SetPaletteOverride(const AZ::Uuid& uuid);
- void SetPaletteOverride(const QColor& color);
- void ConfigureIconConfiguration(PaletteIconConfiguration& paletteConfiguration);
- void ClearPaletteOverride();
- void UpdateLayout();
- void UpdateStyles();
- void RefreshDisplay();
-
- // SceneNotificationBus
- void OnStylesChanged() override;
- ////
- // SceneMemberNotificationBus
- void OnAddedToScene(const AZ::EntityId& scene) override;
- void OnRemovedFromScene(const AZ::EntityId& scene) override;
- ////
- // NodeNotificationBus
- void OnTooltipChanged(const AZStd::string& tooltip) override;
- ////
- // RootGraphicsItemNotifications
- void OnEnabledChanged(RootGraphicsItemEnabledState enabledState) override;
- ////
- protected:
- // QGraphicsItem
- void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = nullptr) override;
- const AZ::EntityId& GetEntityId() const { return m_entityId; }
- private:
- GeneralNodeTitleGraphicsWidget(const GeneralNodeTitleGraphicsWidget&) = delete;
- QGraphicsLinearLayout* m_linearLayout;
- GraphCanvasLabel* m_titleWidget;
- GraphCanvasLabel* m_subTitleWidget;
- AZ::EntityId m_entityId;
- const Styling::StyleHelper* m_disabledPalette;
- const Styling::StyleHelper* m_paletteOverride;
- Styling::StyleHelper* m_colorOverride;
- Styling::StyleHelper m_styleHelper;
- };
- }
|