* Copyright (c) 2020-2021 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.
*/
#include "ui_test_render.h"
#include "common/screen.h"
namespace OHOS {
void UITestRender::SetUp()
{
if (container_ == nullptr) {
container_ = new UIScrollView();
container_->Resize(Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight() - BACK_BUTTON_HEIGHT);
}
}
void UITestRender::TearDown()
{
DeleteChildren(container_);
container_ = nullptr;
}
const UIView* UITestRender::GetTestView()
{
UIKitRenderTestRender001();
UIKitRenderTestRenderMeasure001();
return container_;
}
class TestRenderClickListener : public UIView::OnClickListener {
public:
bool OnClick(UIView& view, const ClickEvent& event) override
{
static uint8_t r = 20;
static uint8_t g = 120;
static uint8_t b = 50;
view.SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(r, g, b).full);
view.Invalidate();
r = r + 30;
g = g + 30;
b = b + 30;
return true;
}
};
UIViewGroup* UITestRender::CreateTestCaseGroup() const
{
UIViewGroup* group = new UIViewGroup();
group->Resize(Screen::GetInstance().GetWidth(), 200);
return group;
}
UILabel* UITestRender::CreateTitleLabel() const
{
UILabel* label = new UILabel();
label->SetPosition(TEXT_DISTANCE_TO_LEFT_SIDE, TEXT_DISTANCE_TO_TOP_SIDE, 216, TITLE_LABEL_DEFAULT_HEIGHT);
label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
return label;
}
void UITestRender::UIKitRenderTestRender001()
{
if (container_ == nullptr) {
return;
}
UIViewGroup* group = CreateTestCaseGroup();
group->SetViewId("UIKit_Render_Test_Render_001");
group->SetPosition(0, 0);
UILabel* label = CreateTitleLabel();
group->Add(label);
label->SetText("UIKit绘制效果:");
UIView* view = new UIView();
view->Resize(200, 50);
view->SetPosition(50, 50);
view->SetStyle(STYLE_BACKGROUND_COLOR, Color::Yellow().full);
group->Add(view);
view->SetTouchable(true);
view->SetOnClickListener(new TestRenderClickListener());
UIView* view1 = new UIView();
view1->Resize(100, 50);
view1->SetPosition(50, 120);
view1->SetStyle(STYLE_BACKGROUND_COLOR, Color::Green().full);
view1->SetTouchable(true);
view1->SetOnClickListener(new TestRenderClickListener());
group->Add(view1);
container_->Add(group);
}
void UITestRender::UIKitRenderTestRenderMeasure001()
{
if (container_ == nullptr) {
return;
}
UIViewGroup* group = CreateTestCaseGroup();
group->SetViewId("UIKit_Render_Test_RenderMeasure_001");
container_->Add(group);
UILabel* label = CreateTitleLabel();
group->Add(label);
label->Resize(Screen::GetInstance().GetWidth() / 2, TITLE_LABEL_DEFAULT_HEIGHT);
label->SetText("UIKit绘制Measure效果:");
testLabel_ = new UILabel();
group->Add(testLabel_);
testLabel_->SetPosition(VIEW_DISTANCE_TO_LEFT_SIDE, VIEW_DISTANCE_TO_TOP_SIDE);
testLabel_->Resize(150, 80);
testLabel_->SetViewId("label_text");
testLabel_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
testLabel_->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
testLabel_->SetText("示例文字,示例文字");
labelButton_ = new UILabelButton();
group->Add(labelButton_);
labelButton_->Resize(BUTTON_WIDHT3, BUTTON_HEIGHT3);
labelButton_->SetText("更新label");
labelButton_->SetViewId(UI_TEST_RENDER_UPDATA_BUTTON_ID_01);
labelButton_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
labelButton_->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::RELEASED);
labelButton_->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED);
labelButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::RELEASED);
labelButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_PRESS, UIButton::PRESSED);
labelButton_->SetPosition(VIEW_DISTANCE_TO_LEFT_SIDE, VIEW_DISTANCE_TO_TOP_SIDE);
labelButton_->SetOnClickListener(this);
labelButton_->LayoutBottomToSibling("label_text");
group->LayoutBottomToSibling("UIKit_Render_Test_Render_001", 10);
}
bool UITestRender::OnClick(UIView& view, const ClickEvent& event)
{
if (&view == labelButton_) {
testLabel_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 15);
}
return true;
}
}