1 /*
2 * Copyright (c) 2020-2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "ui_test_button.h"
17
18 #include "common/screen.h"
19 #include "components/root_view.h"
20 #include "components/ui_digital_clock.h"
21 #include "components/ui_label.h"
22 #include "components/ui_label_button.h"
23 #include "components/ui_radio_button.h"
24 #include "components/ui_toggle_button.h"
25 #include "font/ui_font.h"
26 #include "test_resource_config.h"
27
28 namespace OHOS {
SetUp()29 void UITestBUTTON::SetUp()
30 {
31 if (container_ == nullptr) {
32 container_ = new UIScrollView();
33 container_->Resize(Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight() - BACK_BUTTON_HEIGHT);
34 container_->SetHorizontalScrollState(false);
35 }
36 }
37
TearDown()38 void UITestBUTTON::TearDown()
39 {
40 if (checkBoxChangeListener_ != nullptr) {
41 delete checkBoxChangeListener_;
42 checkBoxChangeListener_ = nullptr;
43 }
44 if (checkBoxChangeListener1_ != nullptr) {
45 delete checkBoxChangeListener1_;
46 checkBoxChangeListener1_ = nullptr;
47 }
48 if (checkBoxChangeListener2_ != nullptr) {
49 delete checkBoxChangeListener2_;
50 checkBoxChangeListener2_ = nullptr;
51 }
52 if (radioChangeListener_ != nullptr) {
53 delete radioChangeListener_;
54 radioChangeListener_ = nullptr;
55 }
56 if (radioChangeListener1_ != nullptr) {
57 delete radioChangeListener1_;
58 radioChangeListener1_ = nullptr;
59 }
60 if (radioChangeListener2_ != nullptr) {
61 delete radioChangeListener2_;
62 radioChangeListener2_ = nullptr;
63 }
64 if (toggleChangeListener_ != nullptr) {
65 delete toggleChangeListener_;
66 toggleChangeListener_ = nullptr;
67 }
68 if (toggleChangeListener1_ != nullptr) {
69 delete toggleChangeListener1_;
70 toggleChangeListener1_ = nullptr;
71 }
72 if (toggleChangeListener2_ != nullptr) {
73 delete toggleChangeListener2_;
74 toggleChangeListener2_ = nullptr;
75 }
76 if (clickEnableVisiableListener_ != nullptr) {
77 delete clickEnableVisiableListener_;
78 clickEnableVisiableListener_ = nullptr;
79 }
80 if (clickDisableVisiableListener_ != nullptr) {
81 delete clickDisableVisiableListener_;
82 clickDisableVisiableListener_ = nullptr;
83 }
84 if (clickEnableTouchableListener_ != nullptr) {
85 delete clickEnableTouchableListener_;
86 clickEnableTouchableListener_ = nullptr;
87 }
88 if (clickDisableTouchableListener_ != nullptr) {
89 delete clickDisableTouchableListener_;
90 clickDisableTouchableListener_ = nullptr;
91 }
92 if (clickColorToWhiteListener_ != nullptr) {
93 delete clickColorToWhiteListener_;
94 clickColorToWhiteListener_ = nullptr;
95 }
96 if (clickColorToRedListener_ != nullptr) {
97 delete clickColorToRedListener_;
98 clickColorToRedListener_ = nullptr;
99 }
100 if (clickRevetColorListener_ != nullptr) {
101 delete clickRevetColorListener_;
102 clickRevetColorListener_ = nullptr;
103 }
104 if (clickRevetToOriginListener_ != nullptr) {
105 delete clickRevetToOriginListener_;
106 clickRevetToOriginListener_ = nullptr;
107 }
108 if (clickBigListener_ != nullptr) {
109 delete clickBigListener_;
110 clickBigListener_ = nullptr;
111 }
112 if (clickLeftListener_ != nullptr) {
113 delete clickLeftListener_;
114 clickLeftListener_ = nullptr;
115 }
116 if (clickRightListener_ != nullptr) {
117 delete clickRightListener_;
118 clickRightListener_ = nullptr;
119 }
120 if (clickUpListener_ != nullptr) {
121 delete clickUpListener_;
122 clickUpListener_ = nullptr;
123 }
124 if (clickDownListener_ != nullptr) {
125 delete clickDownListener_;
126 clickDownListener_ = nullptr;
127 }
128 if (clickSmallListener_ != nullptr) {
129 delete clickSmallListener_;
130 clickSmallListener_ = nullptr;
131 }
132 if (enableAnimationListener_ != nullptr) {
133 delete enableAnimationListener_;
134 enableAnimationListener_ = nullptr;
135 }
136 if (disableAnimationListener_ != nullptr) {
137 delete disableAnimationListener_;
138 disableAnimationListener_ = nullptr;
139 }
140 DeleteChildren(container_);
141 container_ = nullptr;
142 }
143
144 class TestBtnOnStateChangeListener : public OHOS::UICheckBox::OnChangeListener {
145 public:
TestBtnOnStateChangeListener(UILabel * uiLabel)146 explicit TestBtnOnStateChangeListener(UILabel* uiLabel) : uiLabel_(uiLabel) {}
147
~TestBtnOnStateChangeListener()148 ~TestBtnOnStateChangeListener() {}
149
OnChange(UICheckBox::UICheckBoxState state)150 bool OnChange(UICheckBox::UICheckBoxState state) override
151 {
152 if (state == UICheckBox::UICheckBoxState::SELECTED) {
153 uiLabel_->SetText("ON");
154 } else {
155 uiLabel_->SetText("OFF");
156 }
157 uiLabel_->Invalidate();
158 return true;
159 }
160
161 private:
162 UILabel* uiLabel_;
163 };
164
GetTestView()165 const UIView* UITestBUTTON::GetTestView()
166 {
167 UIKitCheckBoxTest001();
168 UIKitRadioButtonTest001();
169 UIKitToggleButtonTest001();
170 UIKitCheckBoxTest002();
171 UIKitRadioButtonTest002();
172 UIKitToggleButtonTest002();
173 UIKitButtonTest001();
174 return container_;
175 }
176
CreateButtonGroup(int16_t posX,int16_t posY,int16_t width,int16_t height,UICheckBox::OnChangeListener ** listener,const char * id,UIViewType type,const char * name)177 UIViewGroup* UITestBUTTON::CreateButtonGroup(int16_t posX,
178 int16_t posY,
179 int16_t width,
180 int16_t height,
181 UICheckBox::OnChangeListener** listener,
182 const char* id,
183 UIViewType type,
184 const char* name)
185 {
186 UIViewGroup* group = new UIViewGroup();
187 group->SetPosition(posX, posY, 300, 150); // 300: width, 150: height
188 UILabel* label = new UILabel();
189 group->Add(label);
190 label->SetPosition(10, 30, 80, 20); // 10: posX 30 posY 80 width 20 height
191 label->SetText("State: ");
192
193 UILabel* label1 = new UILabel();
194 group->Add(label1);
195 label1->SetPosition(70, 30, 40, 20); // 70: posX 30 posY 40 width 20 height
196 *listener = static_cast<UICheckBox::OnChangeListener*>(new TestBtnOnStateChangeListener(label1));
197
198 UICheckBox* checkBox = nullptr;
199 if (type == UIViewType::UI_TOGGLE_BUTTON) {
200 checkBox = static_cast<UICheckBox*>(new UIToggleButton());
201 } else if (type == UIViewType::UI_RADIO_BUTTON) {
202 checkBox = static_cast<UICheckBox*>(new UIRadioButton(name));
203 } else {
204 checkBox = new UICheckBox();
205 checkBox->SetImages("", "");
206 }
207 group->Add(checkBox);
208 checkBox->SetViewId(id);
209 checkBox->SetOnChangeListener(*listener);
210 checkBox->SetPosition(100, 0, width, height); // 100: posX 0: posY
211 if (checkBox->GetState() == UICheckBox::SELECTED) {
212 label1->SetText("ON");
213 } else {
214 label1->SetText("OFF");
215 }
216 return group;
217 }
218
UIKitCheckBoxTest001()219 void UITestBUTTON::UIKitCheckBoxTest001()
220 {
221 if (container_ != nullptr) {
222 UILabel* label = new UILabel();
223 container_->Add(label);
224 label->SetPosition(TEXT_DISTANCE_TO_LEFT_SIDE, 5, // 5: y-coordinate
225 Screen::GetInstance().GetWidth(), TITLE_LABEL_DEFAULT_HEIGHT);
226 label->SetText("checkbox功能");
227 label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
228 // 40: posX 35 posY 100 width 100 height
229 UIViewGroup* group = CreateButtonGroup(40, 35, 100, 100, &checkBoxChangeListener_, UI_TEST_CHECKBOX_1);
230 // 250: posX 35 posY 100 width 100 height
231 UIViewGroup* group1 = CreateButtonGroup(250, 35, 100, 100, &checkBoxChangeListener1_, UI_TEST_CHECKBOX_2);
232 // 500: posX 35 posY 100 width 100 height
233 UIViewGroup *group2 = CreateButtonGroup(500, 35, 100, 100, &checkBoxChangeListener2_, UI_TEST_CHECKBOX_3);
234 container_->Add(group);
235 container_->Add(group1);
236 container_->Add(group2);
237 }
238 }
239
UIKitRadioButtonTest001()240 void UITestBUTTON::UIKitRadioButtonTest001()
241 {
242 if (container_ != nullptr) {
243 UILabel* label = new UILabel();
244 container_->Add(label);
245 // 0:x-coordinate, 130:y-coordinate, 20:new height
246 label->SetPosition(TEXT_DISTANCE_TO_LEFT_SIDE, 130, Screen::GetInstance().GetWidth(),
247 TITLE_LABEL_DEFAULT_HEIGHT);
248 label->SetText("radiobutton功能");
249 label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
250 // 40: posX 160 posY 100 width 100 height
251 UIViewGroup* group = CreateButtonGroup(40, 160, 100, 100, &radioChangeListener_, UI_TEST_RADIO_BUTTON_1,
252 UIViewType::UI_RADIO_BUTTON, "bb");
253 // 250: posX 160 posY 100 width 100 height
254 UIViewGroup* group1 = CreateButtonGroup(250, 160, 100, 100, &radioChangeListener1_, UI_TEST_RADIO_BUTTON_2,
255 UIViewType::UI_RADIO_BUTTON, "bb");
256 // 500: posX 160 posY 100 width 100 height
257 UIViewGroup* group2 = CreateButtonGroup(500, 160, 100, 100, &radioChangeListener2_, UI_TEST_RADIO_BUTTON_3,
258 UIViewType::UI_RADIO_BUTTON, "bb");
259 container_->Add(group);
260 container_->Add(group1);
261 container_->Add(group2);
262 }
263 }
264
UIKitToggleButtonTest001()265 void UITestBUTTON::UIKitToggleButtonTest001()
266 {
267 if (container_ != nullptr) {
268 UILabel* label = new UILabel();
269 container_->Add(label);
270 // 0:x-coordinate, 270:y-coordinate, 20:new height
271 label->SetPosition(TEXT_DISTANCE_TO_LEFT_SIDE, 270, Screen::GetInstance().GetWidth(),
272 TITLE_LABEL_DEFAULT_HEIGHT);
273 label->SetText("togglebutton功能");
274 label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
275
276 // 40: posX 300 posY 100 width 100 height
277 UIViewGroup* group = CreateButtonGroup(40, 300, 100, 100, &toggleChangeListener_, UI_TEST_TOGGLE_BUTTON_1,
278 UIViewType::UI_TOGGLE_BUTTON);
279 // 250: posX 300 posY 100 width 100 height
280 UIViewGroup* group1 = CreateButtonGroup(250, 300, 100, 100, &toggleChangeListener1_, UI_TEST_TOGGLE_BUTTON_2,
281 UIViewType::UI_TOGGLE_BUTTON);
282 // 500: posX 300 posY 100 width 100 height
283 UIViewGroup* group2 = CreateButtonGroup(500, 300, 100, 100, &toggleChangeListener2_, UI_TEST_TOGGLE_BUTTON_3,
284 UIViewType::UI_TOGGLE_BUTTON);
285 container_->Add(group);
286 container_->Add(group1);
287 container_->Add(group2);
288 }
289 }
UIKitCheckBoxTest002() const290 void UITestBUTTON::UIKitCheckBoxTest002() const
291 {
292 if (container_ != nullptr) {
293 UILabel* label = new UILabel();
294 container_->Add(label);
295 // 0:x-coordinate, 400:y-coordinate, 20:new height
296 label->SetPosition(TEXT_DISTANCE_TO_LEFT_SIDE, 400, Screen::GetInstance().GetWidth(),
297 TITLE_LABEL_DEFAULT_HEIGHT);
298 label->SetText("checkbox SetImage功能");
299 label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
300
301 UICheckBox* checkbox = new UICheckBox();
302 checkbox->SetPosition(30, 430); // 30: x-coordinate, 430: y-coordinate
303 checkbox->SetWidth(130); // 130: width
304 checkbox->SetHeight(130); // 130: height
305 checkbox->SetViewId(UI_TEST_CHECKBOX_SETIMAGE_1);
306 checkbox->SetImages(BLUE_IMAGE_PATH, YELLOW_IMAGE_PATH);
307
308 UICheckBox* checkbox2 = new UICheckBox();
309 checkbox2->SetPosition(200, 430); // 200: x-coordinate, 430: y-coordinate
310 checkbox2->SetWidth(130); // 130: width
311 checkbox2->SetHeight(130); // 130: height
312 checkbox2->SetViewId(UI_TEST_CHECKBOX_SETIMAGE_2);
313 checkbox2->SetImages(GREEN_IMAGE_PATH, RED_IMAGE_PATH);
314
315 UICheckBox* checkbox3 = new UICheckBox();
316 checkbox3->SetPosition(350, 430); // 350: x-coordinate, 430: y-coordinate
317 checkbox3->SetViewId(UI_TEST_CHECKBOX_SETIMAGE_3);
318
319 UICheckBox* checkbox4 = new UICheckBox();
320 checkbox4->SetPosition(450, 430); // 450: x-coordinate, 430: y-coordinate
321 checkbox4->SetViewId(UI_TEST_CHECKBOX_SETIMAGE_4);
322
323 container_->Add(checkbox);
324 container_->Add(checkbox2);
325 container_->Add(checkbox3);
326 container_->Add(checkbox4);
327 }
328 }
329
UIKitRadioButtonTest002() const330 void UITestBUTTON::UIKitRadioButtonTest002() const
331 {
332 if (container_ != nullptr) {
333 UILabel* label = new UILabel();
334 container_->Add(label);
335 // 0:x-coordinate, 570:y-coordinate, 20:new height
336 label->SetPosition(TEXT_DISTANCE_TO_LEFT_SIDE, 570, Screen::GetInstance().GetWidth(),
337 TITLE_LABEL_DEFAULT_HEIGHT);
338 label->SetText("radiobutton SetImage功能");
339 label->SetViewId("radiobuttonLabel");
340 label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
341
342 UIRadioButton* radioButton = new UIRadioButton("aaa");
343 radioButton->SetPosition(30, 10); // 30: x-coordinate, 10: y-coordinate
344 radioButton->SetWidth(130); // 130: width
345 radioButton->SetHeight(130); // 130: height
346 radioButton->SetViewId(UI_TEST_RADIO_SETIMAGE_1);
347 radioButton->SetImages(BLUE_IMAGE_PATH, YELLOW_IMAGE_PATH);
348
349 UIRadioButton* radioButton2 = new UIRadioButton("aaa");
350 radioButton2->SetPosition(200, 10); // 200: x-coordinate, 10: y-coordinate
351 radioButton2->SetWidth(130); // 130: width
352 radioButton2->SetHeight(130); // 130: height
353 radioButton2->SetViewId(UI_TEST_RADIO_SETIMAGE_2);
354 radioButton2->SetImages(GREEN_IMAGE_PATH, RED_IMAGE_PATH);
355
356 OHOS::UIViewGroup* viewGroup = new UIViewGroup();
357 viewGroup->SetPosition(0, 600); // 0: x-coordinate, 600: y-coordinate
358 viewGroup->SetWidth(Screen::GetInstance().GetWidth()); // 2: half width
359 viewGroup->SetHeight(Screen::GetInstance().GetHeight() / 2); // 2: half height
360
361 viewGroup->Add(radioButton);
362 viewGroup->Add(radioButton2);
363 viewGroup->SetStyle(STYLE_BACKGROUND_OPA, 0);
364
365 container_->Add(viewGroup);
366 }
367 }
368
UIKitToggleButtonTest002()369 void UITestBUTTON::UIKitToggleButtonTest002()
370 {
371 if (container_ != nullptr) {
372 UILabel* label = new UILabel();
373 container_->Add(label);
374 // 0:x-coordinate, 740:y-coordinate, 20:new height
375 label->SetPosition(TEXT_DISTANCE_TO_LEFT_SIDE, 740, Screen::GetInstance().GetWidth(),
376 TITLE_LABEL_DEFAULT_HEIGHT);
377 label->SetText("togglebutton SetImage功能");
378 label->SetViewId("togglebuttonLabel");
379 label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
380
381 UIToggleButton* togglebutton = new UIToggleButton();
382 togglebutton->SetPosition(30, 770); // 30: x-coordinate, 770: y-coordinate
383 togglebutton->SetStyle(STYLE_BACKGROUND_OPA, 0); // 0: opacity
384 togglebutton->SetState(true);
385 togglebutton->SetWidth(130); // 130: width
386 togglebutton->SetHeight(130); // 130: height
387 togglebutton->SetViewId(UI_TEST_TOGGLE_SETIMAGE_1);
388 togglebutton->SetImages(BLUE_IMAGE_PATH, YELLOW_IMAGE_PATH);
389
390 UIToggleButton* togglebutton2 = new UIToggleButton();
391 togglebutton2->SetPosition(200, 770); // 200: x-coordinate, 770: y-coordinate
392 togglebutton2->SetStyle(STYLE_BACKGROUND_OPA, 0); // 0: opacity
393 togglebutton2->SetState(false);
394 togglebutton2->SetWidth(130); // 130: width
395 togglebutton2->SetHeight(130); // 130: height
396 togglebutton2->SetViewId(UI_TEST_TOGGLE_SETIMAGE_2);
397 togglebutton2->SetImages(GREEN_IMAGE_PATH, RED_IMAGE_PATH);
398
399 container_->Add(togglebutton);
400 container_->Add(togglebutton2);
401 }
402 }
403
404 class TestBtnOnClickShapeChangeListener : public UIView::OnClickListener {
405 public:
TestBtnOnClickShapeChangeListener(UIView * uiView,int16_t grid)406 TestBtnOnClickShapeChangeListener(UIView* uiView, int16_t grid) : uiView_(uiView), changeGrid_(grid) {}
407
~TestBtnOnClickShapeChangeListener()408 ~TestBtnOnClickShapeChangeListener() {}
409
OnClick(UIView & view,const ClickEvent & event)410 bool OnClick(UIView& view, const ClickEvent& event) override
411 {
412 int16_t width = uiView_->GetWidth() + changeGrid_;
413 int16_t height = uiView_->GetHeight() + changeGrid_;
414 if (changeGrid_ < 0) {
415 uiView_->Invalidate();
416 }
417 uiView_->Resize(width, height);
418 uiView_->Invalidate();
419 return true;
420 }
421
422 private:
423 UIView* uiView_;
424 int16_t changeGrid_;
425 };
426
427 class TestBtnOnClickPositionChangeListener : public OHOS::UIView::OnClickListener {
428 public:
429 enum class MoveType {
430 MOVE_LEFT,
431 MOVE_RIGHT,
432 MOVE_TOP,
433 MOVE_BOTTOM,
434 };
TestBtnOnClickPositionChangeListener(UIView * uiView,MoveType moveType,uint16_t grid)435 TestBtnOnClickPositionChangeListener(UIView* uiView, MoveType moveType, uint16_t grid)
436 : uiView_(uiView), moveType_(moveType), grid_(grid)
437 {
438 }
439
~TestBtnOnClickPositionChangeListener()440 ~TestBtnOnClickPositionChangeListener() {}
441
OnClick(UIView & view,const ClickEvent & event)442 bool OnClick(UIView& view, const ClickEvent& event) override
443 {
444 int16_t xPos = uiView_->GetX();
445 int16_t yPos = uiView_->GetY();
446 uiView_->Invalidate();
447 if (moveType_ == MoveType::MOVE_LEFT) {
448 xPos = xPos - grid_;
449 } else if (moveType_ == MoveType::MOVE_RIGHT) {
450 xPos = xPos + grid_;
451 } else if (moveType_ == MoveType::MOVE_TOP) {
452 yPos = yPos - grid_;
453 } else if (moveType_ == MoveType::MOVE_BOTTOM) {
454 yPos = yPos + grid_;
455 }
456 uiView_->SetX(xPos);
457 uiView_->SetY(yPos);
458 uiView_->Invalidate();
459 return true;
460 }
461
462 private:
463 UIView* uiView_;
464 MoveType moveType_;
465 uint16_t grid_;
466 };
467
468 class TestBtnOnClickVisableListener : public OHOS::UIView::OnClickListener {
469 public:
TestBtnOnClickVisableListener(UIView * uiView,bool visible)470 TestBtnOnClickVisableListener(UIView* uiView, bool visible) : uiView_(uiView), visible_(visible) {}
471
~TestBtnOnClickVisableListener()472 ~TestBtnOnClickVisableListener() {}
473
OnClick(UIView & view,const ClickEvent & event)474 bool OnClick(UIView& view, const ClickEvent& event) override
475 {
476 uiView_->SetVisible(visible_);
477 uiView_->Invalidate();
478 return true;
479 }
480
481 private:
482 UIView* uiView_;
483 bool visible_;
484 };
485
486 class TestBtnOnClickTouchableListener : public UIView::OnClickListener {
487 public:
TestBtnOnClickTouchableListener(UIView * uiView,bool touchable)488 TestBtnOnClickTouchableListener(UIView* uiView, bool touchable) : uiView_(uiView), touchable_(touchable) {}
489
~TestBtnOnClickTouchableListener()490 ~TestBtnOnClickTouchableListener() {}
491
OnClick(UIView & view,const ClickEvent & event)492 bool OnClick(UIView& view, const ClickEvent& event) override
493 {
494 uiView_->SetTouchable(touchable_);
495 uiView_->Invalidate();
496 return true;
497 }
498
499 private:
500 UIView* uiView_;
501 bool touchable_;
502 };
503
504 class TestBtnOnClickChangeColorListener : public OHOS::UIView::OnClickListener {
505 public:
TestBtnOnClickChangeColorListener(UIView * uiView,uint16_t red,uint16_t green,uint16_t blue)506 TestBtnOnClickChangeColorListener(UIView* uiView, uint16_t red, uint16_t green, uint16_t blue)
507 : uiView_(uiView), red_(red), green_(green), blue_(blue)
508 {
509 }
510
~TestBtnOnClickChangeColorListener()511 ~TestBtnOnClickChangeColorListener() {}
512
OnClick(UIView & view,const ClickEvent & event)513 bool OnClick(UIView& view, const ClickEvent& event) override
514 {
515 ColorType color;
516 color.full = uiView_->GetStyle(STYLE_BACKGROUND_COLOR);
517 color.red = red_;
518 color.green = green_;
519 color.blue = blue_;
520 uiView_->SetStyle(STYLE_BACKGROUND_COLOR, color.full);
521 uiView_->Invalidate();
522 return true;
523 }
524
525 private:
526 UIView* uiView_;
527 uint16_t red_;
528 uint16_t green_;
529 uint16_t blue_;
530 };
531
532 class TestBtnOnClickRevertColorListener : public UIView::OnClickListener {
533 public:
TestBtnOnClickRevertColorListener(UIView * uiView)534 explicit TestBtnOnClickRevertColorListener(UIView* uiView) : uiView_(uiView), originColor_(0)
535 {
536 if (uiView != nullptr) {
537 originColor_ = uiView->GetStyle(STYLE_BACKGROUND_COLOR);
538 }
539 }
540
~TestBtnOnClickRevertColorListener()541 ~TestBtnOnClickRevertColorListener() {}
542
OnClick(UIView & view,const ClickEvent & event)543 bool OnClick(UIView& view, const ClickEvent& event) override
544 {
545 uiView_->SetStyle(STYLE_BACKGROUND_COLOR, originColor_);
546 uiView_->Invalidate();
547 return true;
548 }
549
550 private:
551 UIView* uiView_;
552 uint32_t originColor_;
553 };
554
555 class TestBtnOnClickRevertToOriginStateListener : public UIView::OnClickListener {
556 public:
TestBtnOnClickRevertToOriginStateListener(UIView * uiView)557 explicit TestBtnOnClickRevertToOriginStateListener(UIView* uiView)
558 : uiView_(uiView), originColor_(0), width_(0), height_(0), visible_(false), touchable_(false)
559 {
560 if (uiView != nullptr) {
561 originColor_ = uiView->GetStyle(STYLE_BACKGROUND_COLOR);
562 width_ = uiView->GetWidth();
563 height_ = uiView->GetHeight();
564 visible_ = uiView->IsVisible();
565 touchable_ = uiView->IsTouchable();
566 }
567 }
568
~TestBtnOnClickRevertToOriginStateListener()569 ~TestBtnOnClickRevertToOriginStateListener() {}
570
OnClick(UIView & view,const ClickEvent & event)571 bool OnClick(UIView& view, const ClickEvent& event) override
572 {
573 uiView_->Invalidate();
574 uiView_->SetStyle(STYLE_BACKGROUND_COLOR, originColor_);
575 uiView_->SetWidth(width_);
576 uiView_->SetHeight(height_);
577 uiView_->SetVisible(visible_);
578 uiView_->SetTouchable(touchable_);
579 (reinterpret_cast<UIButton*>(uiView_))->Invalidate();
580 return true;
581 }
582
583 private:
584 UIView* uiView_;
585 uint32_t originColor_;
586 uint32_t width_;
587 uint32_t height_;
588 bool visible_;
589 bool touchable_;
590 };
591
592 #if defined(DEFAULT_ANIMATION) && DEFAULT_ANIMATION
593 class TestBtnAnimationListener : public UIView::OnClickListener {
594 public:
TestBtnAnimationListener(UIView * uiView,bool enableAnimation)595 TestBtnAnimationListener(UIView* uiView, bool enableAnimation) : uiView_(uiView), enableAnimation_(enableAnimation)
596 {
597 }
598
~TestBtnAnimationListener()599 ~TestBtnAnimationListener() {}
600
OnClick(UIView & view,const ClickEvent & event)601 bool OnClick(UIView& view, const ClickEvent& event) override
602 {
603 static_cast<UIButton*>(uiView_)->EnableButtonAnimation(enableAnimation_);
604 return true;
605 }
606
607 private:
608 UIView* uiView_;
609 bool enableAnimation_;
610 };
611 #endif
612
GetTestUILabel(const char * titlename)613 UILabel* GetTestUILabel(const char* titlename)
614 {
615 if (titlename == nullptr) {
616 return nullptr;
617 }
618
619 UILabel* label = new UILabel();
620 // 900:y-coordinate
621 label->SetPosition(TEXT_DISTANCE_TO_LEFT_SIDE, 900, Screen::GetInstance().GetWidth(), TITLE_LABEL_DEFAULT_HEIGHT);
622 label->SetText(titlename);
623 label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
624 return label;
625 }
626
GetTestUIButton(const char * buttonText,int16_t x,int16_t y,UIButton * button,const char * id)627 UILabelButton* GetTestUIButton(const char* buttonText, int16_t x, int16_t y, UIButton* button, const char* id)
628 {
629 if (buttonText == nullptr) {
630 return nullptr;
631 }
632
633 UILabelButton* labelButton = new UILabelButton();
634 // 150: x-coordinate, 440: y-coordinate
635 labelButton->SetPosition(x, y);
636 labelButton->Resize(BUTTON_WIDHT1, BUTTON_HEIGHT1);
637 labelButton->SetText(buttonText);
638 labelButton->SetViewId(id);
639 labelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
640 labelButton->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED);
641 labelButton->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::INACTIVE);
642 labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::RELEASED);
643 labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::PRESSED);
644 labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::INACTIVE);
645 return labelButton;
646 }
647
UIKitButtonTest002(UIScrollView * container,UIButton * button)648 void UITestBUTTON::UIKitButtonTest002(UIScrollView* container, UIButton* button)
649 {
650 if ((container == nullptr) || (button == nullptr)) {
651 return;
652 }
653 UILabelButton* button8 =
654 GetTestUIButton("隐藏", 430, 940, button, UI_TEST_BUTTON_7); // 430: x-coordinate, 940: y-coordinate
655 if (clickEnableVisiableListener_ == nullptr) {
656 clickEnableVisiableListener_ =
657 static_cast<UIView::OnClickListener*>(
658 new TestBtnOnClickVisableListener(reinterpret_cast<UIView*>(button), false));
659 }
660 button8->SetOnClickListener(clickEnableVisiableListener_);
661
662 UILabelButton* button9 =
663 GetTestUIButton("显示", 430, 990, button, UI_TEST_BUTTON_8); // 430: x-coordinate, 990: y-coordinate
664 if (clickDisableVisiableListener_ == nullptr) {
665 clickDisableVisiableListener_ =
666 static_cast<UIView::OnClickListener*>(
667 new TestBtnOnClickVisableListener(reinterpret_cast<UIView*>(button), true));
668 }
669 button9->SetOnClickListener(clickDisableVisiableListener_);
670
671 UILabelButton* button10 =
672 GetTestUIButton("可触摸 ", 520, 940, button, UI_TEST_BUTTON_9); // 520: x-coordinate, 940: y-coordinate
673 if (clickEnableTouchableListener_ == nullptr) {
674 clickEnableTouchableListener_ =
675 static_cast<UIView::OnClickListener*>(
676 new TestBtnOnClickTouchableListener(reinterpret_cast<UIView*>(button), true));
677 }
678 button10->SetOnClickListener(clickEnableTouchableListener_);
679
680 UILabelButton* button11 =
681 GetTestUIButton("不可触摸", 520, 990, button, UI_TEST_BUTTON_10); // 520: x-coordinate, 990: y-coordinate
682 if (clickDisableTouchableListener_ == nullptr) {
683 clickDisableTouchableListener_ =
684 static_cast<UIView::OnClickListener*>(
685 new TestBtnOnClickTouchableListener(reinterpret_cast<UIView*>(button), false));
686 }
687 button11->SetOnClickListener(clickDisableTouchableListener_);
688
689 UILabelButton* button12 =
690 GetTestUIButton("变白", 160, 1040, button, UI_TEST_BUTTON_11); // 160: x-coordinate, 1040: y-coordinate
691 if (clickColorToWhiteListener_ == nullptr) {
692 clickColorToWhiteListener_ = static_cast<UIView::OnClickListener*>(
693 new TestBtnOnClickChangeColorListener(reinterpret_cast<UIView*>(button), 0xFF, 0xFF, 0xFF));
694 }
695 button12->SetOnClickListener(clickColorToWhiteListener_);
696
697 UILabelButton* button13 =
698 GetTestUIButton("变红", 160, 1090, button, UI_TEST_BUTTON_12); // 160: x-coordinate, 1090: y-coordinate
699 if (clickColorToRedListener_ == nullptr) {
700 clickColorToRedListener_ =
701 static_cast<UIView::OnClickListener*>(
702 new TestBtnOnClickChangeColorListener(reinterpret_cast<UIView*>(button), 0xFF, 0, 0));
703 }
704 button13->SetOnClickListener(clickColorToRedListener_);
705
706 UILabelButton* button14 =
707 GetTestUIButton("色彩还原", 250, 1040, button, UI_TEST_BUTTON_13); // 250: x-coordinate, 1040: y-coordinate
708 if (clickRevetColorListener_ == nullptr) {
709 clickRevetColorListener_ =
710 static_cast<UIView::OnClickListener*>(
711 new TestBtnOnClickRevertColorListener(reinterpret_cast<UIView*>(button)));
712 }
713 button14->SetOnClickListener(clickRevetColorListener_);
714
715 UILabelButton* button15 =
716 GetTestUIButton("全部还原", 250, 1090, button, UI_TEST_BUTTON_14); // 250: x-coordinate, 1090: y-coordinate
717 if (clickRevetToOriginListener_ == nullptr) {
718 clickRevetToOriginListener_ =
719 static_cast<UIView::OnClickListener*>(
720 new TestBtnOnClickRevertToOriginStateListener(reinterpret_cast<UIView*>(button)));
721 }
722 button15->SetOnClickListener(clickRevetToOriginListener_);
723
724 container->Add(button8);
725 container->Add(button9);
726 container->Add(button10);
727 container->Add(button11);
728 container->Add(button12);
729 container->Add(button13);
730 container->Add(button14);
731 container->Add(button15);
732
733 #if defined(DEFAULT_ANIMATION) && DEFAULT_ANIMATION
734 // 340: x-coordinate, 1040: y-coordinate
735 UILabelButton* button16 = GetTestUIButton("开启动效", 340, 1040, button, UI_TEST_BUTTON_15);
736 if (enableAnimationListener_ == nullptr) {
737 enableAnimationListener_ =
738 static_cast<UIView::OnClickListener*>(
739 new TestBtnAnimationListener(reinterpret_cast<UIView*>(button), true));
740 }
741 button16->SetOnClickListener(enableAnimationListener_);
742
743 // 340: x-coordinate, 1090: y-coordinate
744 UILabelButton* button17 = GetTestUIButton("关闭动效", 340, 1090, button, UI_TEST_BUTTON_16);
745 if (disableAnimationListener_ == nullptr) {
746 disableAnimationListener_ = static_cast<UIView::OnClickListener*>(
747 new TestBtnAnimationListener(reinterpret_cast<UIView*>(button), false));
748 }
749 button17->EnableButtonAnimation(false);
750 button17->SetOnClickListener(disableAnimationListener_);
751
752 container->Add(button16);
753 container->Add(button17);
754 #endif
755 }
756
UIKitButtonTest001()757 void UITestBUTTON::UIKitButtonTest001()
758 {
759 if (container_ != nullptr) {
760 UILabel* label = GetTestUILabel("普通button功能效果");
761 container_->Add(label);
762
763 UIButton* button = new UIButton();
764 button->SetPosition(10, 935); // 10: x-coordinate, 935: y-coordinate
765 button->SetWidth(80); // 80: width
766 button->SetHeight(60); // 60: height
767 button->SetImageSrc(BLUE_IMAGE_PATH, YELLOW_IMAGE_PATH);
768 button->SetViewId(UI_TEST_BUTTON_17);
769
770 UILabelButton* button2 =
771 GetTestUIButton("放大", 160, 940, button, UI_TEST_BUTTON_1); // 160: x-coordinate, 940: y-coordinate
772 if (clickBigListener_ == nullptr) {
773 clickBigListener_ =
774 static_cast<UIView::OnClickListener*>(new TestBtnOnClickShapeChangeListener(button, CHANGE_SIZE));
775 }
776 button2->SetOnClickListener(clickBigListener_);
777
778 UILabelButton* button3 =
779 GetTestUIButton("缩小", 160, 990, button, UI_TEST_BUTTON_2); // 160: x-coordinate, 990: y-coordinate
780 if (clickSmallListener_ == nullptr) {
781 clickSmallListener_ =
782 static_cast<UIView::OnClickListener*>(new TestBtnOnClickShapeChangeListener(button, -CHANGE_SIZE));
783 }
784 button3->SetOnClickListener(clickSmallListener_);
785
786 UILabelButton* button4 =
787 GetTestUIButton("左移", 250, 940, button, UI_TEST_BUTTON_3); // 250: x-coordinate, 940: y-coordinate
788 if (clickLeftListener_ == nullptr) {
789 clickLeftListener_ = static_cast<UIView::OnClickListener*>(new TestBtnOnClickPositionChangeListener(
790 reinterpret_cast<UIView*>(button),
791 TestBtnOnClickPositionChangeListener::MoveType::MOVE_LEFT, CHANGE_SIZE));
792 }
793 button4->SetOnClickListener(clickLeftListener_);
794
795 UILabelButton* button5 =
796 GetTestUIButton("右移", 250, 990, button, UI_TEST_BUTTON_4); // 250: x-coordinate, 990: y-coordinate
797 button5->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
798 if (clickRightListener_ == nullptr) {
799 clickRightListener_ = static_cast<UIView::OnClickListener*>(new TestBtnOnClickPositionChangeListener(
800 reinterpret_cast<UIView*>(button),
801 TestBtnOnClickPositionChangeListener::MoveType::MOVE_RIGHT, CHANGE_SIZE));
802 }
803 button5->SetOnClickListener(clickRightListener_);
804
805 UILabelButton* button6 =
806 GetTestUIButton("上移", 340, 940, button, UI_TEST_BUTTON_5); // 340: x-coordinate, 940: y-coordinate
807 button6->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
808 if (clickUpListener_ == nullptr) {
809 clickUpListener_ = static_cast<UIView::OnClickListener*>(new TestBtnOnClickPositionChangeListener(
810 reinterpret_cast<UIView*>(button),
811 TestBtnOnClickPositionChangeListener::MoveType::MOVE_TOP, CHANGE_SIZE));
812 }
813 button6->SetOnClickListener(clickUpListener_);
814
815 UILabelButton* button7 =
816 GetTestUIButton("下移", 340, 990, button, UI_TEST_BUTTON_6); // 340: x-coordinate, 990: y-coordinate
817 if (clickDownListener_ == nullptr) {
818 clickDownListener_ = static_cast<UIView::OnClickListener*>(new TestBtnOnClickPositionChangeListener(
819 reinterpret_cast<UIView*>(button),
820 TestBtnOnClickPositionChangeListener::MoveType::MOVE_BOTTOM, CHANGE_SIZE));
821 }
822 button7->SetOnClickListener(clickDownListener_);
823
824 container_->Add(button);
825 container_->Add(button2);
826 container_->Add(button3);
827 container_->Add(button4);
828 container_->Add(button5);
829 container_->Add(button6);
830 container_->Add(button7);
831
832 UIKitButtonTest002(container_, button);
833 }
834 }
835 } // namespace OHOS
836