/* * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or * its licensors. * * For complete copyright and license terms please see the LICENSE at the root of this * distribution (the "License"). All use of this software is governed by the License, * or, if provided, by the license below or the license accompanying this file. Do not * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * */ #include "ProjectSettingsTool_precompiled.h" #include "PropertyFuncValLineEdit.h" #include "PlatformSettings_common.h" #include "ValidationHandler.h" #include "ValidatorBus.h" #include namespace ProjectSettingsTool { PropertyFuncValLineEditCtrl::PropertyFuncValLineEditCtrl(QWidget* pParent) : AzToolsFramework::PropertyStringLineEditCtrl(pParent) , m_validator(nullptr) { connect(m_pLineEdit, &QLineEdit::textEdited, this, &PropertyFuncValLineEditCtrl::ValueChangedByUser); connect(m_pLineEdit, &QLineEdit::textChanged, this, &PropertyFuncValLineEditCtrl::ValidateAndShowErrors); connect(m_pLineEdit, &QLineEdit::textChanged, this, [this](const QString& text) { EBUS_EVENT(AzToolsFramework::PropertyEditorGUIMessages::Bus, RequestWrite, this); }); } QString PropertyFuncValLineEditCtrl::GetValue() const { return m_pLineEdit->text(); } void PropertyFuncValLineEditCtrl::SetValue(const QString& value) { m_pLineEdit->setText(value); } void PropertyFuncValLineEditCtrl::SetValueUser(const QString& value) { SetValue(value); emit ValueChangedByUser(); } FunctorValidator* PropertyFuncValLineEditCtrl::GetValidator() { return m_validator; } void PropertyFuncValLineEditCtrl::SetValidator(FunctorValidator* validator) { m_pLineEdit->setValidator(validator); m_validator = validator; } void PropertyFuncValLineEditCtrl::SetValidator(FunctorValidator::FunctorType validator) { FunctorValidator* val = nullptr; ValidatorBus::BroadcastResult( val, &ValidatorBus::Handler::GetValidator, validator); SetValidator(val); } bool PropertyFuncValLineEditCtrl::ValidateAndShowErrors() { if (m_validator) { FunctorValidator::ReturnType result = m_validator->ValidateWithErrors(m_pLineEdit->text()); if (result.first == QValidator::Acceptable) { m_pLineEdit->setToolTip(""); return true; } else { m_pLineEdit->setToolTip(result.second); m_pLineEdit->setReadOnly(false); return false; } } else { return true; } } void PropertyFuncValLineEditCtrl::ForceValidate() { // Triggers update for errors m_pLineEdit->textChanged(m_pLineEdit->text()); } void PropertyFuncValLineEditCtrl::ConsumeAttribute(AZ::u32 attrib, AzToolsFramework::PropertyAttributeReader* attrValue, const char* debugName) { if (attrib == Attributes::FuncValidator) { void* validator = nullptr; if (attrValue->Read(validator)) { if (validator != nullptr) { SetValidator(reinterpret_cast(validator)); } } } else if (attrib == Attributes::ClearButton) { bool enable = false; if (attrValue->Read(enable)) { m_pLineEdit->setClearButtonEnabled(enable); } } else if (attrib == Attributes::RemovableReadOnly) { bool readOnly = false; if (attrValue->Read(readOnly)) { m_pLineEdit->setReadOnly(readOnly); } } else if (attrib == Attributes::ObfuscatedText) { bool obfus = false; if (attrValue->Read(obfus) && obfus) { m_pLineEdit->setEchoMode(QLineEdit::Password); } } } // Handler /////////////////////////////////////////////////////////////////// PropertyFuncValLineEditHandler::PropertyFuncValLineEditHandler(ValidationHandler* valHdlr) : AzToolsFramework::PropertyHandler () , m_validationHandler(valHdlr ) {} AZ::u32 PropertyFuncValLineEditHandler::GetHandlerName(void) const { return Handlers::QValidatedLineEdit; } QWidget* PropertyFuncValLineEditHandler::CreateGUI(QWidget* pParent) { PropertyFuncValLineEditCtrl* ctrl = aznew PropertyFuncValLineEditCtrl(pParent); m_validationHandler->AddValidatorCtrl(ctrl); return ctrl; } void PropertyFuncValLineEditHandler::ConsumeAttribute(PropertyFuncValLineEditCtrl* GUI, AZ::u32 attrib, AzToolsFramework::PropertyAttributeReader* attrValue, const char* debugName) { GUI->ConsumeAttribute(attrib, attrValue, debugName); } void PropertyFuncValLineEditHandler::WriteGUIValuesIntoProperty(size_t index, PropertyFuncValLineEditCtrl* GUI, property_t& instance, AzToolsFramework::InstanceDataNode* node) { instance = GUI->GetValue().toUtf8().data(); } bool PropertyFuncValLineEditHandler::ReadValuesIntoGUI(size_t index, PropertyFuncValLineEditCtrl* GUI, const property_t& instance, AzToolsFramework::InstanceDataNode* node) { GUI->SetValue(instance.data()); GUI->ForceValidate(); return true; } PropertyFuncValLineEditHandler* PropertyFuncValLineEditHandler::Register(ValidationHandler* valHdlr) { PropertyFuncValLineEditHandler* handler = aznew PropertyFuncValLineEditHandler(valHdlr); AzToolsFramework::PropertyTypeRegistrationMessages::Bus::Broadcast( &AzToolsFramework::PropertyTypeRegistrationMessages::Bus::Handler::RegisterPropertyType, handler); return handler; } } // namespace ProjectSettingsTool #include