You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/Code/Framework/AzQtComponents/AzQtComponents/Gallery/ReflectedPropertyEditorPage.h

168 lines
4.4 KiB
C++

/*
* 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
#if !defined(Q_MOC_RUN)
#include <AzCore/Asset/AssetCommon.h>
#include <AzCore/Component/Component.h>
#include <AzCore/Math/Color.h>
#include <AzCore/Math/Quaternion.h>
#include <AzCore/Math/Vector2.h>
#include <AzCore/Math/Vector3.h>
#include <AzCore/Math/Vector4.h>
#include <AzFramework/Asset/FileTagAsset.h>
#include <QWidget>
#include <QScopedPointer>
#endif
namespace AZ
{
class SerializeContext;
}
namespace Ui
{
class ReflectedPropertyEditorPage;
}
class LevelThree
: public AZ::Component
{
public:
AZ_COMPONENT(LevelThree, "{b912dd49-bfc7-4793-bd29-2e5bba8a98dd}", AZ::Component);
// AZ::Component interface implementation.
void Init() override {}
void Activate() override {}
void Deactivate() override {}
// Required Reflect function
static void Reflect(AZ::ReflectContext* context);
// Members to reflect
bool m_bool = false;
};
class LevelTwo
: public AZ::Component
{
public:
AZ_COMPONENT(LevelTwo, "{194ad97e-2e9a-4a47-9bba-643b41283d99}", AZ::Component);
// AZ::Component interface implementation.
void Init() override {}
void Activate() override {}
void Deactivate() override {}
// Required Reflect function
static void Reflect(AZ::ReflectContext* context);
// Members to reflect
AZ::Quaternion m_quaternion;
LevelThree m_levelThree;
};
class LevelOne
: public AZ::Component
{
public:
AZ_COMPONENT(LevelOne, "{0648f811-77e9-45a6-99c9-caaaf326b2a7}", AZ::Component);
// AZ::Component interface implementation.
void Init() override {}
void Activate() override {}
void Deactivate() override {}
// Required Reflect function
static void Reflect(AZ::ReflectContext* context);
// Members to reflect
float m_float = 0;
LevelTwo m_levelTwo;
};
class GalleryComponent
: public AZ::Component
{
public:
AZ_COMPONENT(GalleryComponent, "{84656cb6-1148-482b-b28b-7779a259c792}", AZ::Component);
enum class Mode : AZ::u8
{
Average,
Minimum,
Maximum,
Multiply
};
// AZ::Component interface implementation.
void Init() override {}
void Activate() override {}
void Deactivate() override {}
// Required Reflect function
static void Reflect(AZ::ReflectContext* context);
// Callback functions
void onIntMultiplierForSliderChanged() const;
void onIntMultiplierForSpinBoxChanged() const;
void onFloatMultiplierForSliderChanged() const;
void onFloatMultiplierForSpinBoxChanged() const;
// Members to reflect
bool m_boolForButton = false;
bool m_boolForCheckBox = false;
AZ::Color m_color = AZ::Color(0.0f, 0.467f, 0.784f, 1.0f);
Mode m_mode = Mode::Average;
bool m_boolForRadioButton = false;
AZ::EntityId m_entityId;
AZ::Data::Asset<AZ::Data::AssetData> m_assetData;
AZ::Data::Asset<AZ::Data::AssetData> m_assetDataWithEditButton;
AZ::Data::Asset<AzFramework::FileTag::FileTagAsset> m_fileTagAsset;
AZ::Data::Asset<AzFramework::FileTag::FileTagAsset> m_fileTagAssetWithEditButton;
AZ::Data::Asset<AzFramework::FileTag::FileTagAsset> m_customBrowseIconAsset;
AZStd::string m_stringForLineEdit;
AZStd::string m_stringForMultiLineEdit;
AZ::Quaternion m_quaternion;
int m_intForSlider = 0;
int m_intMultiplierForSlider = 0;
int m_intMultiplierForSpinBox = 0;
float m_floatForSlider = 0;
float m_floatForSliderCurve = 0;
float m_floatMultiplierForSlider = 0;
float m_floatForSpinBox = 0;
float m_floatMultiplierForSpinBox = 0;
AZ::u32 m_crc;
AZ::Vector2 m_vector2;
AZ::Vector3 m_vector3;
AZ::Vector4 m_vector4;
AZ::Vector4 m_vector4Suffix;
bool m_boolForLongLabel = true;
LevelOne m_levelOne;
AZStd::vector<AZStd::string> m_strings = {"String 1", "String 2"};
};
class ReflectedPropertyEditorPage : public QWidget
{
Q_OBJECT // AUTOMOC
public:
explicit ReflectedPropertyEditorPage(QWidget* parent = nullptr);
~ReflectedPropertyEditorPage() override;
private:
QScopedPointer<Ui::ReflectedPropertyEditorPage> ui;
QScopedPointer<GalleryComponent> m_component;
QScopedPointer<GalleryComponent> m_cardComponent;
QScopedPointer<GalleryComponent> m_disabledCardComponent;
};