/*
 * Copyright (c) 2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#ifndef MYAPPLICATION_ARKUITEXTINPUTNODE_H
#define MYAPPLICATION_ARKUITEXTINPUTNODE_H

#include "ArkUINode.h"

#include <string>

namespace NativeModule {

    class ArkUITextInputNode : public ArkUINode {
    public:
        ArkUITextInputNode()
            : ArkUINode((NativeModuleInstance::GetInstance()->GetNativeNodeAPI())->createNode(ARKUI_NODE_TEXT_INPUT)) {}
        // 文本属性接口封装。
        void SetFontSize(float fontSize)
        {
            ArkUI_NumberValue value[] = {{.f32 = fontSize}};
            ArkUI_AttributeItem item = {value, 1};
            nativeModule_->setAttribute(handle_, NODE_FONT_SIZE, &item);
        }
        void SetFontColor(uint32_t color)
        {
            ArkUI_NumberValue value[] = {{.u32 = color}};
            ArkUI_AttributeItem item = {value, 1};
            nativeModule_->setAttribute(handle_, NODE_FONT_COLOR, &item);
        }
        void SetTextContent(const std::string &content)
        {
            ArkUI_AttributeItem item = {nullptr, 0, content.c_str()};
            nativeModule_->setAttribute(handle_, NODE_TEXT_INPUT_TEXT, &item);
        }
    
        std::string GetContent()
        {
            return nativeModule_->getAttribute(handle_, NODE_TEXT_INPUT_TEXT)->string;
        }
    };
} // namespace NativeModule

#endif // MYAPPLICATION_ARKUITEXTINPUTNODE_H