* Copyright (c) 2020-2022 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_app.h"
#include "test_resource_config.h"
#include "ui_test.h"
#include "ui_test_group.h"
namespace OHOS {
UITestApp* UITestApp::GetInstance()
{
static UITestApp instance;
return &instance;
}
void UITestApp::Start()
{
if (rootView_ == nullptr) {
rootView_ = RootView::GetInstance();
rootView_->SetPosition(0, 0);
rootView_->Resize(Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
if (mainMenu_ == nullptr) {
mainMenu_ = new UIViewGroup();
mainMenu_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
rootView_->Add(mainMenu_);
rootView_->Invalidate();
}
}
Init();
}
void UITestApp::Init()
{
InitBackBtn();
InitTestLabel();
InitMainMenu();
}
void UITestApp::InitMainMenu()
{
if (mainMenu_ != nullptr) {
if (testLabel_ == nullptr) {
testLabel_ = new UILabel();
testLabel_->Resize(300, BACK_BUTTON_HEIGHT);
testLabel_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);
testLabel_->SetPosition(TEXT_DISTANCE_TO_LEFT_SIDE, 0);
testLabel_->SetText("Test Demo");
testLabel_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
mainMenu_->Add(testLabel_);
}
InitAutoTestBtn();
if ((mainList_ == nullptr) && (adapter_ == nullptr)) {
uint8_t deltaHeight = 60;
constexpr uint8_t margin = 24;
mainList_ = new UIList(UIList::VERTICAL);
mainList_->SetPosition(margin, deltaHeight);
mainList_->Resize(Screen::GetInstance().GetWidth() - margin,
Screen::GetInstance().GetHeight() - deltaHeight);
mainList_->SetThrowDrag(true);
mainList_->SetReboundSize(50);
mainList_->SetViewId(UI_TEST_MAIN_LIST_ID);
mainList_->SetYScrollBarVisible(true);
if (backBtn_ == nullptr) {
InitBackBtn();
}
if (testCaseLabel_ == nullptr) {
InitTestLabel();
}
adapter_ = new TestCaseListAdapter(mainMenu_, backBtn_, testCaseLabel_);
UITestGroup::SetUpTestCase();
mainList_->SetAdapter(adapter_);
mainMenu_->Add(mainList_);
}
}
}
void UITestApp::InitAutoTestBtn()
{
if (autoTestBtn_ == nullptr) {
autoTestBtn_ = new UILabelButton();
autoTestBtn_->Resize(163, 64);
autoTestBtn_->SetPosition(Screen::GetInstance().GetWidth() - autoTestBtn_->GetWidth(), 0);
autoTestBtn_->SetText("自动测试");
auto listern = new UIView::OnClickListener();
autoTestBtn_->SetOnClickListener(listern);
autoTestBtn_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24);
autoTestBtn_->SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::RELEASED);
autoTestBtn_->SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::PRESSED);
autoTestBtn_->SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::INACTIVE);
autoTestBtn_->SetStyleForState(STYLE_BACKGROUND_OPA, 0, UIButton::RELEASED);
autoTestBtn_->SetStyleForState(STYLE_BACKGROUND_OPA, 0, UIButton::PRESSED);
autoTestBtn_->SetStyleForState(STYLE_BACKGROUND_OPA, 0, UIButton::INACTIVE);
autoTestBtn_->SetVisible(false);
mainMenu_->Add(autoTestBtn_);
}
}
void UITestApp::InitBackBtn()
{
if (backBtn_ == nullptr) {
backBtn_ = new UILabelButton();
backBtn_->SetPosition(0, 0);
backBtn_->Resize(163, 64);
backBtn_->SetText("Back");
backBtn_->SetViewId(UI_TEST_BACK_BUTTON_ID);
backBtn_->SetLabelPosition(72, 0);
backBtn_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24);
backBtn_->SetImageSrc(TEST_BACK_LEFT_ARROW, TEST_BACK_LEFT_ARROW);
backBtn_->SetImagePosition(27, BACK_BUTTON_HEIGHT / 2 - 18);
backBtn_->SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::RELEASED);
backBtn_->SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::PRESSED);
backBtn_->SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::INACTIVE);
backBtn_->SetStyleForState(STYLE_BACKGROUND_OPA, 0, UIButton::RELEASED);
backBtn_->SetStyleForState(STYLE_BACKGROUND_OPA, 0, UIButton::PRESSED);
backBtn_->SetStyleForState(STYLE_BACKGROUND_OPA, 0, UIButton::INACTIVE);
}
}
void UITestApp::InitTestLabel()
{
if (testCaseLabel_ == nullptr) {
testCaseLabel_ = new UILabel();
testCaseLabel_->Resize(Screen::GetInstance().GetWidth(), BACK_BUTTON_HEIGHT);
testCaseLabel_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
testCaseLabel_->SetText("Test Case Name");
testCaseLabel_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
}
}
UITestApp::~UITestApp()
{
if (adapter_ != nullptr) {
delete adapter_;
adapter_ = nullptr;
}
if (mainList_ != nullptr) {
delete mainList_;
mainList_ = nullptr;
}
if (backBtn_ != nullptr) {
delete backBtn_;
backBtn_ = nullptr;
}
rootView_ = nullptr;
if (autoTestBtn_ != nullptr) {
auto listener = autoTestBtn_->GetOnClickListener();
if (listener != nullptr) {
delete listener;
autoTestBtn_->SetOnClickListener(nullptr);
}
delete autoTestBtn_;
autoTestBtn_ = nullptr;
}
if (mainMenu_ != nullptr) {
delete mainMenu_;
mainMenu_ = nullptr;
}
}
}