From e33504590c09fe3830d70b8cc8bf191ab9a52b48 Mon Sep 17 00:00:00 2001 From: Zhang Jinyu Date: Fri, 15 Nov 2024 11:34:05 +0800 Subject: [PATCH] feat: button,calendarpicker,slider,stack,xcomponent,progress,scroll Signed-off-by: Zhang Jinyu --- function/ui_compare/capidemo/.gitignore | 11 + .../ui_compare/capidemo/AppScope/app.json5 | 10 + .../resources/base/element/string.json | 8 + .../resources/base/media/app_icon.png | Bin 0 -> 6790 bytes function/ui_compare/capidemo/README.md | 3 + .../ui_compare/capidemo/code-linter.json5 | 35 ++ function/ui_compare/capidemo/entry/.gitignore | 6 + .../capidemo/entry/build-profile.json5 | 20 + .../ui_compare/capidemo/entry/hvigorfile.ts | 2 + .../capidemo/entry/oh-package-lock.json5 | 33 ++ .../capidemo/entry/oh-package.json5 | 12 + .../entry/src/main/cpp/CMakeLists.txt | 99 +++++ .../src/main/cpp/button/button_type_test.cpp | 166 +++++++ .../src/main/cpp/button/button_type_test.h | 35 ++ .../calendarpicker_hint_radius_test.cpp | 415 ++++++++++++++++++ .../calendarpicker_hint_radius_test.h | 40 ++ .../entry/src/main/cpp/common/common.h | 96 ++++ .../main/cpp/component/button_component.cpp | 24 + .../src/main/cpp/component/button_component.h | 31 ++ .../src/main/cpp/component/column_component.h | 44 ++ .../src/main/cpp/component/component.cpp | 364 +++++++++++++++ .../entry/src/main/cpp/component/component.h | 166 +++++++ .../main/cpp/component/flowitem_component.h | 31 ++ .../src/main/cpp/component/grid_component.cpp | 58 +++ .../src/main/cpp/component/grid_component.h | 73 +++ .../main/cpp/component/image_component.cpp | 37 ++ .../src/main/cpp/component/image_component.h | 35 ++ .../cpp/component/imageanimator_component.cpp | 63 +++ .../cpp/component/imageanimator_component.h | 35 ++ .../cpp/component/imagespan_component.cpp | 29 ++ .../main/cpp/component/imagespan_component.h | 34 ++ .../src/main/cpp/component/list_component.cpp | 260 +++++++++++ .../src/main/cpp/component/list_component.h | 213 +++++++++ .../src/main/cpp/component/node_adapter.h | 310 +++++++++++++ .../main/cpp/component/radio_component.cpp | 46 ++ .../src/main/cpp/component/radio_component.h | 36 ++ .../main/cpp/component/refresh_component.cpp | 45 ++ .../main/cpp/component/refresh_component.h | 34 ++ .../component/relativecontainer_component.h | 64 +++ .../src/main/cpp/component/row_component.h | 41 ++ .../main/cpp/component/scroll_component.cpp | 150 +++++++ .../src/main/cpp/component/scroll_component.h | 57 +++ .../main/cpp/component/swiper_component.cpp | 175 ++++++++ .../src/main/cpp/component/swiper_component.h | 57 +++ .../src/main/cpp/component/text_component.cpp | 42 ++ .../src/main/cpp/component/text_component.h | 34 ++ .../cpp/component/waterflow_component.cpp | 296 +++++++++++++ .../main/cpp/component/waterflow_component.h | 151 +++++++ .../src/main/cpp/manager/plugin_manager.cpp | 149 +++++++ .../src/main/cpp/manager/plugin_manager.h | 46 ++ .../capidemo/entry/src/main/cpp/napi_init.cpp | 94 ++++ .../main/cpp/progress/progress_total_test.cpp | 92 ++++ .../main/cpp/progress/progress_total_test.h | 34 ++ .../main/cpp/progress/progress_type_test.cpp | 79 ++++ .../main/cpp/progress/progress_type_test.h | 34 ++ .../cpp/scroll/scroll_enablepaging_test.cpp | 103 +++++ .../cpp/scroll/scroll_enablepaging_test.h | 35 ++ .../cpp/scroll/scroll_scrollbarwidth_test.cpp | 88 ++++ .../cpp/scroll/scroll_scrollbarwidth_test.h | 35 ++ .../main/cpp/scroll/scroll_scrollby_test.cpp | 86 ++++ .../main/cpp/scroll/scroll_scrollby_test.h | 35 ++ .../slider/slider_track_thickness_test.cpp | 280 ++++++++++++ .../cpp/slider/slider_track_thickness_test.h | 38 ++ .../cpp/stack/stack_align_content_test.cpp | 227 ++++++++++ .../main/cpp/stack/stack_align_content_test.h | 35 ++ .../main/cpp/types/libnativerender/index.d.ts | 50 +++ .../types/libnativerender/oh-package.json5 | 6 + .../cpp/xcomponent/xcomponent_id_test.cpp | 137 ++++++ .../main/cpp/xcomponent/xcomponent_id_test.h | 34 ++ .../main/ets/entryability/EntryAbility.ets | 56 +++ .../src/main/ets/entryability/EntryAbility.ts | 56 +++ .../entrybackupability/EntryBackupAbility.ets | 27 ++ .../entry/src/main/ets/pages/Index.ets | 45 ++ .../capidemo/entry/src/main/module.json5 | 45 ++ .../main/resources/base/element/color.json | 8 + .../main/resources/base/element/string.json | 16 + .../main/resources/base/media/background.png | Bin 0 -> 57364 bytes .../resources/base/media/background_blue.png | Bin 0 -> 57364 bytes .../resources/base/media/background_green.png | Bin 0 -> 932 bytes .../resources/base/media/background_red.png | Bin 0 -> 933 bytes .../base/media/background_yellow.png | Bin 0 -> 1073 bytes .../main/resources/base/media/foreground.png | Bin 0 -> 12430 bytes .../src/main/resources/base/media/icon.png | Bin 0 -> 6790 bytes .../main/resources/base/media/icon_small.png | Bin 0 -> 1385 bytes .../resources/base/media/layered_image.json | 7 + .../src/main/resources/base/media/src.jpg | Bin 0 -> 9329 bytes .../main/resources/base/media/startIcon.png | Bin 0 -> 20093 bytes .../resources/base/profile/backup_config.json | 3 + .../resources/base/profile/main_pages.json | 5 + .../main/resources/en_US/element/string.json | 16 + .../main/resources/zh_CN/element/string.json | 16 + .../ohosTest/ets/Application/AbilityStage.ts | 24 + .../ohosTest/ets/MainAbility/MainAbility.ts | 62 +++ .../ets/MainAbility/componet/CommonView.ets | 40 ++ .../ets/MainAbility/pages/DemoIndex.ets | 45 ++ .../pages/button/ButtonTypeTest.ets | 33 ++ .../CalendarPickerHintRadiusPage1Test.ets | 33 ++ .../CalendarPickerHintRadiusPage2Test.ets | 33 ++ .../CalendarPickerHintRadiusPage3Test.ets | 33 ++ .../CalendarPickerHintRadiusPage4Test.ets | 33 ++ .../CalendarPickerHintRadiusPage5Test.ets | 33 ++ .../CalendarPickerHintRadiusPage6Test.ets | 33 ++ .../CalendarPickerHintRadiusPage7Test.ets | 33 ++ .../CalendarPickerHintRadiusPage8Test.ets | 33 ++ .../pages/progress/ProgressTypeTest.ets | 33 ++ .../progress/ProgressValueAndTotalTest.ets | 33 ++ .../pages/scroll/ScrollEnablePagingTest.ets | 33 ++ .../pages/scroll/ScrollScrollBarWidthTest.ets | 33 ++ .../pages/scroll/ScrollScrollByTest.ets | 33 ++ .../slider/SliderTrackThicknessPage1Test.ets | 33 ++ .../slider/SliderTrackThicknessPage2Test.ets | 33 ++ .../pages/stack/StackAlignContentTest.ets | 33 ++ .../pages/xcomponent/XComponentIdTest.ets | 33 ++ .../entry/src/ohosTest/ets/test/List.test.ets | 38 ++ .../ets/test/button/ButtonTypeTest.test.ets | 38 ++ .../CalendarPickerHintRadiusTest.test.ets | 91 ++++ .../ohosTest/ets/test/common/Interfaces.d.ts | 19 + .../src/ohosTest/ets/test/common/Settings.ts | 134 ++++++ .../src/ohosTest/ets/test/common/Snap.ts | 169 +++++++ .../src/ohosTest/ets/test/common/Utils.ets | 278 ++++++++++++ .../test/progress/ProgressTypeTest.test.ets | 34 ++ .../ProgressValueAndTotalTest.test.ets | 33 ++ .../scroll/ScrollEnablePagingTest.test.ets | 34 ++ .../scroll/ScrollScrollBarWidthTest.test.ets | 34 ++ .../test/scroll/ScrollScrollByTest.test.ets | 34 ++ .../slider/SliderTrackThicknessTest.test.ets | 43 ++ .../test/stack/StackAlignContentTest.test.ets | 39 ++ .../test/xcomponent/XComponentIdTest.test.ets | 39 ++ .../ets/testrunner/OpenHarmonyTestRunner.ts | 78 ++++ .../capidemo/entry/src/ohosTest/module.json5 | 47 ++ .../resources/base/element/color.json | 8 + .../resources/base/element/float.json | 24 + .../resources/base/element/string.json | 16 + .../resources/base/media/background.png | Bin 0 -> 312971 bytes .../ohosTest/resources/base/media/icon.png | Bin 0 -> 6790 bytes .../resources/base/media/icon_transparent.png | Bin 0 -> 5305 bytes .../resources/base/media/rectIcon.png | Bin 0 -> 4642 bytes .../src/ohosTest/resources/base/media/src.jpg | Bin 0 -> 9329 bytes .../resources/base/profile/main_pages.json | 24 + .../capidemo/hvigor/hvigor-config.json5 | 5 + function/ui_compare/capidemo/hvigorfile.ts | 6 + function/ui_compare/capidemo/log.txt | Bin 0 -> 1658272 bytes .../ui_compare/capidemo/oh-package-lock.json5 | 42 ++ function/ui_compare/capidemo/oh-package.json5 | 25 ++ 144 files changed, 8140 insertions(+) create mode 100644 function/ui_compare/capidemo/.gitignore create mode 100644 function/ui_compare/capidemo/AppScope/app.json5 create mode 100644 function/ui_compare/capidemo/AppScope/resources/base/element/string.json create mode 100644 function/ui_compare/capidemo/AppScope/resources/base/media/app_icon.png create mode 100644 function/ui_compare/capidemo/README.md create mode 100644 function/ui_compare/capidemo/code-linter.json5 create mode 100644 function/ui_compare/capidemo/entry/.gitignore create mode 100644 function/ui_compare/capidemo/entry/build-profile.json5 create mode 100644 function/ui_compare/capidemo/entry/hvigorfile.ts create mode 100644 function/ui_compare/capidemo/entry/oh-package-lock.json5 create mode 100644 function/ui_compare/capidemo/entry/oh-package.json5 create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/CMakeLists.txt create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/button/button_type_test.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/button/button_type_test.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/calendarpicker/calendarpicker_hint_radius_test.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/calendarpicker/calendarpicker_hint_radius_test.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/common/common.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/button_component.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/button_component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/column_component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/component.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/flowitem_component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/grid_component.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/grid_component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/image_component.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/image_component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/imageanimator_component.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/imageanimator_component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/imagespan_component.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/imagespan_component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/list_component.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/list_component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/node_adapter.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/radio_component.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/radio_component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/refresh_component.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/refresh_component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/relativecontainer_component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/row_component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/scroll_component.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/scroll_component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/swiper_component.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/swiper_component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/text_component.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/text_component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/waterflow_component.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/component/waterflow_component.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/manager/plugin_manager.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/manager/plugin_manager.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/napi_init.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/progress/progress_total_test.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/progress/progress_total_test.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/progress/progress_type_test.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/progress/progress_type_test.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_enablepaging_test.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_enablepaging_test.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_scrollbarwidth_test.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_scrollbarwidth_test.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_scrollby_test.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_scrollby_test.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/slider/slider_track_thickness_test.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/slider/slider_track_thickness_test.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/stack/stack_align_content_test.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/stack/stack_align_content_test.h create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/types/libnativerender/index.d.ts create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/types/libnativerender/oh-package.json5 create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/xcomponent/xcomponent_id_test.cpp create mode 100644 function/ui_compare/capidemo/entry/src/main/cpp/xcomponent/xcomponent_id_test.h create mode 100644 function/ui_compare/capidemo/entry/src/main/ets/entryability/EntryAbility.ets create mode 100644 function/ui_compare/capidemo/entry/src/main/ets/entryability/EntryAbility.ts create mode 100644 function/ui_compare/capidemo/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets create mode 100644 function/ui_compare/capidemo/entry/src/main/ets/pages/Index.ets create mode 100644 function/ui_compare/capidemo/entry/src/main/module.json5 create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/base/element/color.json create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/base/element/string.json create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/base/media/background.png create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/base/media/background_blue.png create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/base/media/background_green.png create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/base/media/background_red.png create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/base/media/background_yellow.png create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/base/media/foreground.png create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/base/media/icon.png create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/base/media/icon_small.png create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/base/media/layered_image.json create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/base/media/src.jpg create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/base/media/startIcon.png create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/base/profile/backup_config.json create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/base/profile/main_pages.json create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/en_US/element/string.json create mode 100644 function/ui_compare/capidemo/entry/src/main/resources/zh_CN/element/string.json create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/Application/AbilityStage.ts create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/MainAbility.ts create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/componet/CommonView.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/DemoIndex.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/button/ButtonTypeTest.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage1Test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage2Test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage3Test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage4Test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage5Test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage6Test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage7Test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage8Test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/progress/ProgressTypeTest.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/progress/ProgressValueAndTotalTest.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/scroll/ScrollEnablePagingTest.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/scroll/ScrollScrollBarWidthTest.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/scroll/ScrollScrollByTest.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/slider/SliderTrackThicknessPage1Test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/slider/SliderTrackThicknessPage2Test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/stack/StackAlignContentTest.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/xcomponent/XComponentIdTest.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/test/List.test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/test/button/ButtonTypeTest.test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/test/calendarpicker/CalendarPickerHintRadiusTest.test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/test/common/Interfaces.d.ts create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/test/common/Settings.ts create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/test/common/Snap.ts create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/test/common/Utils.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/test/progress/ProgressTypeTest.test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/test/progress/ProgressValueAndTotalTest.test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/test/scroll/ScrollEnablePagingTest.test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/test/scroll/ScrollScrollBarWidthTest.test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/test/scroll/ScrollScrollByTest.test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/test/slider/SliderTrackThicknessTest.test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/test/stack/StackAlignContentTest.test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/test/xcomponent/XComponentIdTest.test.ets create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/module.json5 create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/resources/base/element/color.json create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/resources/base/element/float.json create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/resources/base/element/string.json create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/resources/base/media/background.png create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/resources/base/media/icon.png create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/resources/base/media/icon_transparent.png create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/resources/base/media/rectIcon.png create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/resources/base/media/src.jpg create mode 100644 function/ui_compare/capidemo/entry/src/ohosTest/resources/base/profile/main_pages.json create mode 100644 function/ui_compare/capidemo/hvigor/hvigor-config.json5 create mode 100644 function/ui_compare/capidemo/hvigorfile.ts create mode 100644 function/ui_compare/capidemo/log.txt create mode 100644 function/ui_compare/capidemo/oh-package-lock.json5 create mode 100644 function/ui_compare/capidemo/oh-package.json5 diff --git a/function/ui_compare/capidemo/.gitignore b/function/ui_compare/capidemo/.gitignore new file mode 100644 index 00000000..fbabf771 --- /dev/null +++ b/function/ui_compare/capidemo/.gitignore @@ -0,0 +1,11 @@ +/node_modules +/oh_modules +/local.properties +/.idea +**/build +/.hvigor +.cxx +/.clangd +/.clang-format +/.clang-tidy +**/.test \ No newline at end of file diff --git a/function/ui_compare/capidemo/AppScope/app.json5 b/function/ui_compare/capidemo/AppScope/app.json5 new file mode 100644 index 00000000..5ff6b7ca --- /dev/null +++ b/function/ui_compare/capidemo/AppScope/app.json5 @@ -0,0 +1,10 @@ +{ + "app": { + "bundleName": "com.openharmony.arkui_capi_demo", + "vendor": "example", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name" + } +} diff --git a/function/ui_compare/capidemo/AppScope/resources/base/element/string.json b/function/ui_compare/capidemo/AppScope/resources/base/element/string.json new file mode 100644 index 00000000..0053930d --- /dev/null +++ b/function/ui_compare/capidemo/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "ArkUI_CAPI_Demo" + } + ] +} diff --git a/function/ui_compare/capidemo/AppScope/resources/base/media/app_icon.png b/function/ui_compare/capidemo/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c GIT binary patch literal 6790 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 +#include + +#include "../manager/plugin_manager.h" + +namespace ArkUICApiDemo { + +static auto SetWidth(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float width) +{ + ArkUI_NumberValue width_value[] = { { .f32 = width } }; + ArkUI_AttributeItem width_item = { width_value, sizeof(width_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_WIDTH, &width_item); + return nodeHandle; +} + +static auto SetHeight(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float height) +{ + ArkUI_NumberValue height_value[] = { { .f32 = height } }; + ArkUI_AttributeItem height_item = { height_value, sizeof(height_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_HEIGHT, &height_item); + return nodeHandle; +} + +static auto SetBackgroundColor(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle nodeHandle, uint32_t color) +{ + ArkUI_NumberValue color_value[] = { { .u32 = color } }; + ArkUI_AttributeItem color_item = { color_value, sizeof(color_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_BACKGROUND_COLOR, &color_item); + return nodeHandle; +} + +static auto SetMargin(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float margin) +{ + ArkUI_NumberValue margin_value[] = { { .f32 = margin } }; + ArkUI_AttributeItem margin_item = { margin_value, sizeof(margin_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_MARGIN, &margin_item); + return nodeHandle; +} + +static auto SetButtonType(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, int32_t type) +{ + ArkUI_NumberValue value[] = { { .i32 = type } }; + ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_BUTTON_TYPE, &item); + return nodeHandle; +} + +static auto SetFontSize(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float size) +{ + ArkUI_NumberValue value[] = { { .f32 = size } }; + ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_FONT_SIZE, &item); + return nodeHandle; +} + +static auto SetButtonLabel(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, const char* label) +{ + nodeHandle = SetWidth(nodeAPI, nodeHandle, SIZE_200); + nodeHandle = SetHeight(nodeAPI, nodeHandle, SIZE_50); + nodeHandle = SetBackgroundColor(nodeAPI, nodeHandle, COLOR_GREEN); + nodeHandle = SetMargin(nodeAPI, nodeHandle, PARAM_1); + nodeHandle = SetFontSize(nodeAPI, nodeHandle, SIZE_20); + ArkUI_AttributeItem item = {}; + item.string = label; + nodeAPI->setAttribute(nodeHandle, NODE_BUTTON_LABEL, &item); + return nodeHandle; +} + +static auto SetButton(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, int32_t type) +{ + nodeHandle = SetWidth(nodeAPI, nodeHandle, SIZE_200); + nodeHandle = SetHeight(nodeAPI, nodeHandle, SIZE_50); + nodeHandle = SetBackgroundColor(nodeAPI, nodeHandle, COLOR_YELLOW); + nodeHandle = SetMargin(nodeAPI, nodeHandle, PARAM_1); + nodeHandle = SetButtonType(nodeAPI, nodeHandle, type); + return nodeHandle; +} + +static auto CreateParentNode() +{ + ArkUI_NativeNodeAPI_1* nodeAPI = nullptr; + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeAPI); + auto column = nodeAPI->createNode(ARKUI_NODE_COLUMN); + auto button1 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button2 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button3 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button4 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button5 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button6 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button7 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button8 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button9 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + nodeAPI->addChild(column, button1); + nodeAPI->addChild(column, button2); + nodeAPI->addChild(column, button3); + nodeAPI->addChild(column, button4); + nodeAPI->addChild(column, button5); + nodeAPI->addChild(column, button6); + nodeAPI->addChild(column, button7); + nodeAPI->addChild(column, button8); + nodeAPI->addChild(column, button9); + button1 = SetButton(nodeAPI, button1, ARKUI_BUTTON_TYPE_NORMAL); + button2 = SetButton(nodeAPI, button2, ARKUI_BUTTON_TYPE_CAPSULE); + button3 = SetButton(nodeAPI, button3, ARKUI_BUTTON_TYPE_CIRCLE); + button4 = SetButton(nodeAPI, button4, PARAM_NEGATIVE_1); + button5 = SetButton(nodeAPI, button5, PARAM_3); + button6 = SetButton(nodeAPI, button6, ARKUI_BUTTON_TYPE_NORMAL); + nodeAPI->resetAttribute(button6, NODE_BUTTON_TYPE); + button7 = SetButtonLabel(nodeAPI, button7, "label"); + button8 = SetButtonLabel(nodeAPI, button8, "long_label_long_label_long_label_long_label"); + button9 = SetButtonLabel(nodeAPI, button9, ""); + return column; +} + +napi_value ButtonTypeTest::CreateNativeNode(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ButtonTypeTest", "CreateNativeNode"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ButtonTypeTest", "GetContext env or info is null"); + return nullptr; + } + + auto column = CreateParentNode(); + + std::string id(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode(PluginManager::GetInstance()->GetNativeXComponent(id), column) == + INVALID_PARAM) { + OH_LOG_Print( + LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ButtonTypeTest", "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_create_object failed"); + return nullptr; + } + + return exports; +} +} // namespace ArkUICApiDemo diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/button/button_type_test.h b/function/ui_compare/capidemo/entry/src/main/cpp/button/button_type_test.h new file mode 100644 index 00000000..955dbc8c --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/button/button_type_test.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_BUTTON_TYPE_TEST_H +#define ARKUI_CAPI_DEMO_BUTTON_TYPE_TEST_H + +#include +#include +#include + +#include "../common/common.h" + +namespace ArkUICApiDemo { + +#define SIZE_20 20 + +class ButtonTypeTest { +public: + ~ButtonTypeTest(); + static napi_value CreateNativeNode(napi_env env, napi_callback_info info); +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_BUTTON_TYPE_TEST_H diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/calendarpicker/calendarpicker_hint_radius_test.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/calendarpicker/calendarpicker_hint_radius_test.cpp new file mode 100644 index 00000000..37cd400c --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/calendarpicker/calendarpicker_hint_radius_test.cpp @@ -0,0 +1,415 @@ +/* + * Copyright (c) 2024 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 "calendarpicker_hint_radius_test.h" + +#include + +#include "../manager/plugin_manager.h" + +namespace ArkUICApiDemo { + +#define YEAR 2024 +#define MONTH 1 +#define DATE 1 + +static auto SetWidth(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float width) +{ + ArkUI_NumberValue width_value[] = { { .f32 = width } }; + ArkUI_AttributeItem width_item = { width_value, sizeof(width_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_WIDTH, &width_item); + return nodeHandle; +} + +static auto SetHeight(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float height) +{ + ArkUI_NumberValue height_value[] = { { .f32 = height } }; + ArkUI_AttributeItem height_item = { height_value, sizeof(height_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_HEIGHT, &height_item); + return nodeHandle; +} + +static auto SetMargin(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float margin) +{ + ArkUI_NumberValue margin_value[] = { { .f32 = margin } }; + ArkUI_AttributeItem margin_item = { margin_value, sizeof(margin_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_MARGIN, &margin_item); + return nodeHandle; +} + +static auto SetId(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, const char* id) +{ + ArkUI_AttributeItem id_item = {}; + id_item.string = id; + nodeAPI->setAttribute(nodeHandle, NODE_ID, &id_item); + return nodeHandle; +} + +static auto SetDate(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle) +{ + ArkUI_NumberValue value[] = { { .u32 = YEAR }, { .u32 = MONTH }, { .u32 = DATE } }; + ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_CALENDAR_PICKER_SELECTED_DATE, &item); + return nodeHandle; +} + +static auto SetRadius(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float radius) +{ + ArkUI_NumberValue value[] = { { .f32 = radius } }; + ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_CALENDAR_PICKER_HINT_RADIUS, &item); + return nodeHandle; +} + +static auto SetCalendar(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float radius, const char* id) +{ + nodeHandle = SetWidth(nodeAPI, nodeHandle, SIZE_100); + nodeHandle = SetHeight(nodeAPI, nodeHandle, SIZE_100); + nodeHandle = SetMargin(nodeAPI, nodeHandle, PARAM_1); + nodeHandle = SetDate(nodeAPI, nodeHandle); + nodeHandle = SetRadius(nodeAPI, nodeHandle, radius); + nodeHandle = SetId(nodeAPI, nodeHandle, id); + return nodeHandle; +} + +napi_value CalendarPickerHintRadiusTest::CreateNativeNodePage1(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", "CreateNativeNodePage1"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print( + LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", "GetContext env or info is null"); + return nullptr; + } + + ArkUI_NativeNodeAPI_1* nodeAPI = nullptr; + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeAPI); + auto column = nodeAPI->createNode(ARKUI_NODE_COLUMN); + auto calendarPicker1 = nodeAPI->createNode(ARKUI_NODE_CALENDAR_PICKER); + nodeAPI->addChild(column, calendarPicker1); + calendarPicker1 = SetCalendar(nodeAPI, calendarPicker1, PARAM_0, "calendarPicker1"); + + std::string id(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode(PluginManager::GetInstance()->GetNativeXComponent(id), column) == + INVALID_PARAM) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", + "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_create_object failed"); + return nullptr; + } + + return exports; +} + +napi_value CalendarPickerHintRadiusTest::CreateNativeNodePage2(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", "CreateNativeNodePage2"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print( + LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", "GetContext env or info is null"); + return nullptr; + } + + ArkUI_NativeNodeAPI_1* nodeAPI = nullptr; + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeAPI); + auto column = nodeAPI->createNode(ARKUI_NODE_COLUMN); + auto calendarPicker2 = nodeAPI->createNode(ARKUI_NODE_CALENDAR_PICKER); + nodeAPI->addChild(column, calendarPicker2); + calendarPicker2 = SetCalendar(nodeAPI, calendarPicker2, PARAM_1, "calendarPicker2"); + + std::string id(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode(PluginManager::GetInstance()->GetNativeXComponent(id), column) == + INVALID_PARAM) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", + "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_create_object failed"); + return nullptr; + } + + return exports; +} + +napi_value CalendarPickerHintRadiusTest::CreateNativeNodePage3(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", "CreateNativeNodePage3"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print( + LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", "GetContext env or info is null"); + return nullptr; + } + + ArkUI_NativeNodeAPI_1* nodeAPI = nullptr; + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeAPI); + auto column = nodeAPI->createNode(ARKUI_NODE_COLUMN); + auto calendarPicker3 = nodeAPI->createNode(ARKUI_NODE_CALENDAR_PICKER); + nodeAPI->addChild(column, calendarPicker3); + calendarPicker3 = SetCalendar(nodeAPI, calendarPicker3, PARAM_10, "calendarPicker3"); + + std::string id(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode(PluginManager::GetInstance()->GetNativeXComponent(id), column) == + INVALID_PARAM) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", + "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_create_object failed"); + return nullptr; + } + + return exports; +} + +napi_value CalendarPickerHintRadiusTest::CreateNativeNodePage4(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", "CreateNativeNodePage4"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print( + LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", "GetContext env or info is null"); + return nullptr; + } + + ArkUI_NativeNodeAPI_1* nodeAPI = nullptr; + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeAPI); + auto column = nodeAPI->createNode(ARKUI_NODE_COLUMN); + auto calendarPicker4 = nodeAPI->createNode(ARKUI_NODE_CALENDAR_PICKER); + nodeAPI->addChild(column, calendarPicker4); + calendarPicker4 = SetCalendar(nodeAPI, calendarPicker4, 15.999, "calendarPicker4"); + + std::string id(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode(PluginManager::GetInstance()->GetNativeXComponent(id), column) == + INVALID_PARAM) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", + "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_create_object failed"); + return nullptr; + } + + return exports; +} + +napi_value CalendarPickerHintRadiusTest::CreateNativeNodePage5(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", "CreateNativeNodePage5"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print( + LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", "GetContext env or info is null"); + return nullptr; + } + + ArkUI_NativeNodeAPI_1* nodeAPI = nullptr; + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeAPI); + auto column = nodeAPI->createNode(ARKUI_NODE_COLUMN); + auto calendarPicker5 = nodeAPI->createNode(ARKUI_NODE_CALENDAR_PICKER); + nodeAPI->addChild(column, calendarPicker5); + calendarPicker5 = SetCalendar(nodeAPI, calendarPicker5, 16.0, "calendarPicker5"); + + std::string id(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode(PluginManager::GetInstance()->GetNativeXComponent(id), column) == + INVALID_PARAM) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", + "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_create_object failed"); + return nullptr; + } + + return exports; +} + +napi_value CalendarPickerHintRadiusTest::CreateNativeNodePage6(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", "CreateNativeNodePage6"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print( + LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", "GetContext env or info is null"); + return nullptr; + } + + ArkUI_NativeNodeAPI_1* nodeAPI = nullptr; + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeAPI); + auto column = nodeAPI->createNode(ARKUI_NODE_COLUMN); + auto calendarPicker6 = nodeAPI->createNode(ARKUI_NODE_CALENDAR_PICKER); + nodeAPI->addChild(column, calendarPicker6); + calendarPicker6 = SetCalendar(nodeAPI, calendarPicker6, 1000, "calendarPicker6"); + + std::string id(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode(PluginManager::GetInstance()->GetNativeXComponent(id), column) == + INVALID_PARAM) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", + "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_create_object failed"); + return nullptr; + } + + return exports; +} + +napi_value CalendarPickerHintRadiusTest::CreateNativeNodePage7(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", "CreateNativeNodePage7"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print( + LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", "GetContext env or info is null"); + return nullptr; + } + + ArkUI_NativeNodeAPI_1* nodeAPI = nullptr; + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeAPI); + auto column = nodeAPI->createNode(ARKUI_NODE_COLUMN); + auto calendarPicker7 = nodeAPI->createNode(ARKUI_NODE_CALENDAR_PICKER); + nodeAPI->addChild(column, calendarPicker7); + calendarPicker7 = SetCalendar(nodeAPI, calendarPicker7, -1, "calendarPicker7"); + + std::string id(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode(PluginManager::GetInstance()->GetNativeXComponent(id), column) == + INVALID_PARAM) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", + "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_create_object failed"); + return nullptr; + } + + return exports; +} + +napi_value CalendarPickerHintRadiusTest::CreateNativeNodePage8(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", "CreateNativeNodePage8"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print( + LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", "GetContext env or info is null"); + return nullptr; + } + + ArkUI_NativeNodeAPI_1* nodeAPI = nullptr; + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeAPI); + auto column = nodeAPI->createNode(ARKUI_NODE_COLUMN); + auto calendarPicker8 = nodeAPI->createNode(ARKUI_NODE_CALENDAR_PICKER); + nodeAPI->addChild(column, calendarPicker8); + calendarPicker8 = SetCalendar(nodeAPI, calendarPicker8, 16.0, "calendarPicker8"); + nodeAPI->resetAttribute(calendarPicker8, NODE_CALENDAR_PICKER_HINT_RADIUS); + + std::string id(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode(PluginManager::GetInstance()->GetNativeXComponent(id), column) == + INVALID_PARAM) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "CalendarPickerHintRadiusTest", + "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_create_object failed"); + return nullptr; + } + + return exports; +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/calendarpicker/calendarpicker_hint_radius_test.h b/function/ui_compare/capidemo/entry/src/main/cpp/calendarpicker/calendarpicker_hint_radius_test.h new file mode 100644 index 00000000..95f3ead6 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/calendarpicker/calendarpicker_hint_radius_test.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_CALENDARPICKER_HINT_RADIUS_TEST_H +#define ARKUI_CAPI_DEMO_CALENDARPICKER_HINT_RADIUS_TEST_H + +#include +#include +#include + +#include "../common/common.h" + +namespace ArkUICApiDemo { + +class CalendarPickerHintRadiusTest { +public: + ~CalendarPickerHintRadiusTest(); + static napi_value CreateNativeNodePage1(napi_env env, napi_callback_info info); + static napi_value CreateNativeNodePage2(napi_env env, napi_callback_info info); + static napi_value CreateNativeNodePage3(napi_env env, napi_callback_info info); + static napi_value CreateNativeNodePage4(napi_env env, napi_callback_info info); + static napi_value CreateNativeNodePage5(napi_env env, napi_callback_info info); + static napi_value CreateNativeNodePage6(napi_env env, napi_callback_info info); + static napi_value CreateNativeNodePage7(napi_env env, napi_callback_info info); + static napi_value CreateNativeNodePage8(napi_env env, napi_callback_info info); +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_CALENDARPICKER_HINT_RADIUS_TEST_H diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/common/common.h b/function/ui_compare/capidemo/entry/src/main/cpp/common/common.h new file mode 100644 index 00000000..b347ab87 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/common/common.h @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_COMMON_TEST_H +#define ARKUI_CAPI_DEMO_COMMON_TEST_H + +#include +#include + +namespace ArkUICApiDemo { + +#define PARAM_0 0 +#define PARAM_1 1 +#define PARAM_2 2 +#define PARAM_3 3 +#define PARAM_4 4 +#define PARAM_5 5 +#define PARAM_6 6 +#define PARAM_7 7 +#define PARAM_8 8 +#define PARAM_9 9 +#define PARAM_10 10 +#define PARAM_11 11 +#define PARAM_12 12 +#define PARAM_64 64 +#define DEFAULT_MARGIN 10 +#define SIZE_5 5 +#define SIZE_10 10 +#define SIZE_30 30 +#define SIZE_50 50 +#define SIZE_100 100 +#define SIZE_150 150 +#define SIZE_180 180 +#define SIZE_200 200 +#define SIZE_230 230 +#define SIZE_250 250 +#define SIZE_300 300 +#define SIZE_350 350 +#define SIZE_400 400 +#define SIZE_450 450 +#define SIZE_500 500 +#define SIZE_600 600 +#define DEFAULT_VALUE_TAG 7000 +#define ENUM_ABNORMAL_VALUE 500 +#define INVALID_PARAM 401 +#define COLOR_RED 0xFFFF0000 +#define COLOR_GREEN 0xFF00FF00 +#define COLOR_BLUE 0xFF0000FF +#define COLOR_YELLOW 0xFFFFFF00 +#define COLOR_PURPLE 0xFFFF11FF +#define COLOR_PINK 0xFFFFC0CB +#define COLOR_GRAY 0xFFDDDDDD +#define COLOR_TRANSPARENT 0x00000000 +#define COLOR_BLACK 0xFF000000 +#define COLOR_WHITE 0xFFFFFFFF +#define COLOR_LIGHT_BLUE 0xFF00FFFF +#define ON_CLICK_EVENT_ID 6001 +#define ON_FOCUS_EVENT_ID 6002 +#define ON_TOUCH_EVENT_ID 6003 +#define ON_AREA_CHANGE_EVENT_ID 6004 +#define ON_APPEAR_EVENT_ID 6005 +#define ON_BLUR_EVENT_ID 6006 +#define ON_CHANGE_EVENT_ID 6007 +#define ON_SUBMIT_EVENT_ID 6008 +#define ON_CUT_EVENT_ID 6009 +#define ON_PASTE_EVENT_ID 6010 +#define ON_MEASURE_EVENT_ID 6011 +#define ON_LAYOUT_EVENT_ID 6012 +#define ON_DRAW_EVENT_ID 6013 +#define ON_CUSTOM_EVENT_1_ID 9001 +#define ON_CUSTOM_EVENT_2_ID 9002 +#define ON_CUSTOM_EVENT_3_ID 9003 +#define ON_CUSTOM_EVENT_4_ID 9004 +#define ON_CUSTOM_EVENT_5_ID 9005 +#define ON_CUSTOM_EVENT_6_ID 9006 +#define PARAM_NEGATIVE_1 (-1) +#define PARAM_NEGATIVE_100 (-100) + +/** + * Log print domain. + */ +const unsigned int LOG_PRINT_DOMAIN = 0xFF00; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_COMMON_TEST_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/button_component.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/component/button_component.cpp new file mode 100644 index 00000000..1210d977 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/button_component.cpp @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2024 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 "button_component.h" + +namespace ArkUICApiDemo { + +void ButtonComponent::SetLable(const std::string& content) +{ + ArkUI_AttributeItem item = { nullptr, 0, content.c_str() }; + _nodeAPI->setAttribute(_component, NODE_BUTTON_LABEL, &item); +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/button_component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/button_component.h new file mode 100644 index 00000000..2873acfb --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/button_component.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_BUTTON_COMPONENT_H +#define ARKUI_CAPI_DEMO_BUTTON_COMPONENT_H + +#include + +#include "component.h" + +namespace ArkUICApiDemo { +class ButtonComponent : public Component { +public: + ButtonComponent() : Component(ARKUI_NODE_BUTTON) {} + explicit ButtonComponent(ArkUI_NodeHandle handle) : Component(handle) {} + void SetLable(const std::string& content); +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_BUTTON_COMPONENT_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/column_component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/column_component.h new file mode 100644 index 00000000..b06726b2 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/column_component.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_COLUMN_COMPONENT_H +#define ARKUI_CAPI_DEMO_COLUMN_COMPONENT_H + +#include + +#include "component.h" + +namespace ArkUICApiDemo { +class ColumnComponent : public Component { +public: + ColumnComponent() : Component(ARKUI_NODE_COLUMN) {} + explicit ColumnComponent(ArkUI_NodeHandle handle) : Component(handle) {} + + void SetAlignItems(int32_t verticalAlign) + { + ArkUI_NumberValue value[] = { { .i32 = verticalAlign } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_COLUMN_ALIGN_ITEMS, &item); + } + void SetJustifyContent(int32_t flexAlign) + { + ArkUI_NumberValue value[] = { { .i32 = flexAlign } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_COLUMN_JUSTIFY_CONTENT, &item); + } +}; +} // namespace ArkUICApiDemo + +#endif // ARKUI_CAPI_DEMO_COLUMN_COMPONENT_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/component.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/component/component.cpp new file mode 100644 index 00000000..1363b989 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/component.cpp @@ -0,0 +1,364 @@ +/* + * Copyright (c) 2024 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 "component.h" + +#include +#include + +namespace ArkUICApiDemo { + +Component::Component(ArkUI_NodeType type) +{ + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, _nodeAPI); + _component = _nodeAPI->createNode(type); + _nodeAPI->setUserData(_component, this); + _nodeAPI->addNodeEventReceiver(_component, Component::NodeEventReceiver); +} + +Component::Component(ArkUI_NodeHandle handle) +{ + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, _nodeAPI); + _component = handle; + _nodeAPI->setUserData(_component, this); + _nodeAPI->addNodeEventReceiver(_component, Component::NodeEventReceiver); + + int32_t count = _nodeAPI->getTotalChildCount(_component); + for (int32_t i = 0; i < count; i++) { + auto temp = _nodeAPI->getChildAt(_component, i); + children_.emplace_back(std::make_shared(temp)); + } +} + +int32_t Component::setAttribute(ArkUI_NodeAttributeType attribute, const ArkUI_AttributeItem* item) +{ + return _nodeAPI->setAttribute(_component, attribute, item); +} + +const ArkUI_AttributeItem* Component::getAttribute(ArkUI_NodeAttributeType attribute) +{ + return _nodeAPI->getAttribute(_component, attribute); +} + +int32_t Component::resetAttribute(ArkUI_NodeAttributeType attribute) +{ + return _nodeAPI->resetAttribute(_component, attribute); +} + +void Component::SetWidth(float width) +{ + ArkUI_NumberValue value[] = { { .f32 = width } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_WIDTH, &item); +} +void Component::SetPercentWidth(float percent) +{ + ArkUI_NumberValue value[] = { { .f32 = percent } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_WIDTH_PERCENT, &item); +} +void Component::SetHeight(float height) +{ + ArkUI_NumberValue value[] = { { .f32 = height } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_HEIGHT, &item); +} +void Component::SetPercentHeight(float percent) +{ + ArkUI_NumberValue value[] = { { .f32 = percent } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_HEIGHT_PERCENT, &item); +} +void Component::SetBackgroundColor(uint32_t color) +{ + ArkUI_NumberValue value[] = { { .u32 = color } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_BACKGROUND_COLOR, &item); +} +void Component::SetBackgroundImage(const std::string& backgroundImage) +{ + ArkUI_AttributeItem item = { nullptr, 0, backgroundImage.c_str() }; + _nodeAPI->setAttribute(_component, NODE_BACKGROUND_IMAGE, &item); +} +void Component::SetBackgroundImageSizeWithStyle(int32_t imageSize) +{ + ArkUI_NumberValue value[] = { { .i32 = imageSize } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_BACKGROUND_IMAGE_SIZE_WITH_STYLE, &item); +} +void Component::SetBorderRadius(float topLeft, float topRight, float bottomLeft, float bottomRight) +{ + ArkUI_NumberValue value[] = { { .f32 = topLeft }, { .f32 = topRight }, { .f32 = bottomLeft }, + { .f32 = bottomRight } }; + ArkUI_AttributeItem item = { value, 4 }; + _nodeAPI->setAttribute(_component, NODE_BORDER_RADIUS, &item); +} + +void Component::SetPadding(float top, float right, float bottom, float left) +{ + ArkUI_NumberValue value[] = { { .f32 = top }, { .f32 = right }, { .f32 = bottom }, { .f32 = left } }; + ArkUI_AttributeItem item = { value, 4 }; + _nodeAPI->setAttribute(_component, NODE_PADDING, &item); +} + +void Component::SetPaddingPercent(float top, float right, float bottom, float left) +{ + ArkUI_NumberValue value[] = { { .f32 = top }, { .f32 = right }, { .f32 = bottom }, { .f32 = left } }; + ArkUI_AttributeItem item = { value, 4 }; + _nodeAPI->setAttribute(_component, NODE_PADDING_PERCENT, &item); +} + +void Component::SetMargin(float top, float right, float bottom, float left) +{ + ArkUI_NumberValue value[] = { { .f32 = top }, { .f32 = right }, { .f32 = bottom }, { .f32 = left } }; + ArkUI_AttributeItem item = { value, 4 }; + _nodeAPI->setAttribute(_component, NODE_MARGIN, &item); +} +void Component::SetMargin(float margin) +{ + ArkUI_NumberValue value[] = { { .f32 = margin }, { .f32 = margin }, { .f32 = margin }, { .f32 = margin } }; + ArkUI_AttributeItem item = { value, 4 }; + _nodeAPI->setAttribute(_component, NODE_MARGIN, &item); +} + +void Component::SetMarginPercent(float top, float right, float bottom, float left) +{ + ArkUI_NumberValue value[] = { { .f32 = top }, { .f32 = right }, { .f32 = bottom }, { .f32 = left } }; + ArkUI_AttributeItem item = { value, 4 }; + _nodeAPI->setAttribute(_component, NODE_MARGIN_PERCENT, &item); +} + +void Component::SetEnabled(int32_t enable) +{ + ArkUI_NumberValue value[] = { { .i32 = enable } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_ENABLED, &item); +} + +void Component::SetAlign(int32_t align) +{ + ArkUI_NumberValue value[] = { { .i32 = align } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_ALIGNMENT, &item); +} + +void Component::SetAlignRules(ArkUI_AlignmentRuleOption* option) +{ + ArkUI_AttributeItem item = { .object = option }; + _nodeAPI->setAttribute(_component, NODE_ALIGN_RULES, &item); +} + +void Component::SetAlignSelf(int32_t value) +{ + ArkUI_NumberValue val[] = { { .i32 = value } }; + ArkUI_AttributeItem item = { val, 1 }; + _nodeAPI->setAttribute(_component, NODE_ALIGN_SELF, &item); +} + +void Component::SetOpacity(float opacity) +{ + ArkUI_NumberValue value[] = { { .f32 = opacity } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_OPACITY, &item); +} + +void Component::SetBorderWidth(float top, float right, float bottom, float left) +{ + ArkUI_NumberValue value[] = { { .f32 = top }, { .f32 = right }, { .f32 = bottom }, { .f32 = left } }; + ArkUI_AttributeItem item = { value, 4 }; + _nodeAPI->setAttribute(_component, NODE_BORDER_WIDTH, &item); +} + +void Component::SetBorderWidth(float borderWidth) +{ + ArkUI_NumberValue value[] = { { .f32 = borderWidth }, { .f32 = borderWidth }, { .f32 = borderWidth }, + { .f32 = borderWidth } }; + ArkUI_AttributeItem item = { value, 4 }; + _nodeAPI->setAttribute(_component, NODE_BORDER_WIDTH, &item); +} + +void Component::SetBorderColor(uint32_t top, uint32_t right, uint32_t bottom, uint32_t left) +{ + ArkUI_NumberValue value[] = { { .u32 = top }, { .u32 = right }, { .u32 = bottom }, { .u32 = left } }; + ArkUI_AttributeItem item = { value, 4 }; + _nodeAPI->setAttribute(_component, NODE_BORDER_COLOR, &item); +} + +void Component::SetBorderStyle(int32_t top, int32_t right, int32_t bottom, int32_t left) +{ + ArkUI_NumberValue value[] = { { .i32 = top }, { .i32 = right }, { .i32 = bottom }, { .i32 = left } }; + ArkUI_AttributeItem item = { value, 4 }; + _nodeAPI->setAttribute(_component, NODE_BORDER_STYLE, &item); +} + +void Component::SetVisibility(int32_t visibility) +{ + ArkUI_NumberValue value[] = { { .i32 = visibility } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_VISIBILITY, &item); +} +void Component::SetId(const std::string& id) +{ + ArkUI_AttributeItem item = { nullptr, 0, id.c_str() }; + _nodeAPI->setAttribute(_component, NODE_ID, &item); +} +void Component::AddChild(const std::shared_ptr& child) +{ + children_.emplace_back(child); + OnAddChild(child); +} + +void Component::RemoveChild(const std::shared_ptr& child) +{ + children_.remove(child); + OnRemoveChild(child); +} + +void Component::RemoveAll() +{ + children_.clear(); + OnRemoveAll(); +} + +void Component::InsertChild(const std::shared_ptr& child, int32_t index) +{ + if (index >= children_.size()) { + AddChild(child); + } else { + auto iter = children_.begin(); + std::advance(iter, index); + children_.insert(iter, child); + OnInsertChild(child, index); + } +} + +std::shared_ptr Component::GetPreviousSibling() +{ + auto previousSibling = _nodeAPI->getPreviousSibling(_component); + return std::make_shared(previousSibling); +}; + +std::shared_ptr Component::GetNextSibling() +{ + auto nextSibling = _nodeAPI->getNextSibling(_component); + return std::make_shared(nextSibling); +}; + +void Component::NodeEventReceiver(ArkUI_NodeEvent* event) +{ + ArkUI_NativeNodeAPI_1* nodeAPI = nullptr; + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeAPI); + // 获取事件发生的UI组件对象。 + auto nodeHandle = OH_ArkUI_NodeEvent_GetNodeHandle(event); + // 获取保持在UI组件对象中的自定义数据,返回封装类指针。 + auto* node = reinterpret_cast(nodeAPI->getUserData(nodeHandle)); + // 基于封装类实例对象处理事件。 + if (node) { + node->ProcessNodeEvent(event); + } +} +void Component::SetFontSize(float fontSize) +{ + ArkUI_NumberValue value[] = { { .f32 = fontSize } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_FONT_SIZE, &item); +} +void Component::ProcessNodeEvent(ArkUI_NodeEvent* event) +{ + auto eventType = OH_ArkUI_NodeEvent_GetEventType(event); + OH_LOG_Print( + LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "commonEvent", "ProcessNodeEvent eventType=%{public}d", eventType); + switch (eventType) { + case NODE_ON_CLICK: { + if (onClick_) { + onClick_(); + } + break; + } + case NODE_TOUCH_EVENT: { + if (onTouch_) { + onTouch_(event); + } + break; + } + case NODE_EVENT_ON_DISAPPEAR: { + if (onDisappear_) { + onDisappear_(); + } + break; + } + case NODE_EVENT_ON_APPEAR: { + if (onAppear_) { + onAppear_(); + } + break; + } + case NODE_ON_HOVER: { + if (onHover_) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "commonEvent", "NODE_ON_HOVER"); + ArkUI_NodeComponentEvent* result = OH_ArkUI_NodeEvent_GetNodeComponentEvent(event); + int32_t isHover = result->data[0].i32; + onHover_(static_cast(isHover)); + } + break; + } + case NODE_EVENT_ON_VISIBLE_AREA_CHANGE: { + if (onVisibleAreaChange_) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "commonEvent", "NODE_EVENT_ON_VISIBLE_AREA_CHANGE"); + ArkUI_NodeComponentEvent* result = OH_ArkUI_NodeEvent_GetNodeComponentEvent(event); + bool visible = static_cast(result->data[0].i32); + float ratio = result->data[1].f32; + onVisibleAreaChange_(visible, ratio); + } + break; + } + case NODE_ON_MOUSE: { + if (onMouse_) { + onMouse_(event); + } + break; + } + case NODE_ON_TOUCH_INTERCEPT: { + if (onTouchIntercept_) { + onTouchIntercept_(event); + } + break; + } + case NODE_ON_FOCUS: { + if (onFocus_) { + onFocus_(); + } + break; + } + default: { + OnNodeEvent(event); + } + } +} + +void Component::RegisterOnVisibleAreaChange( + const std::function& onVisibleAreaChange, std::vector ratioArray) +{ + ArkUI_NumberValue value[ratioArray.size()]; + + for (size_t i = 0; i < ratioArray.size(); i++) { + value[i].f32 = { ratioArray[i] }; + } + ArkUI_AttributeItem item = { value, static_cast(ratioArray.size()) }; + + onVisibleAreaChange_ = onVisibleAreaChange; + _nodeAPI->registerNodeEvent(_component, NODE_EVENT_ON_VISIBLE_AREA_CHANGE, 0, &item); +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/component.h new file mode 100644 index 00000000..890ed5f9 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/component.h @@ -0,0 +1,166 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_COMPONENT_H +#define ARKUI_CAPI_DEMO_COMPONENT_H + +#include +#include +#include +#include + +#include "../common/common.h" + +namespace ArkUICApiDemo { + +class Component { +public: + explicit Component(ArkUI_NodeType type); + explicit Component(ArkUI_NodeHandle handle); + virtual ~Component() = default; + + int32_t setAttribute(ArkUI_NodeAttributeType attribute, const ArkUI_AttributeItem* item); + const ArkUI_AttributeItem* getAttribute(ArkUI_NodeAttributeType attribute); + int32_t resetAttribute(ArkUI_NodeAttributeType attribute); + + void SetWidth(float width); + void SetPercentWidth(float percent); + void SetHeight(float height); + void SetPercentHeight(float percent); + void SetBackgroundColor(uint32_t color); + void SetBackgroundImage(const std::string& backgroundImage); + void SetBackgroundImageSizeWithStyle(int32_t imageSize); + void SetBorderRadius(float topLeft, float topRight, float bottomLeft, float bottomRight); + void SetPadding(float top, float right, float bottom, float left); + void SetPaddingPercent(float top, float right, float bottom, float left); + void SetMargin(float top, float right, float bottom, float left); + void SetMargin(float margin); + void SetMarginPercent(float top, float right, float bottom, float left); + void SetEnabled(int32_t enable); + void SetAlign(int32_t align); + void SetAlignRules(ArkUI_AlignmentRuleOption* option); + void SetAlignSelf(int32_t value); + void SetOpacity(float opacity); + void SetBorderWidth(float top, float right, float bottom, float left); + void SetBorderWidth(float borderWidth); + void SetBorderColor(uint32_t top, uint32_t right, uint32_t bottom, uint32_t left); + void SetBorderStyle(int32_t top, int32_t right, int32_t bottom, int32_t left); + void SetVisibility(int32_t visibility); + virtual void SetFontSize(float fontSize); + void SetId(const std::string& id); + void AddChild(const std::shared_ptr& child); + void RemoveChild(const std::shared_ptr& child); + void RemoveAll(); + void InsertChild(const std::shared_ptr& child, int32_t index); + std::list> GetChildren() + { + return children_; + } + std::shared_ptr GetPreviousSibling(); + std::shared_ptr GetNextSibling(); + + ArkUI_NodeHandle GetComponent() + { + return _component; + } + // 处理通用事件。 + void RegisterOnClick(const std::function& onClick) + { + onClick_ = onClick; + _nodeAPI->registerNodeEvent(_component, NODE_ON_CLICK, 0, nullptr); + } + + void RegisterOnTouch(const std::function& onTouch) + { + onTouch_ = onTouch; + _nodeAPI->registerNodeEvent(_component, NODE_TOUCH_EVENT, 0, nullptr); + } + + void RegisterOnDisappear(const std::function& onDisappear) + { + onDisappear_ = onDisappear; + _nodeAPI->registerNodeEvent(_component, NODE_EVENT_ON_DISAPPEAR, 0, nullptr); + } + + void RegisterOnAppear(const std::function& onAppear) + { + onAppear_ = onAppear; + _nodeAPI->registerNodeEvent(_component, NODE_EVENT_ON_APPEAR, 0, nullptr); + } + void RegisterOnHover(const std::function& onHover) + { + onHover_ = onHover; + _nodeAPI->registerNodeEvent(_component, NODE_ON_HOVER, 0, nullptr); + } + void RegisterOnMouse(const std::function& onMouse) + { + onMouse_ = onMouse; + _nodeAPI->registerNodeEvent(_component, NODE_ON_MOUSE, 0, nullptr); + } + void RegisterOnTouchIntercept(const std::function& onTouchIntercept) + { + onTouchIntercept_ = onTouchIntercept; + _nodeAPI->registerNodeEvent(_component, NODE_ON_TOUCH_INTERCEPT, 0, nullptr); + } + void RegisterOnFocus(const std::function& onFocus) + { + onFocus_ = onFocus; + _nodeAPI->registerNodeEvent(_component, NODE_ON_FOCUS, 0, nullptr); + } + void RegisterOnVisibleAreaChange( + const std::function& onVisibleAreaChange, std::vector ratioArray); + + static void NodeEventReceiver(ArkUI_NodeEvent* event); + void ProcessNodeEvent(ArkUI_NodeEvent* event); + virtual void OnNodeEvent(ArkUI_NodeEvent* event) {} + +protected: + // 组件树操作的实现类对接。 + void OnAddChild(const std::shared_ptr& child) + { + _nodeAPI->addChild(_component, child->GetComponent()); + } + void OnRemoveChild(const std::shared_ptr& child) + { + _nodeAPI->removeChild(_component, child->GetComponent()); + } + void OnRemoveAll() + { + _nodeAPI->removeAllChildren(_component); + } + void OnInsertChild(const std::shared_ptr& child, int32_t index) + { + _nodeAPI->insertChildAt(_component, child->GetComponent(), index); + } + +protected: + std::list> children_; + ArkUI_NodeHandle _component { nullptr }; + ArkUI_NativeNodeAPI_1* _nodeAPI { nullptr }; + +private: + std::function onClick_; + std::function onDisappear_; + std::function onAppear_; + std::function onTouch_; + std::function onHover_; + std::function onVisibleAreaChange_; + std::function onMouse_; + std::function onTouchIntercept_; + std::function onFocus_; +}; +} // namespace ArkUICApiDemo + +#endif // ARKUI_CAPI_DEMO_COMPONENT_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/flowitem_component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/flowitem_component.h new file mode 100644 index 00000000..c08a3d86 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/flowitem_component.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_FLOWITEM_COMPONENT_H +#define ARKUI_CAPI_DEMO_FLOWITEM_COMPONENT_H + +#include + +#include "component.h" + +namespace ArkUICApiDemo { + +class FlowItemComponent : public Component { +public: + FlowItemComponent() : Component(ARKUI_NODE_FLOW_ITEM) {} + explicit FlowItemComponent(ArkUI_NodeHandle handle) : Component(handle) {} +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_FLOWITEM_COMPONENT_H diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/grid_component.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/component/grid_component.cpp new file mode 100644 index 00000000..dd9d3456 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/grid_component.cpp @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2024 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 "grid_component.h" + +namespace ArkUICApiDemo { +void GridComponent::SetGridColumnsTemplate(const std::string& str) +{ + ArkUI_AttributeItem item = { .string = str.c_str() }; + _nodeAPI->setAttribute(_component, NODE_GRID_COLUMN_TEMPLATE, &item); +} +void GridComponent::SetGridRowsTemplate(const std::string& str) +{ + ArkUI_AttributeItem item = { .string = str.c_str() }; + _nodeAPI->setAttribute(_component, NODE_GRID_ROW_TEMPLATE, &item); +} +void GridComponent::SetGridColumnsGap(float val) +{ + ArkUI_NumberValue value[] = { { .f32 = val } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_GRID_COLUMN_GAP, &item); +} +void GridComponent::SetGridRowsGap(float val) +{ + ArkUI_NumberValue value[] = { { .f32 = val } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_GRID_ROW_GAP, &item); +} +void GridComponent::SetGridCachedCount(int32_t cachedCount) +{ + ArkUI_NumberValue value[] = { { .i32 = cachedCount } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_GRID_CACHED_COUNT, &item); +} +void GridComponent::SetScrollTo(float hOffset, float vOffset, const std::vector& optionalParams) +{ + auto value = new ArkUI_NumberValue[2 + static_cast(optionalParams.size())]; + value[0] = { .f32 = hOffset }; + value[1] = { .f32 = vOffset }; + for (int32_t i = 0; i < optionalParams.size(); i++) { + value[2 + i] = { .i32 = optionalParams[i] }; + } + ArkUI_AttributeItem item = { value, 2 + static_cast(optionalParams.size()) }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_OFFSET, &item); +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/grid_component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/grid_component.h new file mode 100644 index 00000000..751041f8 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/grid_component.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_GRID_COMPONENT_H +#define ARKUI_CAPI_DEMO_GRID_COMPONENT_H + +#include "component.h" +#include "node_adapter.h" + +namespace ArkUICApiDemo { + +class GridItemComponent : public Component { +public: + GridItemComponent() : Component(ARKUI_NODE_GRID_ITEM) {} + explicit GridItemComponent(ArkUI_NodeHandle handle) : Component(handle) {} +}; + +class GridComponent : public Component { +public: + GridComponent() : Component(ARKUI_NODE_GRID) {} + explicit GridComponent(ArkUI_NodeHandle handle) : Component(handle) {} + + void SetLazyAdapter(const std::shared_ptr>& adapter) + { + ArkUI_AttributeItem item { nullptr, 0, nullptr, adapter->GetAdapter() }; + _nodeAPI->setAttribute(_component, NODE_GRID_NODE_ADAPTER, &item); + _adapter = adapter; + } + void SetGridColumnsTemplate(const std::string& str); + void SetGridRowsTemplate(const std::string& str); + void SetGridColumnsGap(float val); + void SetGridRowsGap(float val); + void SetGridCachedCount(int32_t cachedCount); + /** + * @brief Set the scroll position to the specified offset. + * @param hOffset horizontal scrolling offset + * @param vOffset vertical scrolling offset + * @param optionalParams + * [0] scrolling duration, in milliseconds. + * [1] scrolling curve. The parameter type is ArkUI_AnimationCurve. + * [2] whether to enable the default spring animation. + * [3] sets whether scrolling can cross the boundary. + * [4] canOverScroll. + */ + void SetScrollTo(float hOffset, float vOffset, const std::vector& optionalParams); + + std::shared_ptr> GetAdapter() const + { + return _adapter; + } + void ReleaseAdapter() + { + return _adapter.reset(); + } + +private: + std::shared_ptr> _adapter; +}; + +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_GRID_COMPONENT_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/image_component.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/component/image_component.cpp new file mode 100644 index 00000000..9349ba6b --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/image_component.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2024 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 "image_component.h" + +#include + +namespace ArkUICApiDemo { + +int32_t ImageComponent::SetImageSrc(const std::string& content) +{ + ArkUI_AttributeItem item = { nullptr, 0, content.c_str() }; + return _nodeAPI->setAttribute(_component, NODE_IMAGE_SRC, &item); +} +int32_t ImageComponent::SetImageSrc(ArkUI_DrawableDescriptor* descriptors) +{ + ArkUI_AttributeItem item = { .object = descriptors }; + return _nodeAPI->setAttribute(_component, NODE_IMAGE_SRC, &item); +} +int32_t ImageComponent::SetObjectFit(const int32_t objectFit) +{ + ArkUI_NumberValue value[] = { { .i32 = objectFit } }; + ArkUI_AttributeItem item = { value, 1 }; + return _nodeAPI->setAttribute(_component, NODE_IMAGE_OBJECT_FIT, &item); +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/image_component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/image_component.h new file mode 100644 index 00000000..a3a30cc0 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/image_component.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_IMAGE_COMPONENT_H +#define ARKUI_CAPI_DEMO_IMAGE_COMPONENT_H + +#include +#include + +#include "component.h" + +namespace ArkUICApiDemo { +class ImageComponent : public Component { +public: + ImageComponent() : Component(ARKUI_NODE_IMAGE) {} + explicit ImageComponent(ArkUI_NodeHandle handle) : Component(handle) {} + + int32_t SetImageSrc(const std::string& content); + int32_t SetImageSrc(ArkUI_DrawableDescriptor* descriptors); + int32_t SetObjectFit(const int32_t objectFit); +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_IMAGE_COMPONENT_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/imageanimator_component.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/component/imageanimator_component.cpp new file mode 100644 index 00000000..45254af2 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/imageanimator_component.cpp @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2024 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 "imageanimator_component.h" + +namespace ArkUICApiDemo { +void ImageAnimatorComponent::SetState(int32_t state) +{ + ArkUI_NumberValue value[] = { { .i32 = state } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_IMAGE_ANIMATOR_STATE, &item); +} + +void ImageAnimatorComponent::SetIteration(int32_t iteration) +{ + ArkUI_NumberValue value[] = { { .i32 = iteration } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_IMAGE_ANIMATOR_ITERATION, &item); +} + +void ImageAnimatorComponent::SetImage(ArkUI_AttributeItem& item) +{ + _nodeAPI->setAttribute(_component, NODE_IMAGE_ANIMATOR_IMAGES, &item); +} + +void ImageAnimatorComponent::SetFixedSize(int32_t fixedSize) +{ + ArkUI_NumberValue value[] = { { .i32 = fixedSize } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_IMAGE_ANIMATOR_FIXED_SIZE, &item); +} + +void ImageAnimatorComponent::SetReverse(int32_t reverse) +{ + ArkUI_NumberValue value[] = { { .i32 = reverse } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_IMAGE_ANIMATOR_REVERSE, &item); +} +void ImageAnimatorComponent::SetFillMode(int32_t mode) +{ + ArkUI_NumberValue value[] = { { .i32 = mode } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_IMAGE_ANIMATOR_FILL_MODE, &item); +} + +void ImageAnimatorComponent::SetDuration(int32_t duration) +{ + ArkUI_NumberValue value[] = { { .i32 = duration } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_IMAGE_ANIMATOR_DURATION, &item); +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/imageanimator_component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/imageanimator_component.h new file mode 100644 index 00000000..98a7d78b --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/imageanimator_component.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_IMAGEANIMATOR_COMPONENT_H +#define ARKUI_CAPI_DEMO_IMAGEANIMATOR_COMPONENT_H + +#include "component.h" + +namespace ArkUICApiDemo { +class ImageAnimatorComponent : public Component { +public: + ImageAnimatorComponent() : Component(ARKUI_NODE_IMAGE_ANIMATOR) {} + explicit ImageAnimatorComponent(ArkUI_NodeHandle handle) : Component(handle) {} + void SetState(int32_t state); + void SetIteration(int32_t iteration); + void SetImage(ArkUI_AttributeItem& item); + void SetFixedSize(int32_t fixedSize); + void SetReverse(int32_t reverse); + void SetFillMode(int32_t mode); + void SetDuration(int32_t duration); +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_IMAGEANIMATOR_COMPONENT_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/imagespan_component.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/component/imagespan_component.cpp new file mode 100644 index 00000000..39141070 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/imagespan_component.cpp @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2024 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 "imagespan_component.h" + +namespace ArkUICApiDemo { + +int32_t ImageSpanComponent::SetImageSpanSrc(const std::string& content) +{ + ArkUI_AttributeItem item = { nullptr, 0, content.c_str() }; + return _nodeAPI->setAttribute(_component, NODE_IMAGE_SPAN_SRC, &item); +} +int32_t ImageSpanComponent::SetImageSpanSrc(ArkUI_DrawableDescriptor* descriptors) +{ + ArkUI_AttributeItem item = { .object = descriptors }; + return _nodeAPI->setAttribute(_component, NODE_IMAGE_SPAN_SRC, &item); +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/imagespan_component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/imagespan_component.h new file mode 100644 index 00000000..c23ce64f --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/imagespan_component.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_IMAGESPAN_COMPONENT_H +#define ARKUI_CAPI_DEMO_IMAGESPAN_COMPONENT_H + +#include +#include + +#include "component.h" + +namespace ArkUICApiDemo { +class ImageSpanComponent : public Component { +public: + ImageSpanComponent() : Component(ARKUI_NODE_IMAGE_SPAN) {} + explicit ImageSpanComponent(ArkUI_NodeHandle handle) : Component(handle) {} + + int32_t SetImageSpanSrc(const std::string& content); + int32_t SetImageSpanSrc(ArkUI_DrawableDescriptor* descriptors); +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_IMAGESPAN_COMPONENT_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/list_component.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/component/list_component.cpp new file mode 100644 index 00000000..27f6f903 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/list_component.cpp @@ -0,0 +1,260 @@ +/* + * Copyright (c) 2024 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 "list_component.h" + +namespace ArkUICApiDemo { + +void ListItemSwipeActionOption::SetStart(ArkUI_ListItemSwipeActionItem* item) +{ + OH_ArkUI_ListItemSwipeActionOption_SetStart(_option, item); +} + +void ListItemSwipeActionOption::SetEnd(ArkUI_ListItemSwipeActionItem* item) +{ + OH_ArkUI_ListItemSwipeActionOption_SetEnd(_option, item); +} + +void ListItemSwipeActionOption::SetEdgeEffect(ArkUI_ListItemSwipeEdgeEffect edgeEffect) +{ + OH_ArkUI_ListItemSwipeActionOption_SetEdgeEffect(_option, edgeEffect); +} + +int32_t ListItemSwipeActionOption::GetEdgeEffect() +{ + return OH_ArkUI_ListItemSwipeActionOption_GetEdgeEffect(_option); +} + +void ListItemSwipeActionOption::SetOnOffsetChange(OnOffsetChangeCallback callback) +{ + OH_ArkUI_ListItemSwipeActionOption_SetOnOffsetChange(_option, callback); +} + +void ListItemSwipeActionOption::SetOnOffsetChangWithUserData( + OnOffsetChangeWithUserDataCallback callback, void* userData) +{ + OH_ArkUI_ListItemSwipeActionOption_SetOnOffsetChangeWithUserData(_option, userData, callback); +} + +int32_t ListChildrenMainSizeOption::SetDefaultMainSize(float defaultMainSize) +{ + return OH_ArkUI_ListChildrenMainSizeOption_SetDefaultMainSize(_option, defaultMainSize); +} + +float ListChildrenMainSizeOption::GetDefaultMainSize() +{ + return OH_ArkUI_ListChildrenMainSizeOption_GetDefaultMainSize(_option); +} + +void ListChildrenMainSizeOption::Resize(int32_t totalSize) +{ + OH_ArkUI_ListChildrenMainSizeOption_Resize(_option, totalSize); +} + +int32_t ListChildrenMainSizeOption::Splice(int32_t index, int32_t deleteCount, int32_t addCount) +{ + return OH_ArkUI_ListChildrenMainSizeOption_Splice(_option, index, deleteCount, addCount); +} + +int32_t ListChildrenMainSizeOption::UpdateSize(int32_t index, float mainSize) +{ + return OH_ArkUI_ListChildrenMainSizeOption_UpdateSize(_option, index, mainSize); +} + +float ListChildrenMainSizeOption::GetMainSize(int32_t index) +{ + return OH_ArkUI_ListChildrenMainSizeOption_GetMainSize(_option, index); +} + +void ListItemComponent::SetListItemSwiperAction(ListItemSwipeActionOption* option) +{ + ArkUI_AttributeItem item = { nullptr, 0, nullptr, option->GetOption() }; + _nodeAPI->setAttribute(_component, NODE_LIST_ITEM_SWIPE_ACTION, &item); +} + +void ListComponent::SetListDirection(int32_t direction) +{ + ArkUI_NumberValue value[] = { { .i32 = direction } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_LIST_DIRECTION, &item); +} + +void ListComponent::SetListSticky(int32_t stickyStyle) +{ + ArkUI_NumberValue value[] = { { .i32 = stickyStyle } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_LIST_STICKY, &item); +} + +void ListComponent::SetListSpace(float space) +{ + ArkUI_NumberValue value[] = { { .f32 = space } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_LIST_SPACE, &item); +} + +void ListComponent::SetListCachedCount(int32_t count) +{ + ArkUI_NumberValue value[] = { { .i32 = count } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_LIST_CACHED_COUNT, &item); +} + +void ListComponent::SetListScrollToIndex(const std::vector& data) +{ + ArkUI_AttributeItem item = { data.data(), static_cast(data.size()) }; + _nodeAPI->setAttribute(_component, NODE_LIST_SCROLL_TO_INDEX, &item); +} + +void ListComponent::SetListAlignListItem(int32_t align) +{ + ArkUI_NumberValue value[] = { { .i32 = align } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_LIST_ALIGN_LIST_ITEM, &item); +} + +void ListComponent::SetListChildrenMainSize(ListChildrenMainSizeOption* mainSize) +{ + ArkUI_AttributeItem item = { .object = mainSize->GetOption() }; + _nodeAPI->setAttribute(_component, NODE_LIST_CHILDREN_MAIN_SIZE, &item); + _childrenMainSize.reset(mainSize); +} + +void ListComponent::SetListInitialIndex(int32_t index) +{ + ArkUI_NumberValue value[] = { { .i32 = index } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_LIST_INITIAL_INDEX, &item); +} + +void ListComponent::SetListDivider(uint32_t color, float width, float distanceStart, float distanceEnd) +{ + ArkUI_NumberValue value[] = { { .u32 = color }, { .f32 = width }, { .f32 = distanceStart }, + { .f32 = distanceEnd } }; + ArkUI_AttributeItem item = { value, 4 }; + _nodeAPI->setAttribute(_component, NODE_LIST_DIVIDER, &item); +} + +void ListItemGroupComponent::SetListItemGroupHeader(Component* node) +{ + ArkUI_AttributeItem item = { nullptr, 0, nullptr, node->GetComponent() }; + _nodeAPI->setAttribute(_component, NODE_LIST_ITEM_GROUP_SET_HEADER, &item); +} + +void ListItemGroupComponent::SetListItemGroupFooter(Component* node) +{ + ArkUI_AttributeItem item = { nullptr, 0, nullptr, node->GetComponent() }; + _nodeAPI->setAttribute(_component, NODE_LIST_ITEM_GROUP_SET_FOOTER, &item); +} + +void ListItemGroupComponent::SetListItemGroupDivider( + uint32_t color, float width, float distanceStart, float distanceEnd) +{ + ArkUI_NumberValue value[] = { { .u32 = color }, { .f32 = width }, { .f32 = distanceStart }, + { .f32 = distanceEnd } }; + ArkUI_AttributeItem item = { value, 4 }; + _nodeAPI->setAttribute(_component, NODE_LIST_ITEM_GROUP_SET_DIVIDER, &item); +} + +void ListItemGroupComponent::SetListItemGroupChildrenMainSize(ListChildrenMainSizeOption* mainSize) +{ + ArkUI_AttributeItem item = { .object = mainSize->GetOption() }; + _nodeAPI->setAttribute(_component, NODE_LIST_ITEM_GROUP_CHILDREN_MAIN_SIZE, &item); + _childrenMainSize.reset(mainSize); +} + +void ListItemGroupAdapter::OnNewItemAttached(ArkUI_NodeAdapterEvent* event) +{ + auto index = OH_ArkUI_NodeAdapterEvent_GetItemIndex(event); + ArkUI_NodeHandle handle = nullptr; + int32_t start = index > 0 ? _groupList[index - 1] : 0, end = _groupList[index]; + if (end - start != 1) { + handle = UpdateNewItemByGroup(start, end); + } else { + handle = UpdateNewItem(start, end); + } + // 设置需要展示的元素。 + OH_ArkUI_NodeAdapterEvent_SetItem(event, handle); +} + +void ListItemGroupAdapter::OnItemDetached(ArkUI_NodeAdapterEvent* event) +{ + auto item = OH_ArkUI_NodeAdapterEvent_GetRemovedNode(event); + if (_removedNodeCallback) { + _removedNodeCallback(std::make_shared(item)); + } + // 放置到缓存池中进行回收复用。 + if (Component(item).GetChildren().size() == 1) { + _cachedListItems.emplace(_listItems[item]); + } else { + _cachedItems.emplace(_items[item]); + } +} + +ArkUI_NodeHandle ListItemGroupAdapter::UpdateNewItemByGroup(int32_t start, int32_t end) +{ + ArkUI_NodeHandle handle = nullptr; + if (!_cachedItems.empty()) { + // 使用并更新回收复用的缓存。 + auto recycledItem = _cachedItems.top(); + recycledItem->RemoveAll(); + for (int32_t i = start; i < end; i++) { + recycledItem->AddChild(_data[i]); + } + handle = recycledItem->GetComponent(); + // 释放缓存池的引用。 + _cachedItems.pop(); + } else { + // 创建新的元素。 + auto groupItem = std::make_shared(); + groupItem->RemoveAll(); + for (int32_t i = start; i < end; i++) { + groupItem->AddChild(_data[i]); + } + groupItem->SetBorderWidth(1); + handle = groupItem->GetComponent(); + // 保持文本列表项的引用。 + _items.emplace(handle, groupItem); + } + return handle; +} + +ArkUI_NodeHandle ListItemGroupAdapter::UpdateNewItem(int32_t start, int32_t end) +{ + ArkUI_NodeHandle handle = nullptr; + if (!_cachedListItems.empty()) { + // 使用并更新回收复用的缓存。 + auto recycledItem = _cachedListItems.top(); + recycledItem->RemoveAll(); + for (int32_t i = start; i < end; i++) { + recycledItem->AddChild(_data[i]); + } + handle = recycledItem->GetComponent(); + // 释放缓存池的引用。 + _cachedListItems.pop(); + } else { + // 创建新的元素。 + auto listItem = std::make_shared(); + listItem->RemoveAll(); + for (int32_t i = start; i < end; i++) { + listItem->AddChild(_data[i]); + } + handle = listItem->GetComponent(); + // 保持文本列表项的引用。 + _listItems.emplace(handle, listItem); + } + return handle; +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/list_component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/list_component.h new file mode 100644 index 00000000..d372f10e --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/list_component.h @@ -0,0 +1,213 @@ +/* + * Copyright (c) 2024 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 CAPIDEMO_LIST_COMPONENT_H +#define CAPIDEMO_LIST_COMPONENT_H +#include + +#include "component.h" +#include "node_adapter.h" + +namespace ArkUICApiDemo { + +typedef void (*OnOffsetChangeCallback)(float offset); +typedef void (*OnOffsetChangeWithUserDataCallback)(float offset, void* userData); +typedef void (*OnFinish)(void* userData); + +class ListItemSwipeActionOption { +public: + ListItemSwipeActionOption() : _option(OH_ArkUI_ListItemSwipeActionOption_Create()) {} + ~ListItemSwipeActionOption() + { + OH_ArkUI_ListItemSwipeActionOption_Dispose(_option); + } + + void SetStart(ArkUI_ListItemSwipeActionItem* item); + void SetEnd(ArkUI_ListItemSwipeActionItem* item); + void SetEdgeEffect(ArkUI_ListItemSwipeEdgeEffect edgeEffect); + int32_t GetEdgeEffect(); + void SetOnOffsetChange(OnOffsetChangeCallback callback); + void SetOnOffsetChangWithUserData(OnOffsetChangeWithUserDataCallback callback, void* userData); + + ArkUI_ListItemSwipeActionOption* GetOption() + { + return _option; + } + +private: + ArkUI_ListItemSwipeActionOption* _option; +}; + +class ListItemComponent : public Component { +public: + ListItemComponent() : Component(ARKUI_NODE_LIST_ITEM) {} + explicit ListItemComponent(ArkUI_NodeHandle handle) : Component(handle) {} + + void SetListItemSwiperAction(ListItemSwipeActionOption* option); + std::shared_ptr GetSwipeActionOption() const + { + return _swipeActionOption; + } + void ReleaseSwipeActionOption() + { + _swipeActionOption.reset(); + } + +private: + std::shared_ptr _swipeActionOption; +}; + +class ListChildrenMainSizeOption { +public: + ListChildrenMainSizeOption() : _option(OH_ArkUI_ListChildrenMainSizeOption_Create()) {} + ~ListChildrenMainSizeOption() + { + OH_ArkUI_ListChildrenMainSizeOption_Dispose(_option); + } + int32_t SetDefaultMainSize(float defaultMainSize); + float GetDefaultMainSize(); + void Resize(int32_t totalSize); + int32_t Splice(int32_t index, int32_t deleteCount, int32_t addCount); + int32_t UpdateSize(int32_t index, float mainSize); + float GetMainSize(int32_t index); + + ArkUI_ListChildrenMainSize* GetOption() + { + return _option; + } + +private: + ArkUI_ListChildrenMainSize* _option; +}; + +class ListItemGroupComponent : public Component { +public: + ListItemGroupComponent() : Component(ARKUI_NODE_LIST_ITEM_GROUP) {} + explicit ListItemGroupComponent(ArkUI_NodeHandle handle) : Component(handle) {} + + void SetListItemGroupHeader(Component* node); + void SetListItemGroupFooter(Component* node); + void SetListItemGroupDivider(uint32_t color, float width, float distanceStart, float distanceEnd); + void SetListItemGroupChildrenMainSize(ListChildrenMainSizeOption* mainSize); + + std::shared_ptr GetSizeOption() const + { + return _childrenMainSize; + } + void ReleaseSizeOption() + { + _childrenMainSize.reset(); + } + +private: + std::shared_ptr _childrenMainSize; +}; + +class ListItemGroupAdapter : public ItemAdapter { +public: + explicit ListItemGroupAdapter(std::vector>& dataSource, + const std::vector& groupList) + : ItemAdapter(dataSource) + { + OH_ArkUI_NodeAdapter_SetTotalNodeCount(_adapter, groupList.size()); + int32_t sum = 0; + for (auto& item : groupList) { + sum += item; + _groupList.push_back(sum); + } + } + virtual ~ListItemGroupAdapter() {} + +protected: + void OnNewItemAttached(ArkUI_NodeAdapterEvent* event) override; + void OnItemDetached(ArkUI_NodeAdapterEvent* event) override; + ArkUI_NodeHandle UpdateNewItemByGroup(int32_t start, int32_t end); + ArkUI_NodeHandle UpdateNewItem(int32_t start, int32_t end); + +private: + std::vector _groupList; + // 缓存listItemComponent + std::stack> _cachedListItems; + // 存储list嵌套的单个listItem + std::unordered_map> _listItems; +}; + +class ListComponent : public Component { +public: + ListComponent() : Component(ARKUI_NODE_LIST) {} + explicit ListComponent(ArkUI_NodeHandle handle) : Component(handle) {} + + // 引入懒加载模块。 + void SetLazyAdapter(const std::shared_ptr>& adapter) + { + ArkUI_AttributeItem item { nullptr, 0, nullptr, adapter->GetAdapter() }; + _nodeAPI->setAttribute(_component, NODE_LIST_NODE_ADAPTER, &item); + _adapter = adapter; + } + void SetLazyAdapterByGroup(const std::shared_ptr& adapter) + { + ArkUI_AttributeItem item { nullptr, 0, nullptr, adapter->GetAdapter() }; + _nodeAPI->setAttribute(_component, NODE_LIST_NODE_ADAPTER, &item); + _groupAdapter = adapter; + } + /** + * @param direction ArkUI_Axis + */ + void SetListDirection(int32_t direction); + /** + * @param stickyStyle ArkUI_StickyStyle + */ + void SetListSticky(int32_t stickyStyle); + void SetListSpace(float space); + void SetListCachedCount(int32_t count); + /** + * data[0].i32:The index value of the target element to be slid to in the current container.\n + * data[1]?.i32:Set whether there is an action when sliding to the index value of a list item in the list, where + * 1 indicates an action and 0 indicates no action. Default value: 0。\n + * data[2]?.i32:ArkUI_ScrollAlignment + */ + void SetListScrollToIndex(const std::vector& data); + /** + * @param align ArkUI_ListItemAlignment + */ + void SetListAlignListItem(int32_t align); + void SetListChildrenMainSize(ListChildrenMainSizeOption* mainSize); + void SetListInitialIndex(int32_t index); + void SetListDivider(uint32_t color, float width, float distanceStart, float distanceEnd); + + std::shared_ptr> GetAdapter() const + { + return _adapter; + } + std::shared_ptr GetGroupAdapter() const + { + return _groupAdapter; + } + std::shared_ptr GetSizeOption() const + { + return _childrenMainSize; + } + void ReleaseSizeOption() + { + _childrenMainSize.reset(); + } + +private: + std::shared_ptr> _adapter; + std::shared_ptr _groupAdapter; + std::shared_ptr _childrenMainSize; +}; +} // namespace ArkUICApiDemo +#endif // CAPIDEMO_LIST_COMPONENT_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/node_adapter.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/node_adapter.h new file mode 100644 index 00000000..8f4db32a --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/node_adapter.h @@ -0,0 +1,310 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_NODE_ADAPTER_H +#define ARKUI_CAPI_DEMO_NODE_ADAPTER_H + +#include +#include +#include +#include +#include +#include + +#include "column_component.h" +namespace ArkUICApiDemo { +using AllItemCallBack = std::function, uint32_t)>; + +template +class ItemAdapter { +public: + explicit ItemAdapter(std::vector>& dataSource); + virtual ~ItemAdapter(); + ArkUI_NodeAdapterHandle GetAdapter() const + { + return _adapter; + } + void RemoveItem(int32_t index); + void RemoveItems(int32_t startPosition, int32_t itemCount); + void InsertItem(int32_t index, const std::shared_ptr& value); + void InsertItems(int32_t index, std::vector>& dataSource); + void MoveItem(int32_t oldIndex, int32_t newIndex); + void ReloadItem(int32_t index, const std::shared_ptr& value); + void ReloadItems(int32_t startPosition, std::vector>& dataSource); + void ReloadAllItem(); + void SetAllItem(AllItemCallBack callback); + void UnregisterEventReceiver(); + void SetNodeAdapterEvent(const std::function& callback); + void RegisterRemovedNodeCallback(std::function)> callback) + { + _removedNodeCallback = callback; + } + void SetTotalNodeCount(uint32_t count) + { + OH_ArkUI_NodeAdapter_SetTotalNodeCount(_adapter, count); + } + uint32_t GetTotalNodeCount() + { + return OH_ArkUI_NodeAdapter_GetTotalNodeCount(_adapter); + } + +protected: + static void OnStaticAdapterEvent(ArkUI_NodeAdapterEvent* event); + virtual void OnAdapterEvent(ArkUI_NodeAdapterEvent* event); + // 分配ID给需要显示的Item,用于ReloadAllItems场景的元素diff。 + virtual void OnNewItemIdCreated(ArkUI_NodeAdapterEvent* event); + // 需要新的Item显示在可见区域。 + virtual void OnNewItemAttached(ArkUI_NodeAdapterEvent* event); + // Item从可见区域移除。 + virtual void OnItemDetached(ArkUI_NodeAdapterEvent* event); + + std::vector> _data; + ArkUI_NativeNodeAPI_1* _nodeAPI = nullptr; + ArkUI_NodeAdapterHandle _adapter = nullptr; + // 管理NodeAdapter生成的元素。 + std::unordered_map> _items; + // 管理回收复用组件池。 + std::stack> _cachedItems; + std::function _eventCallBack; + std::function)> _removedNodeCallback; +}; + +template +ItemAdapter::ItemAdapter(std::vector>& dataSource) + : _adapter(OH_ArkUI_NodeAdapter_Create()) +{ + // 使用NodeAdapter创建函数。 + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, _nodeAPI); + std::swap(_data, dataSource); + // 设置懒加载数据。 + OH_ArkUI_NodeAdapter_SetTotalNodeCount(_adapter, _data.size()); + // 设置懒加载回调事件。 + OH_ArkUI_NodeAdapter_RegisterEventReceiver(_adapter, this, OnStaticAdapterEvent); +} + +template +ItemAdapter::~ItemAdapter() +{ + // 释放创建的组件。 + while (!_cachedItems.empty()) { + _cachedItems.pop(); + } + _items.clear(); + // 释放Adapter相关资源。 + OH_ArkUI_NodeAdapter_UnregisterEventReceiver(_adapter); + OH_ArkUI_NodeAdapter_Dispose(_adapter); +} + +template +void ItemAdapter::RemoveItem(int32_t index) +{ + // 删除第index个数据。 + _data.erase(_data.begin() + index); + // 如果index会导致可视区域元素发生可见性变化,则会回调NODE_ADAPTER_EVENT_ON_REMOVE_NODE_FROM_ADAPTER事件删除元素, + // 根据是否有新增元素回调NODE_ADAPTER_EVENT_ON_GET_NODE_ID和NODE_ADAPTER_EVENT_ON_ADD_NODE_TO_ADAPTER事件。 + OH_ArkUI_NodeAdapter_RemoveItem(_adapter, index, 1); + // 更新新的数量。 + OH_ArkUI_NodeAdapter_SetTotalNodeCount(_adapter, _data.size()); +} + +template +void ItemAdapter::RemoveItems(int32_t startPosition, int32_t itemCount) +{ + auto end = _data.begin() + startPosition + itemCount; + if (startPosition + itemCount > _data.size()) { + end = _data.end(); + } + _data.erase(_data.begin() + startPosition, end); + OH_ArkUI_NodeAdapter_RemoveItem(_adapter, startPosition, itemCount); + // 更新新的数量。 + OH_ArkUI_NodeAdapter_SetTotalNodeCount(_adapter, _data.size()); +} + +template +void ItemAdapter::InsertItem(int32_t index, const std::shared_ptr& value) +{ + _data.insert(_data.begin() + index, value); + // 如果index会导致可视区域元素发生可见性变化,则会回调NODE_ADAPTER_EVENT_ON_GET_NODE_ID和NODE_ADAPTER_EVENT_ON_ADD_NODE_TO_ADAPTER事件, + // 根据是否有删除元素回调NODE_ADAPTER_EVENT_ON_REMOVE_NODE_FROM_ADAPTER事件。 + OH_ArkUI_NodeAdapter_InsertItem(_adapter, index, 1); + // 更新新的数量。 + OH_ArkUI_NodeAdapter_SetTotalNodeCount(_adapter, _data.size()); +} + +template +void ItemAdapter::InsertItems(int32_t index, std::vector>& dataSource) +{ + _data.insert(_data.begin() + index, dataSource.begin(), dataSource.end()); + OH_ArkUI_NodeAdapter_InsertItem(_adapter, index, dataSource.size()); + OH_ArkUI_NodeAdapter_SetTotalNodeCount(_adapter, _data.size()); +} + +template +void ItemAdapter::MoveItem(int32_t oldIndex, int32_t newIndex) +{ + auto temp = _data[oldIndex]; + _data.insert(_data.begin() + newIndex, temp); + _data.erase(_data.begin() + oldIndex); + // 移到位置如果未发生可视区域内元素的可见性变化,则不回调事件,反之根据新增和删除场景回调对应的事件。 + OH_ArkUI_NodeAdapter_MoveItem(_adapter, oldIndex, newIndex); +} + +template +void ItemAdapter::ReloadItem(int32_t index, const std::shared_ptr& value) +{ + _data[index] = value; + // 如果index位于可视区域内,先回调NODE_ADAPTER_EVENT_ON_REMOVE_NODE_FROM_ADAPTER删除老元素, + // 再回调NODE_ADAPTER_EVENT_ON_GET_NODE_ID和NODE_ADAPTER_EVENT_ON_ADD_NODE_TO_ADAPTER事件。 + OH_ArkUI_NodeAdapter_ReloadItem(_adapter, index, 1); +} + +template +void ItemAdapter::ReloadItems(int32_t startPosition, std::vector>& dataSource) +{ + if (startPosition + dataSource.size() > _data.size()) { + // 防止nodeAdapter崩溃 + return; + } + for (int32_t i = 0; i < dataSource.size(); i++) { + _data[startPosition + i] = dataSource[i]; + } + // 如果index位于可视区域内,先回调NODE_ADAPTER_EVENT_ON_REMOVE_NODE_FROM_ADAPTER删除老元素, + // 再回调NODE_ADAPTER_EVENT_ON_GET_NODE_ID和NODE_ADAPTER_EVENT_ON_ADD_NODE_TO_ADAPTER事件。 + OH_ArkUI_NodeAdapter_ReloadItem(_adapter, startPosition, dataSource.size()); +} + +template +void ItemAdapter::SetAllItem(AllItemCallBack callback) +{ + ArkUI_NodeHandle* items = nullptr; + uint32_t size = 0; + OH_ArkUI_NodeAdapter_GetAllItems(_adapter, &items, &size); + for (uint32_t i = 0; i < size; i++) { + if (!items[i]) { + continue; + } + auto temp = std::make_shared(items[i]); + if (callback) { + callback(temp, i); + } + } +} + +template +void ItemAdapter::UnregisterEventReceiver() +{ + OH_ArkUI_NodeAdapter_UnregisterEventReceiver(_adapter); +} + +template +void ItemAdapter::SetNodeAdapterEvent(const std::function& callback) +{ + _eventCallBack = callback; +} + +template +void ItemAdapter::ReloadAllItem() +{ + std::reverse(_data.begin(), _data.end()); + // 全部重新加载场景下,会回调NODE_ADAPTER_EVENT_ON_GET_NODE_ID接口获取新的组件ID, + // 根据新的组件ID进行对比,ID不发生变化的进行复用, + // 针对新增ID的元素,调用NODE_ADAPTER_EVENT_ON_ADD_NODE_TO_ADAPTER事件创建新的组件, + // 然后判断老数据中遗留的未使用ID,调用NODE_ADAPTER_EVENT_ON_REMOVE_NODE_FROM_ADAPTER删除老元素。 + OH_ArkUI_NodeAdapter_ReloadAllItems(_adapter); +} + +template +void ItemAdapter::OnStaticAdapterEvent(ArkUI_NodeAdapterEvent* event) +{ + // 获取实例对象,回调实例事件。 + auto itemAdapter = reinterpret_cast(OH_ArkUI_NodeAdapterEvent_GetUserData(event)); + itemAdapter->OnAdapterEvent(event); +} + +template +void ItemAdapter::OnAdapterEvent(ArkUI_NodeAdapterEvent* event) +{ + auto type = OH_ArkUI_NodeAdapterEvent_GetType(event); + switch (type) { + case NODE_ADAPTER_EVENT_WILL_ATTACH_TO_NODE: + break; + case NODE_ADAPTER_EVENT_WILL_DETACH_FROM_NODE: + break; + case NODE_ADAPTER_EVENT_ON_GET_NODE_ID: + OnNewItemIdCreated(event); + break; + case NODE_ADAPTER_EVENT_ON_ADD_NODE_TO_ADAPTER: + OnNewItemAttached(event); + break; + case NODE_ADAPTER_EVENT_ON_REMOVE_NODE_FROM_ADAPTER: + OnItemDetached(event); + break; + default: + break; + } + if (_eventCallBack) { + _eventCallBack(event); + } +} +template +void ItemAdapter::OnNewItemIdCreated(ArkUI_NodeAdapterEvent* event) +{ + auto index = OH_ArkUI_NodeAdapterEvent_GetItemIndex(event); + static std::hash hashId = std::hash(); + auto id = hashId(std::to_string(index)); + OH_ArkUI_NodeAdapterEvent_SetNodeId(event, id); +} + +// 需要新的Item显示在可见区域。 +template +void ItemAdapter::OnNewItemAttached(ArkUI_NodeAdapterEvent* event) +{ + auto index = OH_ArkUI_NodeAdapterEvent_GetItemIndex(event); + ArkUI_NodeHandle handle = nullptr; + auto showNode = _data[index]; + if (!_cachedItems.empty()) { + // 使用并更新回收复用的缓存。 + auto recycledItem = _cachedItems.top(); + recycledItem->RemoveAll(); + recycledItem->AddChild(showNode); + handle = recycledItem->GetComponent(); + // 释放缓存池的引用。 + _cachedItems.pop(); + } else { + // 创建新的元素。 + auto flowItem = std::make_shared(); + flowItem->RemoveAll(); + flowItem->AddChild(showNode); + handle = flowItem->GetComponent(); + // 保持文本列表项的引用。 + _items.emplace(handle, flowItem); + } + // 设置需要展示的元素。 + OH_ArkUI_NodeAdapterEvent_SetItem(event, handle); +} + +// Item从可见区域移除。 +template +void ItemAdapter::OnItemDetached(ArkUI_NodeAdapterEvent* event) +{ + auto item = OH_ArkUI_NodeAdapterEvent_GetRemovedNode(event); + if (_removedNodeCallback) { + _removedNodeCallback(std::make_shared(item)); + } + // 放置到缓存池中进行回收复用。 + _cachedItems.emplace(_items[item]); +} +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_NODE_ADAPTER_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/radio_component.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/component/radio_component.cpp new file mode 100644 index 00000000..975473d6 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/radio_component.cpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2024 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 "radio_component.h" + +#include + +namespace ArkUICApiDemo { +constexpr size_t ALLOW_SIZE_3 = 3; +void RadioComponent::SetChecked(const bool& isChecked) +{ + ArkUI_NumberValue value[] = { { .i32 = static_cast(isChecked) } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_RADIO_CHECKED, &item); +} +void RadioComponent::SetGroup(const std::string& group) +{ + ArkUI_AttributeItem item = { .string = group.c_str() }; + _nodeAPI->setAttribute(_component, NODE_RADIO_GROUP, &item); +} +void RadioComponent::SetStyled(const uint32_t* colorArray, size_t size) +{ + if (size == ALLOW_SIZE_3) { + ArkUI_NumberValue radioStyle_value[] = { { .u32 = colorArray[0] }, { .u32 = colorArray[1] }, + { .u32 = colorArray[2] } }; + ArkUI_AttributeItem radioStyle_value_item = { radioStyle_value, ALLOW_SIZE_3 }; + _nodeAPI->setAttribute(_component, NODE_RADIO_STYLE, &radioStyle_value_item); + } +} +void RadioComponent::SetValue(const std::string& value) +{ + ArkUI_AttributeItem item = { .string = value.c_str() }; + _nodeAPI->setAttribute(_component, NODE_RADIO_VALUE, &item); +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/radio_component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/radio_component.h new file mode 100644 index 00000000..b4023919 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/radio_component.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_RADIO_COMPONENT_H +#define ARKUI_CAPI_DEMO_RADIO_COMPONENT_H + +#include +#include + +#include "component.h" + +namespace ArkUICApiDemo { +class RadioComponent : public Component { +public: + RadioComponent() : Component(ARKUI_NODE_RADIO) {} + explicit RadioComponent(ArkUI_NodeHandle handle) : Component(handle) {} + + void SetChecked(const bool& isChecked); + void SetGroup(const std::string& group); + void SetStyled(const uint32_t* colorArray, size_t size); + void SetValue(const std::string& value); +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_RADIO_COMPONENT_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/refresh_component.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/component/refresh_component.cpp new file mode 100644 index 00000000..06f55393 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/refresh_component.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2024 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 "refresh_component.h" + +#include + +namespace ArkUICApiDemo { + +void RefreshComponent::SetPullToRefresh(int32_t pullToRefresh) +{ + ArkUI_NumberValue value[] = { { .i32 = pullToRefresh } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_REFRESH_PULL_TO_REFRESH, &item); +} +void RefreshComponent::SetPullDownRatio(float pullDownRatio) +{ + ArkUI_NumberValue value[] = { { .f32 = pullDownRatio } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_REFRESH_PULL_DOWN_RATIO, &item); +} +void RefreshComponent::SetRefreshOffset(float refreshOffset) +{ + ArkUI_NumberValue value[] = { { .f32 = refreshOffset } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_REFRESH_OFFSET, &item); +} +void RefreshComponent::SetRefreshing(bool refreshing) +{ + ArkUI_NumberValue value[] = { { .i32 = refreshing } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_REFRESH_REFRESHING, &item); +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/refresh_component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/refresh_component.h new file mode 100644 index 00000000..69288ede --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/refresh_component.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_REFRESH_COMPONENT_H +#define ARKUI_CAPI_DEMO_REFRESH_COMPONENT_H + +#include + +#include "component.h" + +namespace ArkUICApiDemo { +class RefreshComponent : public Component { +public: + RefreshComponent() : Component(ARKUI_NODE_REFRESH) {} + explicit RefreshComponent(ArkUI_NodeHandle handle) : Component(handle) {} + void SetPullToRefresh(int32_t pullToRefresh); + void SetPullDownRatio(float pullDownRatio); + void SetRefreshOffset(float refreshOffset); + void SetRefreshing(bool refreshing); +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_REFRESH_COMPONENT_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/relativecontainer_component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/relativecontainer_component.h new file mode 100644 index 00000000..12bb583e --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/relativecontainer_component.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_RELATIVECONTAINER_COMPONENT_H +#define ARKUI_CAPI_DEMO_RELATIVECONTAINER_COMPONENT_H + +#include +#include + +#include "./relativeContainer/ruleOption.h" +#include "component.h" +namespace ArkUICApiDemo { +class RelativeContainerComponent : public Component { +public: + RelativeContainerComponent() : Component(ARKUI_NODE_RELATIVE_CONTAINER) {} + explicit RelativeContainerComponent(ArkUI_NodeHandle handle) : Component(handle) {} + + void SetRelativeContainerGuideLine(const std::shared_ptr guidelineOption) + { + ArkUI_AttributeItem item = { .object = guidelineOption->GetOption() }; + _nodeAPI->setAttribute(_component, NODE_RELATIVE_CONTAINER_GUIDE_LINE, &item); + guidelineOption_ = guidelineOption; + } + + void SetRelativeContainerBarrier(const std::shared_ptr barrierOption) + { + ArkUI_AttributeItem item = { .object = barrierOption->GetOption() }; + _nodeAPI->setAttribute(_component, NODE_RELATIVE_CONTAINER_BARRIER, &item); + barrierOption_ = barrierOption; + } + + std::shared_ptr GetRuleOption() const + { + return ruleOption_; + } + std::shared_ptr GetGuideLineOption() const + { + return guidelineOption_; + } + std::shared_ptr GetBarrierOption() const + { + return barrierOption_; + } + +private: + std::shared_ptr ruleOption_ = nullptr; + std::shared_ptr guidelineOption_ = nullptr; + std::shared_ptr barrierOption_ = nullptr; +}; +; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_RELATIVECONTAINER_COMPONENT_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/row_component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/row_component.h new file mode 100644 index 00000000..89e04a03 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/row_component.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_ROW_COMPONENT_H +#define ARKUI_CAPI_DEMO_ROW_COMPONENT_H + +#include "component.h" +namespace ArkUICApiDemo { +class RowComponent : public Component { +public: + RowComponent() : Component(ARKUI_NODE_ROW) {} + explicit RowComponent(ArkUI_NodeHandle handle) : Component(handle) {} + + void SetAlignItems(int32_t verticalAlign) + { + ArkUI_NumberValue value[] = { { .i32 = verticalAlign } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_ROW_ALIGN_ITEMS, &item); + } + void SetJustifyContent(int32_t flexAlign) + { + ArkUI_NumberValue value[] = { { .i32 = flexAlign } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_ROW_JUSTIFY_CONTENT, &item); + } +}; +} // namespace ArkUICApiDemo + +#endif // ARKUI_CAPI_DEMO_ROW_COMPONENT_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/scroll_component.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/component/scroll_component.cpp new file mode 100644 index 00000000..5575c157 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/scroll_component.cpp @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2024 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 "scroll_component.h" +namespace ArkUICApiDemo { + +void ScrollComponent::SetScrollScrollBar(int32_t barState) +{ + ArkUI_NumberValue value[] = { { .i32 = barState } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_BAR_DISPLAY_MODE, &item); +} +void ScrollComponent::SetScrollScrollBarWidth(float width) +{ + ArkUI_NumberValue value[] = { { .f32 = width } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_BAR_WIDTH, &item); +} +void ScrollComponent::SetScrollScrollBarColor(uint32_t color) +{ + ArkUI_NumberValue value[] = { { .u32 = color } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_BAR_COLOR, &item); +} +void ScrollComponent::SetScrollScrollable(int32_t scrollable) +{ + ArkUI_NumberValue value[] = { { .i32 = scrollable } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_SCROLL_DIRECTION, &item); +} +void ScrollComponent::SetScrollEdgeEffect(int32_t edgeEffect, bool alwaysEnabled) +{ + ArkUI_NumberValue value[] = { { .i32 = edgeEffect }, { .i32 = alwaysEnabled } }; + ArkUI_AttributeItem item = { value, 2 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_EDGE_EFFECT, &item); +} +void ScrollComponent::SetScrollEnableScrollInteraction(bool enableScrollInteraction) +{ + ArkUI_NumberValue value[] = { { .i32 = enableScrollInteraction } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_ENABLE_SCROLL_INTERACTION, &item); +} +void ScrollComponent::SetScrollFriction(float friction) +{ + ArkUI_NumberValue value[] = { { .f32 = friction } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_FRICTION, &item); +} +void ScrollComponent::SetScrollScrollSnap( + int32_t snapAlign, int32_t enableSnapToStart, int32_t enableSnapToEnd, const std::vector& pagination) +{ + auto value = new ArkUI_NumberValue[3 + static_cast(pagination.size())]; + value[0] = { .i32 = snapAlign }; + value[1] = { .i32 = enableSnapToStart }; + value[2] = { .i32 = enableSnapToEnd }; + for (int32_t i = 0; i < pagination.size(); i++) { + value[3 + i] = { .f32 = pagination[i] }; + } + ArkUI_AttributeItem item = { value, 3 + static_cast(pagination.size()) }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_SNAP, &item); +} +void ScrollComponent::SetScrollNestedScroll(int32_t forward, int32_t backward) +{ + ArkUI_NumberValue value[] = { { .i32 = forward }, { .i32 = backward } }; + ArkUI_AttributeItem item = { value, 2 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_NESTED_SCROLL, &item); +} +void ScrollComponent::SetScrollTo(float hOffset, float vOffset, const std::vector& optionalParams) +{ + auto value = new ArkUI_NumberValue[2 + static_cast(optionalParams.size())]; + value[0] = { .f32 = hOffset }; + value[1] = { .f32 = vOffset }; + for (int32_t i = 0; i < optionalParams.size(); i++) { + value[2 + i] = { .i32 = optionalParams[i] }; + } + ArkUI_AttributeItem item = { value, 2 + static_cast(optionalParams.size()) }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_OFFSET, &item); +} +void ScrollComponent::SetScrollEdge(int32_t type) +{ + ArkUI_NumberValue value[] = { { .i32 = type } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_EDGE, &item); +} +void ScrollComponent::SetScrollEnablePaging(int32_t enablePaging) +{ + ArkUI_NumberValue value[] = { { .i32 = enablePaging } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_ENABLE_PAGING, &item); +} +void ScrollComponent::SetScrollPage(int32_t next) +{ + ArkUI_NumberValue value[] = { { .i32 = next } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_PAGE, &item); +} +void ScrollComponent::SetScrollPage(int32_t next, int32_t animation) +{ + ArkUI_NumberValue value[] = { { .i32 = next }, { .i32 = animation } }; + ArkUI_AttributeItem item = { value, 2 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_PAGE, &item); +} +void ScrollComponent::SetScrollBy(float hDistance, float vDistance) +{ + ArkUI_NumberValue value[] = { { .f32 = hDistance }, { .f32 = vDistance } }; + ArkUI_AttributeItem item = { value, 2 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_BY, &item); +} +void ScrollComponent::SetScrollScrollDirection(int32_t direction) +{ + ArkUI_NumberValue value[] = { { .i32 = direction } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_SCROLL_DIRECTION, &item); +} +void ScrollComponent::AddChildWithNumber(int32_t number, ArkUI_NodeType type) +{ + SetBorderWidth(2); + auto node = std::make_shared(type); + if (type == ARKUI_NODE_LIST) { + ArkUI_NumberValue value[] = { { .i32 = ARKUI_AXIS_HORIZONTAL } }; + ArkUI_AttributeItem item = { value, 1 }; + node->setAttribute(NODE_LIST_DIRECTION, &item); + node->SetMargin(DEFAULT_MARGIN); + } + for (int32_t i = 0; i < number; ++i) { + auto column = std::make_shared(ARKUI_NODE_COLUMN); + column->SetWidth(SIZE_50); + column->SetHeight(SIZE_50); + column->SetMargin(DEFAULT_MARGIN); + if (number == 0) { + number = 1; + } + column->SetBackgroundColor((i * 0xFFFFFF / number) | 0xFF000000); + node->AddChild(column); + } + AddChild(node); +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/scroll_component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/scroll_component.h new file mode 100644 index 00000000..52cb6ffe --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/scroll_component.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2024 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 CAPIDEMO_SCROLL_COMPONENT_H +#define CAPIDEMO_SCROLL_COMPONENT_H + +#include "component.h" + +namespace ArkUICApiDemo { +class ScrollComponent : public Component { +public: + ScrollComponent() : Component(ARKUI_NODE_SCROLL) {} + explicit ScrollComponent(ArkUI_NodeHandle handle) : Component(handle) {} + + void SetScrollScrollBar(int32_t barState); + void SetScrollScrollBarWidth(float width); + void SetScrollScrollBarColor(uint32_t color); + void SetScrollScrollable(int32_t scrollable); + void SetScrollEdgeEffect(int32_t edgeEffect, bool alwaysEnabled); + void SetScrollEnableScrollInteraction(bool enableScrollInteraction); + void SetScrollFriction(float friction); + void SetScrollScrollSnap( + int32_t snapAlign, int32_t enableSnapToStart, int32_t enableSnapToEnd, const std::vector& pagination); + void SetScrollNestedScroll(int32_t forward, int32_t backward); + /** + * @brief Set the scroll position to the specified offset. + * @param hOffset horizontal scrolling offset + * @param vOffset vertical scrolling offset + * @param optionalParams + * [0] scrolling duration, in milliseconds. + * [1] scrolling curve. The parameter type is ArkUI_AnimationCurve. + * [2] whether to enable the default spring animation. + * [3] sets whether scrolling can cross the boundary. + */ + void SetScrollTo(float hOffset, float vOffset, const std::vector& optionalParams); + void SetScrollEdge(int32_t type); + void SetScrollEnablePaging(int32_t enablePaging); + void SetScrollPage(int32_t next); + void SetScrollPage(int32_t next, int32_t animation); + void SetScrollBy(float hDistance, float vDistance); + void SetScrollScrollDirection(int32_t direction); + void AddChildWithNumber(int32_t number, ArkUI_NodeType type); +}; +} // namespace ArkUICApiDemo +#endif // CAPIDEMO_SCROLL_COMPONENT_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/swiper_component.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/component/swiper_component.cpp new file mode 100644 index 00000000..9500a64a --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/swiper_component.cpp @@ -0,0 +1,175 @@ +/* + * Copyright (c) 2024 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 "swiper_component.h" + +namespace ArkUICApiDemo { + +void SwiperComponent::SetSwiperLoop(int32_t loop) +{ + ArkUI_NumberValue value[] = { { .i32 = loop } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SWIPER_LOOP, &item); +} + +void SwiperComponent::SetSwiperAutoPlay(int32_t playValue) +{ + ArkUI_NumberValue value[] = { { .i32 = playValue } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SWIPER_AUTO_PLAY, &item); +} + +void SwiperComponent::SetSwiperPrevMigration(float migration, int32_t ignoreBlank) +{ + ArkUI_NumberValue value[] = { { .f32 = migration }, { .i32 = ignoreBlank } }; + ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue) }; + _nodeAPI->setAttribute(_component, NODE_SWIPER_PREV_MARGIN, &item); +} + +void SwiperComponent::SetSwiperNextMigration(float migration, int32_t ignoreBlank) +{ + ArkUI_NumberValue value[] = { { .f32 = migration }, { .i32 = ignoreBlank } }; + ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue) }; + _nodeAPI->setAttribute(_component, NODE_SWIPER_NEXT_MARGIN, &item); +} + +void SwiperComponent::SetSwiperDisplayCount(int32_t count) +{ + ArkUI_NumberValue value[] = { { .i32 = count } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SWIPER_DISPLAY_COUNT, &item); +} + +void SwiperComponent::SetSwiperIndex(int32_t index) +{ + ArkUI_NumberValue value[] = { { .i32 = index } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SWIPER_INDEX, &item); +} + +void SwiperComponent::SetSwiperVertical(int32_t index) +{ + ArkUI_NumberValue value[] = { { .i32 = index } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SWIPER_VERTICAL, &item); +} + +void SwiperComponent::SetSwiperEffectMode(int32_t effect) +{ + ArkUI_NumberValue value[] = { { .i32 = effect } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SWIPER_EDGE_EFFECT_MODE, &item); +} + +void SwiperComponent::SetSwiperNestedScroll(int32_t nestedScroll) +{ + ArkUI_NumberValue value[] = { { .i32 = nestedScroll } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SWIPER_NESTED_SCROLL, &item); +} + +void SwiperComponent::SetSwiperInterval(float interval) +{ + ArkUI_NumberValue value[] = { { .f32 = interval } }; + ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue) }; + _nodeAPI->setAttribute(_component, NODE_SWIPER_INTERVAL, &item); +} + +void SwiperComponent::SetSwiperDirection(int32_t direction) +{ + ArkUI_NumberValue value[] = { { .i32 = direction } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_DIRECTION, &item); +} + +void SwiperComponent::SetSwiperIndicator(ArkUI_SwiperIndicator* indicator) +{ + ArkUI_NumberValue indicator_value[] = { { .i32 = ARKUI_SWIPER_INDICATOR_TYPE_DOT } }; + ArkUI_AttributeItem indicator_item = { indicator_value, sizeof(indicator_value) / sizeof(ArkUI_NumberValue), "", + indicator }; + _nodeAPI->setAttribute(_component, NODE_SWIPER_INDICATOR, &indicator_item); +} + +void SwiperComponent::SetSwiperToIndex(int32_t index, int32_t useAnimation) +{ + ArkUI_NumberValue value[] = { { .i32 = index }, { .i32 = useAnimation } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SWIPER_SWIPE_TO_INDEX, &item); +} + +void SwiperComponent::RegisterOnGesture(const std::function& onGesture) +{ + onGesture_ = onGesture; + _nodeAPI->registerNodeEvent(_component, NODE_SWIPER_EVENT_ON_GESTURE_SWIPE, 0, nullptr); +} + +void SwiperComponent::RegisterOnChange(const std::function& onChange) +{ + onChange_ = onChange; + _nodeAPI->registerNodeEvent(_component, NODE_SWIPER_EVENT_ON_CHANGE, 0, nullptr); +} + +void SwiperComponent::RegisterOnDidScrollContext(const std::function& onDid) +{ + onDid_ = onDid; + _nodeAPI->registerNodeEvent(_component, NODE_SWIPER_EVENT_ON_CONTENT_DID_SCROLL, 0, nullptr); +} + +void SwiperComponent::RegisterOnAnimationStart(const std::function& onStart) +{ + onStart_ = onStart; + _nodeAPI->registerNodeEvent(_component, NODE_SWIPER_EVENT_ON_ANIMATION_START, 0, nullptr); +} + +void SwiperComponent::RegisterOnAnimationEnd(const std::function& onEnd) +{ + onEnd_ = onEnd; + _nodeAPI->registerNodeEvent(_component, NODE_SWIPER_EVENT_ON_ANIMATION_END, 0, nullptr); +} + +void SwiperComponent::OnNodeEvent(ArkUI_NodeEvent* event) +{ + auto eventType = OH_ArkUI_NodeEvent_GetEventType(event); + switch (eventType) { + case NODE_SWIPER_EVENT_ON_GESTURE_SWIPE: + if (onGesture_) { + onGesture_(event); + } + break; + case NODE_SWIPER_EVENT_ON_CHANGE: + if (onChange_) { + onChange_(event); + } + break; + case NODE_SWIPER_EVENT_ON_CONTENT_DID_SCROLL: + if (onDid_) { + onDid_(event); + } + break; + case NODE_SWIPER_EVENT_ON_ANIMATION_START: + if (onStart_) { + onStart_(event); + } + break; + case NODE_SWIPER_EVENT_ON_ANIMATION_END: + if (onEnd_) { + onEnd_(event); + } + break; + default: + break; + } +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/swiper_component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/swiper_component.h new file mode 100644 index 00000000..f8ee03c9 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/swiper_component.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2024 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 CAPIDEMO_SWIPER_COMPONENT_H +#define CAPIDEMO_SWIPER_COMPONENT_H + +#include + +#include "component.h" +#include "node_adapter.h" + +namespace ArkUICApiDemo { +class SwiperComponent : public Component { +public: + SwiperComponent() : Component(ARKUI_NODE_SWIPER) {} + explicit SwiperComponent(ArkUI_NodeHandle handle) : Component(handle) {} + + void SetSwiperLoop(int32_t loop); + void SetSwiperAutoPlay(int32_t playValue); + void SetSwiperPrevMigration(float migration, int32_t ignoreBlank = false); + void SetSwiperNextMigration(float migration, int32_t ignoreBlank = false); + void SetSwiperDisplayCount(int32_t count); + void SetSwiperIndex(int32_t index); + void SetSwiperVertical(int32_t index); + void SetSwiperNestedScroll(int32_t nestedScroll); + void SetSwiperEffectMode(int32_t effect); + void SetSwiperInterval(float interval); + void SetSwiperDirection(int32_t direction); + void SetSwiperIndicator(ArkUI_SwiperIndicator* indicator); + void SetSwiperToIndex(int32_t index, int32_t useAnimation = false); + void RegisterOnGesture(const std::function& onGesture); + void RegisterOnChange(const std::function& onChange); + void RegisterOnDidScrollContext(const std::function& onDid); + void RegisterOnAnimationStart(const std::function& onStart); + void RegisterOnAnimationEnd(const std::function& onEnd); + void OnNodeEvent(ArkUI_NodeEvent* event) override; + + std::function onGesture_; + std::function onDid_; + std::function onChange_; + std::function onStart_; + std::function onEnd_; +}; +} // namespace ArkUICApiDemo +#endif // CAPIDEMO_SWIPER_COMPONENT_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/text_component.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/component/text_component.cpp new file mode 100644 index 00000000..7d7de2b2 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/text_component.cpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2024 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 "text_component.h" + +namespace ArkUICApiDemo { + +void TextComponent::SetFontSize(float fontSize) +{ + ArkUI_NumberValue value[] = { { .f32 = fontSize } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_FONT_SIZE, &item); +} +void TextComponent::SetFontColor(uint32_t color) +{ + ArkUI_NumberValue value[] = { { .u32 = color } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_FONT_COLOR, &item); +} +void TextComponent::SetTextContent(const std::string& content) +{ + ArkUI_AttributeItem item = { nullptr, 0, content.c_str() }; + _nodeAPI->setAttribute(_component, NODE_TEXT_CONTENT, &item); +} +void TextComponent::SetTextAlign(ArkUI_TextAlignment align) +{ + ArkUI_NumberValue value[] = { { .i32 = align } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_TEXT_ALIGN, &item); +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/text_component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/text_component.h new file mode 100644 index 00000000..ce370faa --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/text_component.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_TEXT_COMPONENT_H +#define ARKUI_CAPI_DEMO_TEXT_COMPONENT_H + +#include + +#include "component.h" + +namespace ArkUICApiDemo { +class TextComponent : public Component { +public: + TextComponent() : Component(ARKUI_NODE_TEXT) {} + explicit TextComponent(ArkUI_NodeHandle handle) : Component(handle) {} + void SetFontSize(float fontSize) override; + void SetFontColor(uint32_t color); + void SetTextContent(const std::string& content); + void SetTextAlign(ArkUI_TextAlignment align); +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_TEXT_COMPONENT_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/waterflow_component.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/component/waterflow_component.cpp new file mode 100644 index 00000000..05fd85f3 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/waterflow_component.cpp @@ -0,0 +1,296 @@ +/* + * Copyright (c) 2024 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 "waterflow_component.h" + +namespace ArkUICApiDemo { + +void WaterFlowSectionOption::SetSection(int32_t index, WaterFlowSection section) +{ + OH_ArkUI_WaterFlowSectionOption_SetItemCount(_option, index, section.itemsCount); + OH_ArkUI_WaterFlowSectionOption_SetCrossCount(_option, index, section.crossCount); + OH_ArkUI_WaterFlowSectionOption_SetColumnGap(_option, index, section.columnsGap); + OH_ArkUI_WaterFlowSectionOption_SetRowGap(_option, index, section.rowsGap); + OH_ArkUI_WaterFlowSectionOption_SetMargin( + _option, index, section.margin.top, section.margin.right, section.margin.bottom, section.margin.left); + OH_ArkUI_WaterFlowSectionOption_RegisterGetItemMainSizeCallbackByIndex( + _option, index, section.onGetItemMainSizeByIndex); +} +WaterFlowSection WaterFlowSectionOption::GetSection(int32_t index) +{ + return { OH_ArkUI_WaterFlowSectionOption_GetItemCount(_option, index), + OH_ArkUI_WaterFlowSectionOption_GetCrossCount(_option, index), + OH_ArkUI_WaterFlowSectionOption_GetColumnGap(_option, index), + OH_ArkUI_WaterFlowSectionOption_GetRowGap(_option, index), + OH_ArkUI_WaterFlowSectionOption_GetMargin(_option, index) }; +} + +void WaterFlowSectionOption::SetSize(int32_t size) +{ + OH_ArkUI_WaterFlowSectionOption_SetSize(_option, size); +} +int32_t WaterFlowSectionOption::GetSize() +{ + return OH_ArkUI_WaterFlowSectionOption_GetSize(_option); +} + +void WaterFlowComponent::SetLayoutDirection(int32_t layoutDirection) +{ + ArkUI_NumberValue value[] = { { .i32 = layoutDirection } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_WATER_FLOW_LAYOUT_DIRECTION, &item); +} + +void WaterFlowComponent::SetColumnsTemplate(const std::string& str) +{ + ArkUI_AttributeItem item = { .string = str.c_str() }; + _nodeAPI->setAttribute(_component, NODE_WATER_FLOW_COLUMN_TEMPLATE, &item); +} + +void WaterFlowComponent::SetRowsTemplate(const std::string& str) +{ + ArkUI_AttributeItem item = { .string = str.c_str() }; + _nodeAPI->setAttribute(_component, NODE_WATER_FLOW_ROW_TEMPLATE, &item); +} + +void WaterFlowComponent::SetWaterFlowColumnsGap(float val) +{ + ArkUI_NumberValue value[] = { { .f32 = val } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_WATER_FLOW_COLUMN_GAP, &item); +} + +void WaterFlowComponent::SetWaterFlowRowsGap(float val) +{ + ArkUI_NumberValue value[] = { { .f32 = val } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_WATER_FLOW_ROW_GAP, &item); +} + +void WaterFlowComponent::SetWaterFlowSectionOption(int32_t start, const std::shared_ptr& option) +{ + ArkUI_NumberValue value[] = { { .i32 = start } }; + ArkUI_AttributeItem item = { value, 1, nullptr, option->GetOption() }; + _nodeAPI->setAttribute(_component, NODE_WATER_FLOW_SECTION_OPTION, &item); + _sectionsOption = option; +} + +void WaterFlowComponent::SetWaterFlowCachedCount(int32_t cachedCount) +{ + ArkUI_NumberValue value[] = { { .i32 = cachedCount } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_WATER_FLOW_CACHED_COUNT, &item); +} + +void WaterFlowComponent::SetWaterFlowFooter(ArkUI_NodeHandle node) +{ + ArkUI_AttributeItem item = { .object = node }; + _nodeAPI->setAttribute(_component, NODE_WATER_FLOW_FOOTER, &item); +} + +void WaterFlowComponent::SetWaterFlowScrollToIndex(int32_t index) +{ + ArkUI_NumberValue value[] = { { .i32 = index } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_WATER_FLOW_SCROLL_TO_INDEX, &item); +} + +void WaterFlowComponent::SetWaterFlowScrollToIndex(int32_t index, int32_t animation) +{ + ArkUI_NumberValue value[] = { { .i32 = index }, { .i32 = animation } }; + ArkUI_AttributeItem item = { value, 2 }; + _nodeAPI->setAttribute(_component, NODE_WATER_FLOW_SCROLL_TO_INDEX, &item); +} + +void WaterFlowComponent::SetWaterFlowScrollToIndex(int32_t index, int32_t animation, int32_t alignment) +{ + ArkUI_NumberValue value[] = { { .i32 = index }, { .i32 = animation }, { .i32 = alignment } }; + ArkUI_AttributeItem item = { value, 3 }; + _nodeAPI->setAttribute(_component, NODE_WATER_FLOW_SCROLL_TO_INDEX, &item); +} + +void WaterFlowComponent::SetItemConstraintSize(float minWidth, float maxWidth, float minHeight, float maxHeight) +{ + ArkUI_NumberValue value[] = { { .f32 = minWidth }, { .f32 = maxWidth }, { .f32 = minHeight }, + { .f32 = maxHeight } }; + ArkUI_AttributeItem item = { value, 4 }; + _nodeAPI->setAttribute(_component, NODE_WATER_FLOW_ITEM_CONSTRAINT_SIZE, &item); +} +void WaterFlowComponent::SetWaterFlowNestedScroll(int32_t forward, int32_t backward) +{ + ArkUI_NumberValue value[] = { { .i32 = forward }, { .i32 = backward } }; + ArkUI_AttributeItem item = { value, 2 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_NESTED_SCROLL, &item); +} +void WaterFlowComponent::SetWaterFlowScrollBar(int32_t barState) +{ + ArkUI_NumberValue value[] = { { .i32 = barState } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_BAR_DISPLAY_MODE, &item); +} +void WaterFlowComponent::SetWaterFlowScrollBarWidth(float width) +{ + ArkUI_NumberValue value[] = { { .f32 = width } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_BAR_WIDTH, &item); +} +void WaterFlowComponent::SetWaterFlowScrollBarColor(uint32_t color) +{ + ArkUI_NumberValue value[] = { { .u32 = color } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_BAR_COLOR, &item); +} +void WaterFlowComponent::SetWaterFlowEnableScrollInteraction(bool enableScrollInteraction) +{ + ArkUI_NumberValue value[] = { { .i32 = enableScrollInteraction } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_ENABLE_SCROLL_INTERACTION, &item); +} +void WaterFlowComponent::SetWaterFlowFriction(float friction) +{ + ArkUI_NumberValue value[] = { { .f32 = friction } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_FRICTION, &item); +} +void WaterFlowComponent::SetWaterFlowEdgeEffect(int32_t edgeEffect, bool alwaysEnabled) +{ + ArkUI_NumberValue value[] = { { .i32 = edgeEffect }, { .i32 = alwaysEnabled } }; + ArkUI_AttributeItem item = { value, 2 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_EDGE_EFFECT, &item); +} +void WaterFlowComponent::SetScrollTo(float hOffset, float vOffset, const std::vector& optionalParams) +{ + auto value = new ArkUI_NumberValue[2 + static_cast(optionalParams.size())]; + value[0] = { .f32 = hOffset }; + value[1] = { .f32 = vOffset }; + for (int32_t i = 0; i < optionalParams.size(); i++) { + value[2 + i] = { .i32 = optionalParams[i] }; + } + ArkUI_AttributeItem item = { value, 2 + static_cast(optionalParams.size()) }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_OFFSET, &item); +} +void WaterFlowComponent::SetScrollEdge(int32_t type) +{ + ArkUI_NumberValue value[] = { { .i32 = type } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_EDGE, &item); +} +void WaterFlowComponent::SetScrollPage(bool next) +{ + ArkUI_NumberValue value[] = { { .i32 = next } }; + ArkUI_AttributeItem item = { value, 1 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_PAGE, &item); +} +void WaterFlowComponent::SetScrollPage(bool next, bool animation) +{ + ArkUI_NumberValue value[] = { { .i32 = next }, { .i32 = animation } }; + ArkUI_AttributeItem item = { value, 2 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_PAGE, &item); +} +void WaterFlowComponent::SetScrollBy(float hDistance, float vDistance) +{ + ArkUI_NumberValue value[] = { { .f32 = hDistance }, { .f32 = vDistance } }; + ArkUI_AttributeItem item = { value, 2 }; + _nodeAPI->setAttribute(_component, NODE_SCROLL_BY, &item); +} +void WaterFlowComponent::OnNodeEvent(ArkUI_NodeEvent* event) +{ + auto eventType = OH_ArkUI_NodeEvent_GetEventType(event); + ArkUI_NodeComponentEvent* result = OH_ArkUI_NodeEvent_GetNodeComponentEvent(event); + switch (eventType) { + case NODE_ON_WILL_SCROLL: { + float offset = result->data[0].f32; + int32_t state = result->data[1].i32; + int32_t source = result->data[2].i32; + if (_onWillScroll) { + _onWillScroll(offset, state, source); + } + break; + } + case NODE_SCROLL_EVENT_ON_REACH_START: + if (_onReachStart) { + _onReachStart(); + } + break; + case NODE_SCROLL_EVENT_ON_REACH_END: + if (_onReachEnd) { + _onReachEnd(); + } + break; + case NODE_SCROLL_EVENT_ON_SCROLL_STOP: + if (_onScrollStop) { + _onScrollStop(); + } + break; + case NODE_WATER_FLOW_ON_DID_SCROLL: + if (_onDidScroll) { + float offset = result->data[0].f32; + int32_t state = result->data[1].i32; + _onDidScroll(offset, state); + } + break; + case NODE_SCROLL_EVENT_ON_SCROLL_FRAME_BEGIN: + if (_onScrollFrameBegin) { + float offset = result->data[0].f32; + int32_t state = result->data[1].i32; + _onScrollFrameBegin(offset, state); + } + break; + case NODE_WATER_FLOW_ON_SCROLL_INDEX: + if (_onScrollIndex) { + int32_t first = result->data[0].i32; + int32_t last = result->data[1].i32; + _onScrollIndex(first, last); + } + break; + default: + break; + } +} +void WaterFlowComponent::SetOnWillScroll(OnWillScroll onWillScroll) +{ + _onWillScroll = onWillScroll; + _nodeAPI->registerNodeEvent(_component, NODE_ON_WILL_SCROLL, 0, nullptr); +} +void WaterFlowComponent::SetOnReachStart(OnReachStart onReachStart) +{ + _onReachStart = onReachStart; + _nodeAPI->registerNodeEvent(_component, NODE_SCROLL_EVENT_ON_REACH_START, 0, nullptr); +} +void WaterFlowComponent::SetOnReachEnd(OnReachEnd onReachEnd) +{ + _onReachEnd = onReachEnd; + _nodeAPI->registerNodeEvent(_component, NODE_SCROLL_EVENT_ON_REACH_END, 0, nullptr); +} +void WaterFlowComponent::SetOnScrollStop(OnScrollStop onScrollStop) +{ + _onScrollStop = onScrollStop; + _nodeAPI->registerNodeEvent(_component, NODE_SCROLL_EVENT_ON_SCROLL_STOP, 0, nullptr); +} +void WaterFlowComponent::SetOnDidScroll(OnDidScroll onDidScroll) +{ + _onDidScroll = onDidScroll; + _nodeAPI->registerNodeEvent(_component, NODE_WATER_FLOW_ON_DID_SCROLL, 0, nullptr); +} +void WaterFlowComponent::SetOnScrollFrameBegin(OnScrollFrameBegin onScrollFrameBegin) +{ + _onScrollFrameBegin = onScrollFrameBegin; + _nodeAPI->registerNodeEvent(_component, NODE_SCROLL_EVENT_ON_SCROLL_FRAME_BEGIN, 0, nullptr); +} +void WaterFlowComponent::SetOnScrollIndex(OnScrollIndex onScrollIndex) +{ + _onScrollIndex = onScrollIndex; + _nodeAPI->registerNodeEvent(_component, NODE_WATER_FLOW_ON_SCROLL_INDEX, 0, nullptr); +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/component/waterflow_component.h b/function/ui_compare/capidemo/entry/src/main/cpp/component/waterflow_component.h new file mode 100644 index 00000000..20196b3f --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/component/waterflow_component.h @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_WATERFLOW_COMPONENT_H +#define ARKUI_CAPI_DEMO_WATERFLOW_COMPONENT_H + +#include +#include + +#include "component.h" +#include "flowitem_component.h" +#include "node_adapter.h" + +namespace ArkUICApiDemo { +using OnWillScroll = std::function; +using OnReachStart = std::function; +using OnReachEnd = std::function; +using OnScrollStop = std::function; +using OnDidScroll = std::function; +using OnScrollFrameBegin = std::function; +using OnScrollIndex = std::function; + +struct WaterFlowSection { + int32_t itemsCount = 0; + int32_t crossCount; + float columnsGap; + float rowsGap; + // top right bottom left + ArkUI_Margin margin { 0, 0, 0, 0 }; + float (*onGetItemMainSizeByIndex)(int32_t itemIndex); + void* userData; +}; + +class WaterFlowSectionOption { +public: + WaterFlowSectionOption() : _option(OH_ArkUI_WaterFlowSectionOption_Create()) {} + ~WaterFlowSectionOption() + { + OH_ArkUI_WaterFlowSectionOption_Dispose(_option); + } + void SetSection(int32_t index, WaterFlowSection section); + WaterFlowSection GetSection(int32_t index); + + void SetSize(int32_t size); + int32_t GetSize(); + ArkUI_WaterFlowSectionOption* GetOption() + { + return _option; + } + +private: + ArkUI_WaterFlowSectionOption* _option; +}; + +class WaterFlowComponent : public Component { +public: + WaterFlowComponent() : Component(ARKUI_NODE_WATER_FLOW) {} + explicit WaterFlowComponent(ArkUI_NodeHandle handle) : Component(handle) {} + + // 引入懒加载模块。 + void SetLazyAdapter(const std::shared_ptr>& adapter) + { + ArkUI_AttributeItem item { nullptr, 0, nullptr, adapter->GetAdapter() }; + _nodeAPI->setAttribute(_component, NODE_WATER_FLOW_NODE_ADAPTER, &item); + _adapter = adapter; + } + void SetLayoutDirection(int32_t layoutDirection); + void SetColumnsTemplate(const std::string& str); + void SetRowsTemplate(const std::string& str); + void SetWaterFlowColumnsGap(float val); + void SetWaterFlowRowsGap(float val); + void SetWaterFlowSectionOption(int32_t start, const std::shared_ptr& option); + void SetWaterFlowCachedCount(int32_t cachedCount); + void SetWaterFlowFooter(ArkUI_NodeHandle node); + void SetWaterFlowScrollToIndex(int32_t index); + void SetWaterFlowScrollToIndex(int32_t index, int32_t animation); + void SetWaterFlowScrollToIndex(int32_t index, int32_t animation, int32_t alignment); + void SetItemConstraintSize(float minWidth, float maxWidth, float minHeight, float maxHeight); + void SetWaterFlowNestedScroll(int32_t forward, int32_t backward); + void SetWaterFlowScrollBar(int32_t barState); + void SetWaterFlowScrollBarWidth(float width); + void SetWaterFlowScrollBarColor(uint32_t color); + void SetWaterFlowEnableScrollInteraction(bool enableScrollInteraction); + void SetWaterFlowFriction(float friction); + void SetWaterFlowEdgeEffect(int32_t edgeEffect, bool alwaysEnabled); + /** + * @brief Set the scroll position to the specified offset. + * @param hOffset horizontal scrolling offset + * @param vOffset vertical scrolling offset + * @param optionalParams + * [0] scrolling duration, in milliseconds. + * [1] scrolling curve. The parameter type is ArkUI_AnimationCurve. + * [2] whether to enable the default spring animation. + * [3] sets whether scrolling can cross the boundary. + * [4] canOverScroll. + */ + void SetScrollTo(float hOffset, float vOffset, const std::vector& optionalParams); + void SetScrollEdge(int32_t type); + void SetScrollPage(bool next); + void SetScrollPage(bool next, bool animation); + void SetScrollBy(float hDistance, float vDistance); + + void OnNodeEvent(ArkUI_NodeEvent* event) override; + void SetOnWillScroll(OnWillScroll onWillScroll); + void SetOnReachStart(OnReachStart onReachStart); + void SetOnReachEnd(OnReachEnd onReachEnd); + void SetOnScrollStop(OnScrollStop onScrollStop); + void SetOnDidScroll(OnDidScroll onDidScroll); + void SetOnScrollFrameBegin(OnScrollFrameBegin onScrollFrameBegin); + void SetOnScrollIndex(OnScrollIndex onScrollIndex); + + std::shared_ptr> GetAdapter() const + { + return _adapter; + } + std::shared_ptr GetSectionOption() const + { + return _sectionsOption; + } + void ReleaseSectionOption() + { + _sectionsOption.reset(); + } + +private: + std::shared_ptr _sectionsOption; + std::shared_ptr> _adapter; + + OnWillScroll _onWillScroll; + OnReachStart _onReachStart; + OnReachEnd _onReachEnd; + OnScrollStop _onScrollStop; + OnDidScroll _onDidScroll; + OnScrollFrameBegin _onScrollFrameBegin; + OnScrollIndex _onScrollIndex; +}; +} // namespace ArkUICApiDemo + +#endif // ARKUI_CAPI_DEMO_WATERFLOW_COMPONENT_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/manager/plugin_manager.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/manager/plugin_manager.cpp new file mode 100644 index 00000000..356fbf23 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/manager/plugin_manager.cpp @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2024 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 "plugin_manager.h" + +#include +#include +#include + +#include "./common/common.h" + +namespace ArkUICApiDemo { +PluginManager PluginManager::pluginManager_; + +PluginManager::~PluginManager() +{ + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Callback", "~PluginManager"); + for (auto iter = nativeXComponentMap_.begin(); iter != nativeXComponentMap_.end(); ++iter) { + if (iter->second != nullptr) { + delete iter->second; + iter->second = nullptr; + } + } + nativeXComponentMap_.clear(); +} + +napi_value PluginManager::GetContext(napi_env env, napi_callback_info info) +{ + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginManager", "GetContext env or info is null"); + return nullptr; + } + + size_t argCnt = 1; + napi_value args[1] = { nullptr }; + if (napi_get_cb_info(env, info, &argCnt, args, nullptr, nullptr) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginManager", "GetContext napi_get_cb_info failed"); + } + + if (argCnt != 1) { + napi_throw_type_error(env, NULL, "Wrong number of arguments"); + return nullptr; + } + + napi_valuetype valuetype; + if (napi_typeof(env, args[0], &valuetype) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_typeof failed"); + return nullptr; + } + + if (valuetype != napi_number) { + napi_throw_type_error(env, NULL, "Wrong type of arguments"); + return nullptr; + } + + int64_t value; + if (napi_get_value_int64(env, args[0], &value) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_get_value_int64 failed"); + return nullptr; + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_create_object failed"); + return nullptr; + } + + return exports; +} + +void PluginManager::Export(napi_env env, napi_value exports) +{ + if ((env == nullptr) || (exports == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginManager", "Export: env or exports is null"); + return; + } + + napi_value exportInstance = nullptr; + if (napi_get_named_property(env, exports, OH_NATIVE_XCOMPONENT_OBJ, &exportInstance) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginManager", "Export: napi_get_named_property fail"); + return; + } + + OH_NativeXComponent* nativeXComponent = nullptr; + if (napi_unwrap(env, exportInstance, reinterpret_cast(&nativeXComponent)) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginManager", "Export: napi_unwrap fail"); + return; + } else { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginManager", "Export: napi_unwrap success"); + } + + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = { '\0' }; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + if (OH_NativeXComponent_GetXComponentId(nativeXComponent, idStr, &idSize) != OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + OH_LOG_Print( + LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginManager", "Export: OH_NativeXComponent_GetXComponentId fail"); + return; + } + + std::string id(idStr); + auto context = PluginManager::GetInstance(); + if ((context != nullptr) && (nativeXComponent != nullptr)) { + context->SetNativeXComponent(id, nativeXComponent); + } +} + +void PluginManager::SetNativeXComponent(std::string& id, OH_NativeXComponent* nativeXComponent) +{ + if (nativeXComponent == nullptr) { + return; + } + + if (nativeXComponentMap_.find(id) == nativeXComponentMap_.end()) { + nativeXComponentMap_[id] = nativeXComponent; + return; + } + + if (nativeXComponentMap_[id] != nativeXComponent) { + OH_NativeXComponent* tmp = nativeXComponentMap_[id]; + delete tmp; + tmp = nullptr; + nativeXComponentMap_[id] = nativeXComponent; + } +} + +OH_NativeXComponent* PluginManager::GetNativeXComponent(std::string& id) +{ + if (nativeXComponentMap_.find(id) == nativeXComponentMap_.end()) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginManager", "GetNativeXComponent.%{public}s == nullptr", + id.c_str()); + return nullptr; + } + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "PluginManager", + "nativeXComponentMap_[%{public}s] == %{public}p", id.c_str(), nativeXComponentMap_[id]); + return nativeXComponentMap_[id]; +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/manager/plugin_manager.h b/function/ui_compare/capidemo/entry/src/main/cpp/manager/plugin_manager.h new file mode 100644 index 00000000..a151d7e8 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/manager/plugin_manager.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2024 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 NATIVE_XCOMPONENT_PLUGIN_MANAGER_H +#define NATIVE_XCOMPONENT_PLUGIN_MANAGER_H + +#include +#include +#include +#include +#include + +namespace ArkUICApiDemo { +class PluginManager { +public: + ~PluginManager(); + + static PluginManager* GetInstance() + { + return &PluginManager::pluginManager_; + } + + static napi_value GetContext(napi_env env, napi_callback_info info); + + void SetNativeXComponent(std::string& id, OH_NativeXComponent* nativeXComponent); + OH_NativeXComponent* GetNativeXComponent(std::string& id); + void Export(napi_env env, napi_value exports); + +private: + static PluginManager pluginManager_; + + std::unordered_map nativeXComponentMap_; +}; +} // namespace ArkUICApiDemo +#endif // NATIVE_XCOMPONENT_PLUGIN_MANAGER_H \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/napi_init.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/napi_init.cpp new file mode 100644 index 00000000..258f18c6 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/napi_init.cpp @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2024 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 "manager/plugin_manager.h" +#include "button/button_type_test.h" +#include "calendarpicker/calendarpicker_hint_radius_test.h" +#include "slider/slider_track_thickness_test.h" +#include "stack/stack_align_content_test.h" +#include "xcomponent/xcomponent_id_test.h" +#include "scroll/scroll_scrollbarwidth_test.h" +#include "scroll/scroll_scrollby_test.h" +#include "scroll/scroll_enablepaging_test.h" +#include "progress/progress_total_test.h" +#include "progress/progress_type_test.h" + +using namespace ArkUICApiDemo; + +EXTERN_C_START +static napi_value Init(napi_env env, napi_value exports) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, ArkUICApiDemo::LOG_PRINT_DOMAIN, "Init", "Init begins"); + if ((env == nullptr) || (exports == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_ERROR, ArkUICApiDemo::LOG_PRINT_DOMAIN, "Init", "env or exports is null"); + return nullptr; + } + + napi_property_descriptor desc[] = { + {"buttonTypeTest", nullptr, ButtonTypeTest::CreateNativeNode, nullptr, nullptr, nullptr, napi_default, nullptr}, + {"calendarPickerHintRadiusPage1Test", nullptr, CalendarPickerHintRadiusTest::CreateNativeNodePage1, nullptr, + nullptr, nullptr, napi_default, nullptr}, + {"calendarPickerHintRadiusPage2Test", nullptr, CalendarPickerHintRadiusTest::CreateNativeNodePage2, nullptr, + nullptr, nullptr, napi_default, nullptr}, + {"calendarPickerHintRadiusPage3Test", nullptr, CalendarPickerHintRadiusTest::CreateNativeNodePage3, nullptr, + nullptr, nullptr, napi_default, nullptr}, + {"calendarPickerHintRadiusPage4Test", nullptr, CalendarPickerHintRadiusTest::CreateNativeNodePage4, nullptr, + nullptr, nullptr, napi_default, nullptr}, + {"calendarPickerHintRadiusPage5Test", nullptr, CalendarPickerHintRadiusTest::CreateNativeNodePage5, nullptr, + nullptr, nullptr, napi_default, nullptr}, + {"calendarPickerHintRadiusPage6Test", nullptr, CalendarPickerHintRadiusTest::CreateNativeNodePage6, nullptr, + nullptr, nullptr, napi_default, nullptr}, + {"calendarPickerHintRadiusPage7Test", nullptr, CalendarPickerHintRadiusTest::CreateNativeNodePage7, nullptr, + nullptr, nullptr, napi_default, nullptr}, + {"calendarPickerHintRadiusPage8Test", nullptr, CalendarPickerHintRadiusTest::CreateNativeNodePage8, nullptr, + nullptr, nullptr, napi_default, nullptr}, + {"sliderTrackThicknessPage1Test", nullptr, SliderTrackThicknessTest::CreateNativeNodePage1, nullptr, nullptr, + nullptr, napi_default, nullptr}, + {"sliderTrackThicknessPage2Test", nullptr, SliderTrackThicknessTest::CreateNativeNodePage2, nullptr, nullptr, + nullptr, napi_default, nullptr}, + {"stackAlignContentTest", nullptr, StackAlignContentTest::CreateNativeNode, nullptr, nullptr, nullptr, + napi_default, nullptr}, + {"xComponentIdTest", nullptr, XComponentIdTest::CreateNativeNode, nullptr, nullptr, nullptr, napi_default, + nullptr}, + {"scrollScrollBarWidthTest", nullptr, ScrollScrollBarWidthTest::CreateNativeNode, nullptr, nullptr, nullptr, + napi_default, nullptr}, + {"scrollScrollByTest", nullptr, ScrollScrollByTest::CreateNativeNode, nullptr, nullptr, nullptr, napi_default, + nullptr}, + {"scrollEnablePagingTest", nullptr, ScrollEnablePagingTest::CreateNativeNode, nullptr, nullptr, nullptr, + napi_default, nullptr}, + {"progressValueAndTotalTest", nullptr, ProgressValueAndTotalTest::CreateNativeNode, nullptr, nullptr, nullptr, + napi_default, nullptr}, + {"progressTypeTest", nullptr, ProgressTypeTest::CreateNativeNode, nullptr, nullptr, nullptr, napi_default, + nullptr}, + }; + if (napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc) != napi_ok) { + OH_LOG_Print(LOG_APP, LOG_ERROR, ArkUICApiDemo::LOG_PRINT_DOMAIN, "Init", "napi_define_properties failed"); + return nullptr; + } + + ArkUICApiDemo::PluginManager::GetInstance()->Export(env, exports); + return exports; +} +EXTERN_C_END + +static napi_module nativerenderModule = {.nm_version = 1, + .nm_flags = 0, + .nm_filename = nullptr, + .nm_register_func = Init, + .nm_modname = "nativerender", + .nm_priv = ((void *)0), + .reserved = {0}}; + +extern "C" __attribute__((constructor)) void RegisterModule(void) { napi_module_register(&nativerenderModule); } \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/progress/progress_total_test.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/progress/progress_total_test.cpp new file mode 100644 index 00000000..1cdfc2a6 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/progress/progress_total_test.cpp @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2024 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 "progress_total_test.h" + +#include "../manager/plugin_manager.h" + +namespace ArkUICApiDemo { + +std::shared_ptr CreateProgressWithValueAndTotal(float value, float total) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "ProgressValueAndTotalTest", "CreateProgressWithValueAndTotal"); + + auto progress = std::make_shared(ARKUI_NODE_PROGRESS); + progress->SetWidth(SIZE_300); + progress->SetHeight(SIZE_30); + progress->SetMargin(5); + ArkUI_NumberValue progress_value[] = { { .f32 = value } }; + ArkUI_AttributeItem progress_value_item = { progress_value, sizeof(progress_value) / sizeof(ArkUI_NumberValue) }; + progress->setAttribute(NODE_PROGRESS_VALUE, &progress_value_item); + if (total != PARAM_NEGATIVE_100) { + ArkUI_NumberValue progress_total_value[] = { { .f32 = total } }; + ArkUI_AttributeItem progress_total_item = { progress_total_value, + sizeof(progress_total_value) / sizeof(ArkUI_NumberValue) }; + progress->setAttribute(NODE_PROGRESS_TOTAL, &progress_total_item); + } + + return progress; +} + +napi_value ProgressValueAndTotalTest::CreateNativeNode(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ProgressValueAndTotalTest", "CreateNativeNode"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + auto column = new Component(ARKUI_NODE_COLUMN); + column->AddChild(CreateProgressWithValueAndTotal(SIZE_50, PARAM_NEGATIVE_1)); + column->AddChild(CreateProgressWithValueAndTotal(SIZE_50, PARAM_0)); + column->AddChild(CreateProgressWithValueAndTotal(SIZE_50, SIZE_50)); + column->AddChild(CreateProgressWithValueAndTotal(PARAM_0, PARAM_NEGATIVE_1)); + column->AddChild(CreateProgressWithValueAndTotal(PARAM_0, SIZE_100)); + column->AddChild(CreateProgressWithValueAndTotal(SIZE_100, PARAM_NEGATIVE_1)); + column->AddChild(CreateProgressWithValueAndTotal(SIZE_100, SIZE_50)); + column->AddChild(CreateProgressWithValueAndTotal(SIZE_100, SIZE_200)); + column->AddChild(CreateProgressWithValueAndTotal(PARAM_NEGATIVE_1, PARAM_NEGATIVE_1)); + column->AddChild(CreateProgressWithValueAndTotal(PARAM_NEGATIVE_1, SIZE_50)); + column->AddChild(CreateProgressWithValueAndTotal(PARAM_NEGATIVE_1, PARAM_NEGATIVE_100)); + column->AddChild(CreateProgressWithValueAndTotal(SIZE_50, PARAM_NEGATIVE_100)); + column->AddChild(CreateProgressWithValueAndTotal(SIZE_200, PARAM_NEGATIVE_100)); + column->AddChild(CreateProgressWithValueAndTotal(SIZE_100, SIZE_50)); + auto column15 = CreateProgressWithValueAndTotal(SIZE_50, PARAM_NEGATIVE_100); + column15->resetAttribute(NODE_PROGRESS_VALUE); + auto column16 = CreateProgressWithValueAndTotal(SIZE_50, SIZE_200); + column16->resetAttribute(NODE_PROGRESS_TOTAL); + column->AddChild(column15); + column->AddChild(column16); + + std::string idProgress(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode( + PluginManager::GetInstance()->GetNativeXComponent(idProgress), column->GetComponent()) == INVALID_PARAM) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ProgressValueAndTotalTest", + "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_create_object failed"); + return nullptr; + } + + return exports; +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/progress/progress_total_test.h b/function/ui_compare/capidemo/entry/src/main/cpp/progress/progress_total_test.h new file mode 100644 index 00000000..ac37ffe3 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/progress/progress_total_test.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_PROGRESS_VALUE_AND_TOTAL_TEST_H +#define ARKUI_CAPI_DEMO_PROGRESS_VALUE_AND_TOTAL_TEST_H + +#include +#include +#include + +#include "../common/common.h" +#include "component.h" + +namespace ArkUICApiDemo { + +class ProgressValueAndTotalTest { +public: + ~ProgressValueAndTotalTest(); + static napi_value CreateNativeNode(napi_env env, napi_callback_info info); +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_PROGRESS_VALUE_AND_TOTAL_TEST_H diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/progress/progress_type_test.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/progress/progress_type_test.cpp new file mode 100644 index 00000000..9ae297de --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/progress/progress_type_test.cpp @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2024 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 "progress_type_test.h" + +#include "../manager/plugin_manager.h" + +namespace ArkUICApiDemo { + +std::shared_ptr CreateProgressWithType(int32_t type) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "ProgressTypeTest", "CreateProgressWithType"); + + auto progress = std::make_shared(ARKUI_NODE_PROGRESS); + progress->SetWidth(SIZE_300); + progress->SetHeight(SIZE_50); + progress->SetMargin(DEFAULT_MARGIN); + ArkUI_NumberValue type_value[] = { { .i32 = type } }; + ArkUI_AttributeItem progress_type_item = { type_value, sizeof(type_value) / sizeof(ArkUI_NumberValue) }; + progress->setAttribute(NODE_PROGRESS_TYPE, &progress_type_item); + ArkUI_NumberValue progress_value[] = { { .f32 = SIZE_30 } }; + ArkUI_AttributeItem progress_value_item = { progress_value, sizeof(progress_value) / sizeof(ArkUI_NumberValue) }; + progress->setAttribute(NODE_PROGRESS_VALUE, &progress_value_item); + + return progress; +} + +napi_value ProgressTypeTest::CreateNativeNode(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ProgressTypeTest", "CreateNativeNode"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + auto column = new Component(ARKUI_NODE_COLUMN); + column->AddChild(CreateProgressWithType(-1)); + column->AddChild(CreateProgressWithType(ARKUI_PROGRESS_TYPE_LINEAR)); + column->AddChild(CreateProgressWithType(ARKUI_PROGRESS_TYPE_RING)); + column->AddChild(CreateProgressWithType(ARKUI_PROGRESS_TYPE_ECLIPSE)); + column->AddChild(CreateProgressWithType(ARKUI_PROGRESS_TYPE_SCALE_RING)); + column->AddChild(CreateProgressWithType(ARKUI_PROGRESS_TYPE_CAPSULE)); + column->AddChild(CreateProgressWithType(5)); + auto column8 = CreateProgressWithType(ARKUI_PROGRESS_TYPE_ECLIPSE); + column8->resetAttribute(NODE_PROGRESS_TYPE); + column->AddChild(column8); + + std::string idProgress(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode( + PluginManager::GetInstance()->GetNativeXComponent(idProgress), column->GetComponent()) == INVALID_PARAM) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ProgressTypeTest", + "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_create_object failed"); + return nullptr; + } + + return exports; +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/progress/progress_type_test.h b/function/ui_compare/capidemo/entry/src/main/cpp/progress/progress_type_test.h new file mode 100644 index 00000000..23b23314 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/progress/progress_type_test.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_PROGRESS_TYPE_TEST_H +#define ARKUI_CAPI_DEMO_PROGRESS_TYPE_TEST_H + +#include +#include +#include + +#include "../common/common.h" +#include "component.h" + +namespace ArkUICApiDemo { + +class ProgressTypeTest { +public: + ~ProgressTypeTest(); + static napi_value CreateNativeNode(napi_env env, napi_callback_info info); +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_PROGRESS_TYPE_TEST_H diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_enablepaging_test.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_enablepaging_test.cpp new file mode 100644 index 00000000..f13e646e --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_enablepaging_test.cpp @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2024 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 "scroll_enablepaging_test.h" + +#include "../manager/plugin_manager.h" + +namespace ArkUICApiDemo { + +std::shared_ptr CreateScrollWithEnablePaging(int32_t number, int32_t enablePaging) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "ScrollEnablePagingTest", "CreateScrollWithEnablePaging"); + auto scroll = std::make_shared(); + scroll->SetScrollScrollBar(ARKUI_SCROLL_BAR_DISPLAY_MODE_OFF); + scroll->SetWidth(SIZE_300); + scroll->SetHeight(70); + scroll->SetMargin(DEFAULT_MARGIN); + scroll->SetScrollScrollDirection(ARKUI_SCROLL_DIRECTION_HORIZONTAL); + scroll->AddChildWithNumber(number, ARKUI_NODE_ROW); + scroll->SetScrollEnablePaging(enablePaging); + + return scroll; +} + +static void AddEnablePagingChild(ColumnComponent* column) +{ + auto scroll1 = CreateScrollWithEnablePaging(10, -1); + auto scroll2 = CreateScrollWithEnablePaging(10, true); + auto scroll3 = CreateScrollWithEnablePaging(10, false); + auto scroll4 = CreateScrollWithEnablePaging(2, true); + auto scroll5 = CreateScrollWithEnablePaging(2, false); + auto scroll6 = CreateScrollWithEnablePaging(1000, true); + auto scroll7 = CreateScrollWithEnablePaging(1000, false); + auto scroll8 = CreateScrollWithEnablePaging(10, true); + scroll8->resetAttribute(NODE_SCROLL_ENABLE_PAGING); + + column->AddChild(scroll1); + column->AddChild(scroll2); + column->AddChild(scroll3); + column->AddChild(scroll4); + column->AddChild(scroll5); + column->AddChild(scroll6); + column->AddChild(scroll7); + column->AddChild(scroll8); + + scroll1->SetScrollTo(200, 0, {}); + scroll2->SetScrollTo(200, 0, {}); + scroll3->SetScrollTo(200, 0, {}); + scroll4->SetScrollTo(200, 0, {}); + scroll5->SetScrollTo(200, 0, {}); + scroll6->SetScrollTo(200, 0, {}); + scroll7->SetScrollTo(200, 0, {}); + scroll8->SetScrollTo(200, 0, {}); +} + +napi_value ScrollEnablePagingTest::CreateNativeNode(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "ScrollEnablePagingTest", "CreateNativeNode"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ScrollEnablePagingTest", "GetContext env or info is null"); + return nullptr; + } + + auto column = new ColumnComponent(); + AddEnablePagingChild(column); + + std::string id(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode( + PluginManager::GetInstance()->GetNativeXComponent(id), column->GetComponent()) == INVALID_PARAM) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ScrollEnablePagingTest", + "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, nullptr, "napi_create_object failed"); + return nullptr; + } + + return exports; +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_enablepaging_test.h b/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_enablepaging_test.h new file mode 100644 index 00000000..8a160287 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_enablepaging_test.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_SCROLL_ENABLE_PAGING_TEST_H +#define ARKUI_CAPI_DEMO_SCROLL_ENABLE_PAGING_TEST_H + +#include +#include +#include + +#include "../common/common.h" +#include "column_component.h" +#include "scroll_component.h" + +namespace ArkUICApiDemo { + +class ScrollEnablePagingTest { +public: + ~ScrollEnablePagingTest(); + static napi_value CreateNativeNode(napi_env env, napi_callback_info info); +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_SCROLL_ENABLE_PAGING_TEST_H diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_scrollbarwidth_test.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_scrollbarwidth_test.cpp new file mode 100644 index 00000000..b3222396 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_scrollbarwidth_test.cpp @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2024 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 "scroll_scrollbarwidth_test.h" + +#include "../manager/plugin_manager.h" + +namespace ArkUICApiDemo { + +std::shared_ptr CreateScrollWithBarWidth(float barWidth) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "ScrollScrollBarWidthTest", "CreateScrollWithBarWidth"); + auto scroll = std::make_shared(); + scroll->SetScrollScrollBar(ARKUI_SCROLL_BAR_DISPLAY_MODE_ON); + scroll->SetWidth(SIZE_300); + scroll->SetHeight(SIZE_100); + scroll->SetMargin(DEFAULT_MARGIN); + scroll->SetScrollScrollDirection(ARKUI_SCROLL_DIRECTION_HORIZONTAL); + scroll->AddChildWithNumber(10, ARKUI_NODE_ROW); + if (barWidth != PARAM_NEGATIVE_100) { + scroll->SetScrollScrollBarWidth(barWidth); + } + + return scroll; +} + +napi_value ScrollScrollBarWidthTest::CreateNativeNode(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "ScrollScrollBarWidthTest", "CreateNativeNode"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print( + LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ScrollScrollBarWidthTest", "GetContext env or info is null"); + return nullptr; + } + + auto scroll1 = CreateScrollWithBarWidth(-20); + auto scroll2 = CreateScrollWithBarWidth(0); + auto scroll3 = CreateScrollWithBarWidth(10); + auto scroll4 = CreateScrollWithBarWidth(1000); + auto scroll5 = CreateScrollWithBarWidth(-100); + auto scroll6 = CreateScrollWithBarWidth(10); + scroll6->resetAttribute(NODE_SCROLL_BAR_WIDTH); + + auto column = new ColumnComponent(); + column->AddChild(scroll1); + column->AddChild(scroll2); + column->AddChild(scroll3); + column->AddChild(scroll4); + column->AddChild(scroll5); + column->AddChild(scroll6); + + std::string id(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode( + PluginManager::GetInstance()->GetNativeXComponent(id), column->GetComponent()) == INVALID_PARAM) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ScrollScrollBarWidthTest", + "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, nullptr, "napi_create_object failed"); + return nullptr; + } + + return exports; +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_scrollbarwidth_test.h b/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_scrollbarwidth_test.h new file mode 100644 index 00000000..285b5d31 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_scrollbarwidth_test.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_SCROLL_SCROLLBARWIDTH_TEST_H +#define ARKUI_CAPI_DEMO_SCROLL_SCROLLBARWIDTH_TEST_H + +#include +#include +#include + +#include "../common/common.h" +#include "column_component.h" +#include "scroll_component.h" + +namespace ArkUICApiDemo { + +class ScrollScrollBarWidthTest { +public: + ~ScrollScrollBarWidthTest(); + static napi_value CreateNativeNode(napi_env env, napi_callback_info info); +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_SCROLL_SCROLLBARWIDTH_TEST_H diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_scrollby_test.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_scrollby_test.cpp new file mode 100644 index 00000000..d5480db7 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_scrollby_test.cpp @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2024 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 "scroll_scrollby_test.h" + +#include "../manager/plugin_manager.h" + +namespace ArkUICApiDemo { + +std::shared_ptr CreateScrollWithScrollBy(ArkUI_NodeType type, float hDistance, float vDistance) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "ScrollScrollByTest", "CreateScrollWithScrollBy"); + auto scroll = std::make_shared(); + scroll->SetScrollScrollBar(ARKUI_SCROLL_BAR_DISPLAY_MODE_OFF); + scroll->AddChildWithNumber(10, type); + if (type == ARKUI_NODE_ROW) { + scroll->SetWidth(340); + scroll->SetHeight(SIZE_100); + scroll->SetMargin(DEFAULT_MARGIN); + scroll->SetScrollScrollDirection(ARKUI_SCROLL_DIRECTION_HORIZONTAL); + } else if (type == ARKUI_NODE_COLUMN) { + scroll->SetWidth(SIZE_100); + scroll->SetHeight(340); + scroll->SetMargin(DEFAULT_MARGIN); + scroll->SetScrollScrollDirection(ARKUI_SCROLL_DIRECTION_VERTICAL); + } + scroll->SetScrollBy(hDistance, vDistance); + + return scroll; +} + +napi_value ScrollScrollByTest::CreateNativeNode(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "ScrollScrollByTest", "CreateNativeNode"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ScrollScrollByTest", "GetContext env or info is null"); + return nullptr; + } + + auto column = new ColumnComponent(); + column->AddChild(CreateScrollWithScrollBy(ARKUI_NODE_ROW, -200, -200)); + column->AddChild(CreateScrollWithScrollBy(ARKUI_NODE_ROW, 1000, 0)); + column->AddChild(CreateScrollWithScrollBy(ARKUI_NODE_ROW, 200, 200)); + auto row = std::make_shared(ARKUI_NODE_ROW); + row->AddChild(CreateScrollWithScrollBy(ARKUI_NODE_COLUMN, -200, -200)); + row->AddChild(CreateScrollWithScrollBy(ARKUI_NODE_COLUMN, 0, 1000)); + row->AddChild(CreateScrollWithScrollBy(ARKUI_NODE_COLUMN, 200, 200)); + column->AddChild(row); + + std::string id(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode( + PluginManager::GetInstance()->GetNativeXComponent(id), column->GetComponent()) == INVALID_PARAM) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "ScrollScrollByTest", + "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, nullptr, "napi_create_object failed"); + return nullptr; + } + + return exports; +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_scrollby_test.h b/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_scrollby_test.h new file mode 100644 index 00000000..c18f0a06 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/scroll/scroll_scrollby_test.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_SCROLL_SCROLLBY_TEST_H +#define ARKUI_CAPI_DEMO_SCROLL_SCROLLBY_TEST_H + +#include +#include +#include + +#include "../common/common.h" +#include "column_component.h" +#include "scroll_component.h" + +namespace ArkUICApiDemo { + +class ScrollScrollByTest { +public: + ~ScrollScrollByTest(); + static napi_value CreateNativeNode(napi_env env, napi_callback_info info); +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_SCROLL_SCROLLBY_TEST_H diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/slider/slider_track_thickness_test.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/slider/slider_track_thickness_test.cpp new file mode 100644 index 00000000..74b047f4 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/slider/slider_track_thickness_test.cpp @@ -0,0 +1,280 @@ +/* + * Copyright (c) 2024 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 "slider_track_thickness_test.h" + +#include + +#include "../manager/plugin_manager.h" + +namespace ArkUICApiDemo { + +static auto SetWidth(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float width) +{ + ArkUI_NumberValue width_value[] = { { .f32 = width } }; + ArkUI_AttributeItem width_item = { width_value, sizeof(width_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_WIDTH, &width_item); + return nodeHandle; +} + +static auto SetHeight(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float height) +{ + ArkUI_NumberValue height_value[] = { { .f32 = height } }; + ArkUI_AttributeItem height_item = { height_value, sizeof(height_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_HEIGHT, &height_item); + return nodeHandle; +} + +static auto SetBackgroundColor(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle nodeHandle, uint32_t color) +{ + ArkUI_NumberValue color_value[] = { { .u32 = color } }; + ArkUI_AttributeItem color_item = { color_value, sizeof(color_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_BACKGROUND_COLOR, &color_item); + return nodeHandle; +} + +static auto SetMargin(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float margin) +{ + ArkUI_NumberValue margin_value[] = { { .f32 = margin } }; + ArkUI_AttributeItem margin_item = { margin_value, sizeof(margin_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_MARGIN, &margin_item); + return nodeHandle; +} + +static auto SetId(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, const char* id) +{ + ArkUI_AttributeItem item = {}; + item.string = id; + nodeAPI->setAttribute(nodeHandle, NODE_ID, &item); + return nodeHandle; +} + +static auto SetSliderStyle(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, int32_t style) +{ + ArkUI_NumberValue value[] = { { .i32 = style } }; + ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_SLIDER_STYLE, &item); + return nodeHandle; +} + +static auto SetSlideThickness(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float thickness) +{ + ArkUI_NumberValue value[] = { { .f32 = thickness } }; + ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_SLIDER_TRACK_THICKNESS, &item); + return nodeHandle; +} + +static auto SetSlider(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float height, int32_t style) +{ + nodeHandle = SetWidth(nodeAPI, nodeHandle, SIZE_300); + nodeHandle = SetHeight(nodeAPI, nodeHandle, height); + nodeHandle = SetMargin(nodeAPI, nodeHandle, PARAM_1); + nodeHandle = SetSliderStyle(nodeAPI, nodeHandle, style); + return nodeHandle; +} + +static auto SetButton(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle) +{ + nodeHandle = SetWidth(nodeAPI, nodeHandle, SIZE_30); + nodeHandle = SetHeight(nodeAPI, nodeHandle, SIZE_30); + nodeHandle = SetBackgroundColor(nodeAPI, nodeHandle, COLOR_GREEN); + nodeHandle = SetMargin(nodeAPI, nodeHandle, PARAM_1); + return nodeHandle; +} + +napi_value SliderTrackThicknessTest::CreateNativeNodePage1(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "SliderTrackThicknessTest", "CreateNativeNodePage1"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print( + LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "SliderTrackThicknessTest", "GetContext env or info is null"); + return nullptr; + } + + ArkUI_NativeNodeAPI_1* nodeAPI = nullptr; + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeAPI); + + // default style + auto slider1 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + + // sliderStyle set to in + auto slider2 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider2 = SetSlider(nodeAPI, slider2, SIZE_20, ARKUI_SLIDER_STYLE_IN_SET); + + // sliderStyle set to in, and the slider track's thickness is less than 0 + auto slider3 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider3 = SetSlider(nodeAPI, slider3, SIZE_20, ARKUI_SLIDER_STYLE_IN_SET); + slider3 = SetSlideThickness(nodeAPI, slider3, PARAM_NEGATIVE_100); + + // sliderStyle set to in, and the slider track's thickness is 0 + auto slider4 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider4 = SetSlider(nodeAPI, slider4, SIZE_20, ARKUI_SLIDER_STYLE_IN_SET); + slider4 = SetSlideThickness(nodeAPI, slider4, PARAM_0); + + // sliderStyle set to in, and the slider track's thickness is greater than 0, and less than slider's height + auto slider5 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider5 = SetSlider(nodeAPI, slider5, SIZE_100, ARKUI_SLIDER_STYLE_IN_SET); + slider5 = SetSlideThickness(nodeAPI, slider5, SIZE_80); + + // sliderStyle set to in, and the slider track's thickness is greater than 0, and greater than slider's height + auto slider6 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider6 = SetSlider(nodeAPI, slider6, SIZE_100, ARKUI_SLIDER_STYLE_IN_SET); + slider6 = SetSlideThickness(nodeAPI, slider6, SIZE_200); + + // sliderStyle set to out + auto slider7 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider7 = SetSlider(nodeAPI, slider7, SIZE_20, ARKUI_SLIDER_STYLE_OUT_SET); + + // sliderStyle set to out, and the slider track's thickness is less than 0 + auto slider8 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider8 = SetSlider(nodeAPI, slider8, SIZE_20, ARKUI_SLIDER_STYLE_OUT_SET); + slider8 = SetSlideThickness(nodeAPI, slider8, PARAM_NEGATIVE_100); + + // sliderStyle set to out, and the slider track's thickness is 0 + auto slider9 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider9 = SetSlider(nodeAPI, slider9, SIZE_20, ARKUI_SLIDER_STYLE_OUT_SET); + slider9 = SetSlideThickness(nodeAPI, slider9, PARAM_0); + + // sliderStyle set to out, and the slider track's thickness is greater than 0, and less than slider's height + auto slider10 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider10 = SetSlider(nodeAPI, slider10, SIZE_100, ARKUI_SLIDER_STYLE_OUT_SET); + slider10 = SetSlideThickness(nodeAPI, slider10, SIZE_16); + + // sliderStyle set to out, and the slider track's thickness is greater than 0, and greater than slider's height + auto slider11 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider11 = SetSlider(nodeAPI, slider11, SIZE_100, ARKUI_SLIDER_STYLE_OUT_SET); + slider11 = SetSlideThickness(nodeAPI, slider11, SIZE_200); + + auto column = nodeAPI->createNode(ARKUI_NODE_COLUMN); + nodeAPI->addChild(column, slider1); + nodeAPI->addChild(column, slider2); + nodeAPI->addChild(column, slider3); + nodeAPI->addChild(column, slider4); + nodeAPI->addChild(column, slider5); + nodeAPI->addChild(column, slider6); + nodeAPI->addChild(column, slider7); + nodeAPI->addChild(column, slider8); + nodeAPI->addChild(column, slider9); + nodeAPI->addChild(column, slider10); + nodeAPI->addChild(column, slider11); + + std::string id(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode(PluginManager::GetInstance()->GetNativeXComponent(id), column) == + INVALID_PARAM) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "SliderTrackThicknessTest", + "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_create_object failed"); + return nullptr; + } + + return exports; +} + +napi_value SliderTrackThicknessTest::CreateNativeNodePage2(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "SliderTrackThicknessTest", "CreateNativeNodePage2"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print( + LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "SliderTrackThicknessTest", "GetContext env or info is null"); + return nullptr; + } + + ArkUI_NativeNodeAPI_1* nodeAPI = nullptr; + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeAPI); + + // sliderStyle set to none + auto slider12 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider12 = SetSlider(nodeAPI, slider12, SIZE_20, ARKUI_SLIDER_STYLE_NONE); + + // sliderStyle set to none, and the slider track's thickness is less than 0 + auto slider13 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider13 = SetSlider(nodeAPI, slider13, SIZE_20, ARKUI_SLIDER_STYLE_NONE); + slider13 = SetSlideThickness(nodeAPI, slider13, PARAM_NEGATIVE_100); + + // sliderStyle set to none, and the slider track's thickness is 0 + auto slider14 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider14 = SetSlider(nodeAPI, slider14, SIZE_20, ARKUI_SLIDER_STYLE_NONE); + slider14 = SetSlideThickness(nodeAPI, slider14, PARAM_0); + + // sliderStyle set to none, and the slider track's thickness is greater than 0, and less than slider's height + auto slider15 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider15 = SetSlider(nodeAPI, slider15, SIZE_100, ARKUI_SLIDER_STYLE_NONE); + slider15 = SetSlideThickness(nodeAPI, slider15, SIZE_16); + + // sliderStyle set to none, and the slider track's thickness is greater than 0, and greater than slider's height + auto slider16 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider16 = SetSlider(nodeAPI, slider16, SIZE_100, ARKUI_SLIDER_STYLE_NONE); + slider16 = SetSlideThickness(nodeAPI, slider16, SIZE_200); + + // resetAttribute + auto slider17 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider17 = SetSlider(nodeAPI, slider17, SIZE_100, ARKUI_SLIDER_STYLE_NONE); + slider17 = SetSlideThickness(nodeAPI, slider17, SIZE_16); + nodeAPI->resetAttribute(slider17, NODE_SLIDER_TRACK_THICKNESS); + + // sliderStyle set to none, and the slider track's thickness is greater than 0, and less than slider's height + auto slider18 = nodeAPI->createNode(ARKUI_NODE_SLIDER); + slider18 = SetSlider(nodeAPI, slider18, SIZE_100, ARKUI_SLIDER_STYLE_NONE); + slider18 = SetSlideThickness(nodeAPI, slider18, SIZE_16); + slider18 = SetId(nodeAPI, slider18, "slider18"); + + auto column = nodeAPI->createNode(ARKUI_NODE_COLUMN); + nodeAPI->addChild(column, slider12); + nodeAPI->addChild(column, slider13); + nodeAPI->addChild(column, slider14); + nodeAPI->addChild(column, slider15); + nodeAPI->addChild(column, slider16); + nodeAPI->addChild(column, slider17); + nodeAPI->addChild(column, slider18); + + std::string id(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode(PluginManager::GetInstance()->GetNativeXComponent(id), column) == + INVALID_PARAM) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "SliderTrackThicknessTest", + "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_create_object failed"); + return nullptr; + } + + return exports; +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/slider/slider_track_thickness_test.h b/function/ui_compare/capidemo/entry/src/main/cpp/slider/slider_track_thickness_test.h new file mode 100644 index 00000000..d3bf2e26 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/slider/slider_track_thickness_test.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_SLIDER_TRACK_THICKNESS_TEST_H +#define ARKUI_CAPI_DEMO_SLIDER_TRACK_THICKNESS_TEST_H + +#include +#include +#include + +#include "../common/common.h" + +namespace ArkUICApiDemo { + +#define SIZE_16 16 +#define SIZE_20 20 +#define SIZE_80 80 + +class SliderTrackThicknessTest { +public: + ~SliderTrackThicknessTest(); + static napi_value CreateNativeNodePage1(napi_env env, napi_callback_info info); + static napi_value CreateNativeNodePage2(napi_env env, napi_callback_info info); +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_SLIDER_TRACK_THICKNESS_TEST_H diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/stack/stack_align_content_test.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/stack/stack_align_content_test.cpp new file mode 100644 index 00000000..9a7f6231 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/stack/stack_align_content_test.cpp @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2024 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 "stack_align_content_test.h" + +#include + +#include "../manager/plugin_manager.h" + +namespace ArkUICApiDemo { + +static auto SetWidth(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float width) +{ + ArkUI_NumberValue width_value[] = { { .f32 = width } }; + ArkUI_AttributeItem width_item = { width_value, sizeof(width_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_WIDTH, &width_item); + return nodeHandle; +} + +static auto SetHeight(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float height) +{ + ArkUI_NumberValue height_value[] = { { .f32 = height } }; + ArkUI_AttributeItem height_item = { height_value, sizeof(height_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_HEIGHT, &height_item); + return nodeHandle; +} + +static auto SetBackgroundColor(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle nodeHandle, uint32_t color) +{ + ArkUI_NumberValue color_value[] = { { .u32 = color } }; + ArkUI_AttributeItem color_item = { color_value, sizeof(color_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_BACKGROUND_COLOR, &color_item); + return nodeHandle; +} + +static auto SetMargin(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float margin) +{ + ArkUI_NumberValue margin_value[] = { { .f32 = margin } }; + ArkUI_AttributeItem margin_item = { margin_value, sizeof(margin_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_MARGIN, &margin_item); + return nodeHandle; +} + +static auto SetAlignContent(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle nodeHandle, int32_t align) +{ + ArkUI_NumberValue value[] = { { .i32 = align } }; + ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_STACK_ALIGN_CONTENT, &item); + return nodeHandle; +} + +static auto SetAlignment(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle nodeHandle, int32_t align) +{ + ArkUI_NumberValue value[] = { { .i32 = align } }; + ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_ALIGNMENT, &item); + return nodeHandle; +} + +static auto SetStack(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, int32_t align) +{ + nodeHandle = SetWidth(nodeAPI, nodeHandle, SIZE_90); + nodeHandle = SetHeight(nodeAPI, nodeHandle, SIZE_90); + nodeHandle = SetBackgroundColor(nodeAPI, nodeHandle, COLOR_RED); + nodeHandle = SetMargin(nodeAPI, nodeHandle, PARAM_1); + nodeHandle = SetAlignContent(nodeAPI, nodeHandle, align); + return nodeHandle; +} + +static auto SetButton(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle) +{ + nodeHandle = SetWidth(nodeAPI, nodeHandle, SIZE_30); + nodeHandle = SetHeight(nodeAPI, nodeHandle, SIZE_30); + nodeHandle = SetBackgroundColor(nodeAPI, nodeHandle, COLOR_GREEN); + nodeHandle = SetMargin(nodeAPI, nodeHandle, PARAM_1); + return nodeHandle; +} + +napi_value StackAlignContentTest::CreateNativeNode(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "StackAlignContentTest", "CreateNativeNode"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "StackAlignContentTest", "GetContext env or info is null"); + return nullptr; + } + + ArkUI_NativeNodeAPI_1* nodeAPI = nullptr; + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeAPI); + auto column = nodeAPI->createNode(ARKUI_NODE_COLUMN); + auto row1 = nodeAPI->createNode(ARKUI_NODE_ROW); + auto row2 = nodeAPI->createNode(ARKUI_NODE_ROW); + auto row3 = nodeAPI->createNode(ARKUI_NODE_ROW); + auto row4 = nodeAPI->createNode(ARKUI_NODE_ROW); + auto row5 = nodeAPI->createNode(ARKUI_NODE_ROW); + auto stack1 = nodeAPI->createNode(ARKUI_NODE_STACK); + auto stack2 = nodeAPI->createNode(ARKUI_NODE_STACK); + auto stack3 = nodeAPI->createNode(ARKUI_NODE_STACK); + auto stack4 = nodeAPI->createNode(ARKUI_NODE_STACK); + auto stack5 = nodeAPI->createNode(ARKUI_NODE_STACK); + auto stack6 = nodeAPI->createNode(ARKUI_NODE_STACK); + auto stack7 = nodeAPI->createNode(ARKUI_NODE_STACK); + auto stack8 = nodeAPI->createNode(ARKUI_NODE_STACK); + auto stack9 = nodeAPI->createNode(ARKUI_NODE_STACK); + auto stack10 = nodeAPI->createNode(ARKUI_NODE_STACK); + auto stack11 = nodeAPI->createNode(ARKUI_NODE_STACK); + auto stack12 = nodeAPI->createNode(ARKUI_NODE_STACK); + auto stack13 = nodeAPI->createNode(ARKUI_NODE_STACK); + auto stack14 = nodeAPI->createNode(ARKUI_NODE_STACK); + auto button1 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button2 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button3 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button4 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button5 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button6 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button7 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button8 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button9 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button10 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button11 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button12 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button13 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + auto button14 = nodeAPI->createNode(ARKUI_NODE_BUTTON); + nodeAPI->addChild(column, row1); + nodeAPI->addChild(column, row2); + nodeAPI->addChild(column, row3); + nodeAPI->addChild(column, row4); + nodeAPI->addChild(column, row5); + nodeAPI->addChild(row1, stack1); + nodeAPI->addChild(row1, stack2); + nodeAPI->addChild(row1, stack3); + nodeAPI->addChild(row2, stack4); + nodeAPI->addChild(row2, stack5); + nodeAPI->addChild(row2, stack6); + nodeAPI->addChild(row3, stack7); + nodeAPI->addChild(row3, stack8); + nodeAPI->addChild(row3, stack9); + nodeAPI->addChild(row4, stack10); + nodeAPI->addChild(row4, stack11); + nodeAPI->addChild(row4, stack12); + nodeAPI->addChild(row5, stack13); + nodeAPI->addChild(row5, stack14); + nodeAPI->addChild(stack1, button1); + nodeAPI->addChild(stack2, button2); + nodeAPI->addChild(stack3, button3); + nodeAPI->addChild(stack4, button4); + nodeAPI->addChild(stack5, button5); + nodeAPI->addChild(stack6, button6); + nodeAPI->addChild(stack7, button7); + nodeAPI->addChild(stack8, button8); + nodeAPI->addChild(stack9, button9); + nodeAPI->addChild(stack10, button10); + nodeAPI->addChild(stack11, button11); + nodeAPI->addChild(stack12, button12); + nodeAPI->addChild(stack13, button13); + nodeAPI->addChild(stack14, button14); + + stack1 = SetStack(nodeAPI, stack1, ARKUI_ALIGNMENT_TOP_START); + stack2 = SetStack(nodeAPI, stack2, ARKUI_ALIGNMENT_TOP); + stack3 = SetStack(nodeAPI, stack3, ARKUI_ALIGNMENT_TOP_END); + stack4 = SetStack(nodeAPI, stack4, ARKUI_ALIGNMENT_START); + stack5 = SetStack(nodeAPI, stack5, ARKUI_ALIGNMENT_CENTER); + stack6 = SetStack(nodeAPI, stack6, ARKUI_ALIGNMENT_END); + stack7 = SetStack(nodeAPI, stack7, ARKUI_ALIGNMENT_BOTTOM_START); + stack8 = SetStack(nodeAPI, stack8, ARKUI_ALIGNMENT_BOTTOM); + stack9 = SetStack(nodeAPI, stack9, ARKUI_ALIGNMENT_BOTTOM_END); + stack10 = SetStack(nodeAPI, stack10, PARAM_NEGATIVE_1); + stack11 = SetStack(nodeAPI, stack11, PARAM_9); + stack12 = SetStack(nodeAPI, stack12, ARKUI_ALIGNMENT_TOP); + stack12 = SetAlignment(nodeAPI, stack12, ARKUI_ALIGNMENT_BOTTOM); + stack13 = SetAlignment(nodeAPI, stack13, ARKUI_ALIGNMENT_BOTTOM); + stack13 = SetStack(nodeAPI, stack13, ARKUI_ALIGNMENT_TOP); + stack14 = SetStack(nodeAPI, stack14, ARKUI_ALIGNMENT_TOP); + nodeAPI->resetAttribute(stack14, NODE_STACK_ALIGN_CONTENT); + + button1 = SetButton(nodeAPI, button1); + button2 = SetButton(nodeAPI, button2); + button3 = SetButton(nodeAPI, button3); + button4 = SetButton(nodeAPI, button4); + button5 = SetButton(nodeAPI, button5); + button6 = SetButton(nodeAPI, button6); + button7 = SetButton(nodeAPI, button7); + button8 = SetButton(nodeAPI, button8); + button9 = SetButton(nodeAPI, button9); + button10 = SetButton(nodeAPI, button10); + button11 = SetButton(nodeAPI, button11); + button12 = SetButton(nodeAPI, button12); + button13 = SetButton(nodeAPI, button13); + button14 = SetButton(nodeAPI, button14); + + std::string id(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode(PluginManager::GetInstance()->GetNativeXComponent(id), column) == + INVALID_PARAM) { + OH_LOG_Print( + LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "StackAlignTest", "OH_NativeXComponent_AttachNativeRootNode failed"); + } + + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, nullptr, "napi_create_object failed"); + return nullptr; + } + + return exports; +} + +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/stack/stack_align_content_test.h b/function/ui_compare/capidemo/entry/src/main/cpp/stack/stack_align_content_test.h new file mode 100644 index 00000000..9ea2bf6e --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/stack/stack_align_content_test.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_STACK_ALIGN_CONTENT_TEST_H +#define ARKUI_CAPI_DEMO_STACK_ALIGN_CONTENT_TEST_H + +#include +#include +#include + +#include "../common/common.h" + +namespace ArkUICApiDemo { + +#define SIZE_90 90 + +class StackAlignContentTest { +public: + ~StackAlignContentTest(); + static napi_value CreateNativeNode(napi_env env, napi_callback_info info); +}; +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_STACK_ALIGN_CONTENT_TEST_H diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/types/libnativerender/index.d.ts b/function/ui_compare/capidemo/entry/src/main/cpp/types/libnativerender/index.d.ts new file mode 100644 index 00000000..34a87e5f --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/types/libnativerender/index.d.ts @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2024 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. + */ + +export const buttonTypeTest: (a: string) => void; + +export const calendarPickerHintRadiusPage1Test: (a: string) => void; + +export const calendarPickerHintRadiusPage2Test: (a: string) => void; + +export const calendarPickerHintRadiusPage3Test: (a: string) => void; + +export const calendarPickerHintRadiusPage4Test: (a: string) => void; + +export const calendarPickerHintRadiusPage5Test: (a: string) => void; + +export const calendarPickerHintRadiusPage6Test: (a: string) => void; + +export const calendarPickerHintRadiusPage7Test: (a: string) => void; + +export const calendarPickerHintRadiusPage8Test: (a: string) => void; + +export const sliderTrackThicknessPage1Test: (a: string) => void; + +export const sliderTrackThicknessPage2Test: (a: string) => void; + +export const stackAlignContentTest: (a: string) => void; + +export const xComponentIdTest: (a: string) => void; + +export const scrollScrollBarWidthTest: (a: string) => void; + +export const scrollScrollByTest: (a: string) => void; + +export const scrollEnablePagingTest: (a: string) => void; + +export const progressTypeTest: (a: string) => void; + +export const progressValueAndTotalTest: (a: string) => void; \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/types/libnativerender/oh-package.json5 b/function/ui_compare/capidemo/entry/src/main/cpp/types/libnativerender/oh-package.json5 new file mode 100644 index 00000000..70466261 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/types/libnativerender/oh-package.json5 @@ -0,0 +1,6 @@ +{ + "name": "libnativerender.so", + "types": "./index.d.ts", + "version": "0.1.0", + "description": "Please describe the basic information." +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/xcomponent/xcomponent_id_test.cpp b/function/ui_compare/capidemo/entry/src/main/cpp/xcomponent/xcomponent_id_test.cpp new file mode 100644 index 00000000..6f4cbbb4 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/xcomponent/xcomponent_id_test.cpp @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2024 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 "xcomponent_id_test.h" + +#include +#include + +#include "../manager/plugin_manager.h" + +namespace ArkUICApiDemo { + +static auto SetWidth(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float width) +{ + ArkUI_NumberValue width_value[] = { { .f32 = width } }; + ArkUI_AttributeItem width_item = { width_value, sizeof(width_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_WIDTH, &width_item); + return nodeHandle; +} + +static auto SetHeight(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float height) +{ + ArkUI_NumberValue height_value[] = { { .f32 = height } }; + ArkUI_AttributeItem height_item = { height_value, sizeof(height_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_HEIGHT, &height_item); + return nodeHandle; +} + +static auto SetBackgroundColor(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle nodeHandle, uint32_t color) +{ + ArkUI_NumberValue color_value[] = { { .u32 = color } }; + ArkUI_AttributeItem color_item = { color_value, sizeof(color_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_BACKGROUND_COLOR, &color_item); + return nodeHandle; +} + +static auto SetMargin(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, float margin) +{ + ArkUI_NumberValue margin_value[] = { { .f32 = margin } }; + ArkUI_AttributeItem margin_item = { margin_value, sizeof(margin_value) / sizeof(ArkUI_NumberValue) }; + nodeAPI->setAttribute(nodeHandle, NODE_MARGIN, &margin_item); + return nodeHandle; +} + +static auto SetXComponentId(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, const char* id) +{ + ArkUI_AttributeItem item = {}; + item.string = id; + nodeAPI->setAttribute(nodeHandle, NODE_XCOMPONENT_ID, &item); + const ArkUI_AttributeItem* result = nodeAPI->getAttribute(nodeHandle, NODE_XCOMPONENT_ID); + if (std::strcmp(item.string, result->string) == 0) { + nodeHandle = SetBackgroundColor(nodeAPI, nodeHandle, COLOR_GREEN); + } + return nodeHandle; +} + +static auto SetXComponent(ArkUI_NativeNodeAPI_1* nodeAPI, ArkUI_NodeHandle& nodeHandle, const char* id) +{ + nodeHandle = SetWidth(nodeAPI, nodeHandle, SIZE_200); + nodeHandle = SetHeight(nodeAPI, nodeHandle, SIZE_100); + nodeHandle = SetBackgroundColor(nodeAPI, nodeHandle, COLOR_YELLOW); + nodeHandle = SetMargin(nodeAPI, nodeHandle, PARAM_1); + nodeHandle = SetXComponentId(nodeAPI, nodeHandle, id); + return nodeHandle; +} + +napi_value XComponentIdTest::CreateNativeNode(napi_env env, napi_callback_info info) +{ + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "XComponentIdTest", "CreateNativeNode"); + + size_t argc = PARAM_1; + napi_value args[PARAM_1] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + size_t length = PARAM_64; + size_t strLength = PARAM_0; + char xComponentID[PARAM_64] = { PARAM_0 }; + napi_get_value_string_utf8(env, args[PARAM_0], xComponentID, length, &strLength); + + if ((env == nullptr) || (info == nullptr)) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "XComponentIdTest", "GetContext env or info is null"); + return nullptr; + } + + ArkUI_NativeNodeAPI_1* nodeAPI = nullptr; + OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nodeAPI); + auto column = nodeAPI->createNode(ARKUI_NODE_COLUMN); + auto xComponent1 = nodeAPI->createNode(ARKUI_NODE_XCOMPONENT); + auto xComponent2 = nodeAPI->createNode(ARKUI_NODE_XCOMPONENT); + auto xComponent3 = nodeAPI->createNode(ARKUI_NODE_XCOMPONENT); + auto xComponent4 = nodeAPI->createNode(ARKUI_NODE_XCOMPONENT); + auto xComponent5 = nodeAPI->createNode(ARKUI_NODE_XCOMPONENT); + + nodeAPI->addChild(column, xComponent1); + nodeAPI->addChild(column, xComponent2); + nodeAPI->addChild(column, xComponent3); + nodeAPI->addChild(column, xComponent4); + nodeAPI->addChild(column, xComponent5); + + xComponent1 = SetXComponent(nodeAPI, xComponent1, "XComponentId1"); + xComponent2 = SetXComponent(nodeAPI, xComponent2, "X C o mponentId2、XComponentId3+-*/."); + xComponent3 = SetXComponent(nodeAPI, xComponent3, ""); + // 128 characters + xComponent4 = SetXComponent(nodeAPI, xComponent4, + "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456" + "789012345678901234567890123456789012345678"); + // 129 characters + xComponent5 = SetXComponent(nodeAPI, xComponent5, + "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456" + "7890123456789012345678901234567890123456789"); + + std::string id(xComponentID); + if (OH_NativeXComponent_AttachNativeRootNode(PluginManager::GetInstance()->GetNativeXComponent(id), column) == + INVALID_PARAM) { + OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "XComponentIdTest", + "OH_NativeXComponent_AttachNativeRootNode failed"); + } + napi_value exports; + if (napi_create_object(env, &exports) != napi_ok) { + napi_throw_type_error(env, NULL, "napi_create_object failed"); + return nullptr; + } + + return exports; +} +} // namespace ArkUICApiDemo \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/cpp/xcomponent/xcomponent_id_test.h b/function/ui_compare/capidemo/entry/src/main/cpp/xcomponent/xcomponent_id_test.h new file mode 100644 index 00000000..53234926 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/cpp/xcomponent/xcomponent_id_test.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 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 ARKUI_CAPI_DEMO_XCOMPONENT_ID_TEST_H +#define ARKUI_CAPI_DEMO_XCOMPONENT_ID_TEST_H + +#include +#include +#include + +#include "../common/common.h" + +namespace ArkUICApiDemo { + +class XComponentIdTest { +public: + ~XComponentIdTest(); + static napi_value CreateNativeNode(napi_env env, napi_callback_info info); +}; + +} // namespace ArkUICApiDemo +#endif // ARKUI_CAPI_DEMO_XCOMPONENT_ID_TEST_H diff --git a/function/ui_compare/capidemo/entry/src/main/ets/entryability/EntryAbility.ets b/function/ui_compare/capidemo/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 00000000..4d479858 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2024 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. + */ + +import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit'; +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { window } from '@kit.ArkUI'; + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); + } + + onDestroy(): void { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + // Main window is created, set main page for this ability + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err) => { + if (err.code) { + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.'); + }); + } + + onWindowStageDestroy(): void { + // Main window is destroyed, release UI related resources + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground(): void { + // Ability has brought to foreground + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground'); + } + + onBackground(): void { + // Ability has back to background + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground'); + } +} diff --git a/function/ui_compare/capidemo/entry/src/main/ets/entryability/EntryAbility.ts b/function/ui_compare/capidemo/entry/src/main/ets/entryability/EntryAbility.ts new file mode 100644 index 00000000..e747ab78 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/ets/entryability/EntryAbility.ts @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2024 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. + */ + +import UIAbility from '@ohos.app.ability.UIAbility'; +import hilog from '@ohos.hilog'; +import window from '@ohos.window'; + +export default class EntryAbility extends UIAbility { + onCreate(want, launchParam) { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); + } + + onDestroy() { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage) { + // Main window is created, set main page for this ability + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err, data) => { + if (err.code) { + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground() { + // Ability has brought to foreground + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground'); + } + + onBackground() { + // Ability has back to background + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground'); + } +}; diff --git a/function/ui_compare/capidemo/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets b/function/ui_compare/capidemo/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets new file mode 100644 index 00000000..9afbfdf8 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2024 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. + */ + +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { BackupExtensionAbility, BundleVersion } from '@kit.CoreFileKit'; + +export default class EntryBackupAbility extends BackupExtensionAbility { + async onBackup() { + hilog.info(0x0000, 'testTag', 'onBackup ok'); + } + + async onRestore(bundleVersion: BundleVersion) { + hilog.info(0x0000, 'testTag', 'onRestore ok %{public}s', JSON.stringify(bundleVersion)); + } +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/ets/pages/Index.ets b/function/ui_compare/capidemo/entry/src/main/ets/pages/Index.ets new file mode 100644 index 00000000..121bd709 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from "libnativerender.so" +@Entry +@Component +struct Index { + build() { + Column() { + Column() { + + XComponent({ + id: 'xComponentId', + type: XComponentType.NODE, + libraryname: 'nativerender' + }).onDestroy(() => { + console.log('onDestroy'); + }).onAppear(() => { + // render.waterFlowCachedCountTest('xComponentId') + }).width('100%') + .height('100%') + }.margin({ + top: 27, + left: 12, + right: 12 + }) + .height('100%') + .width('100%') + } + .width('100%') + .height('100%') + } +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/module.json5 b/function/ui_compare/capidemo/entry/src/main/module.json5 new file mode 100644 index 00000000..aa0ed1ba --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/module.json5 @@ -0,0 +1,45 @@ +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ts", + "description": "$string:EntryAbility_desc", + "icon": "$media:icon", + "label": "$string:EntryAbility_label", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ], + "requestPermissions": [ + { + "name": "ohos.permission.SYSTEM_FLOAT_WINDOW" + }, + { + "name": "ohos.permission.INTERNET" + } + ] + } +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/resources/base/element/color.json b/function/ui_compare/capidemo/entry/src/main/resources/base/element/color.json new file mode 100644 index 00000000..3c712962 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/resources/base/element/string.json b/function/ui_compare/capidemo/entry/src/main/resources/base/element/string.json new file mode 100644 index 00000000..f9459551 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "label" + } + ] +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/resources/base/media/background.png b/function/ui_compare/capidemo/entry/src/main/resources/base/media/background.png new file mode 100644 index 0000000000000000000000000000000000000000..f939c9fa8cc8914832e602198745f592a0dfa34d GIT binary patch literal 57364 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 A4*&oF literal 0 HcmV?d00001 diff --git a/function/ui_compare/capidemo/entry/src/main/resources/base/media/background_blue.png b/function/ui_compare/capidemo/entry/src/main/resources/base/media/background_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..f939c9fa8cc8914832e602198745f592a0dfa34d GIT binary patch literal 57364 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 A4*&oF literal 0 HcmV?d00001 diff --git a/function/ui_compare/capidemo/entry/src/main/resources/base/media/background_green.png b/function/ui_compare/capidemo/entry/src/main/resources/base/media/background_green.png new file mode 100644 index 0000000000000000000000000000000000000000..385aee55284cd8a5ebde3910bf82c494f057fecf GIT binary patch literal 932 zcmeAS@N?(olHy`uVBq!ia0y~yU{nBM4kiW$hS?7-uLCK@;vjb?hIQv;UIIBR>5jgR z3=A9lx&I`x0{NT;9+AZi419+{nDKc2iWCM0W=l^O$B>G+x0ekW4=4y6IIx`QgFZ)m z$w8-WyH&Y1ox96yvM*dA!GJ@O$BC_Z!a;?UQRZkkj3xpjWBapCEP{nkN*4fg7K5j& KpUXO@geCx)8vc*~ literal 0 HcmV?d00001 diff --git a/function/ui_compare/capidemo/entry/src/main/resources/base/media/background_red.png b/function/ui_compare/capidemo/entry/src/main/resources/base/media/background_red.png new file mode 100644 index 0000000000000000000000000000000000000000..742044d80325e183663d8dffd8a2e5a37c6bed90 GIT binary patch literal 933 zcmeAS@N?(olHy`uVBq!ia0y~yU{nBM4kiW$hS?7-uLCK@;vjb?hIQv;UIIBR>5jgR z3=A9lx&I`x0{NT;9+AZi419+{nDKc2iWCM0W-Ct@$B>G+x0ekW4=4y6II!GG;^TTA z!PpHG-sW{St=WB^q4&KghXjukTl0j23MmF0lB3Mga2QPlXU_1KI5OwBoBDJBvlfG= LtDnm{r-UW|C2#;V literal 0 HcmV?d00001 diff --git a/function/ui_compare/capidemo/entry/src/main/resources/base/media/background_yellow.png b/function/ui_compare/capidemo/entry/src/main/resources/base/media/background_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..1fa2f73575caef6b5fcf736b6eb2e8ff34802713 GIT binary patch literal 1073 zcmeAS@N?(olHy`uVBq!ia0y~yU{nBM4mJh`29f4<4M2*qILO_JVcj{Imp~3nx}&cn z1H;CC?mvmFKt5-IM`SSr1K&XqX529``z-?l^D$2s$B>G+x7QYmHU|hW9Q5Z|*!3ko zC?)DZqCy*+!-lkDcVd};=UH7VQ6f6XU=+Y(PV0)basIi~}C* c6Ak|@Kg`G1YqZD*n9UhHUHx3vIVCg!06rk|JOBUy literal 0 HcmV?d00001 diff --git a/function/ui_compare/capidemo/entry/src/main/resources/base/media/foreground.png b/function/ui_compare/capidemo/entry/src/main/resources/base/media/foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..4483ddad1f079e1089d685bd204ee1cfe1d01902 GIT binary patch literal 12430 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 YcF$itxOuH`1*p99boFyt=akR{06QRBkN^Mx literal 0 HcmV?d00001 diff --git a/function/ui_compare/capidemo/entry/src/main/resources/base/media/layered_image.json b/function/ui_compare/capidemo/entry/src/main/resources/base/media/layered_image.json new file mode 100644 index 00000000..fb499204 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/resources/base/media/layered_image.json @@ -0,0 +1,7 @@ +{ + "layered-image": + { + "background" : "$media:background", + "foreground" : "$media:foreground" + } +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/resources/base/media/src.jpg b/function/ui_compare/capidemo/entry/src/main/resources/base/media/src.jpg new file mode 100644 index 0000000000000000000000000000000000000000..36a19cd6b90bb98511116f5015c74fe2f860249d GIT binary patch literal 9329 zcmb7qWmFtb^yT30g9LXA5Zv8eh8cnfhk-zFCuj%|bOv{s!6mqc;1(_2&!lvsa$2k-gm|0kY$03_G|Pk<*H3JCy}1O<%**bT$NJ;fVR4gK@sA==;*(NQ@|4{y4zUTWhB_imyP=Ke8M!d5xS?-m z^A`oB2-u5N)HdS$X$gRjhVmRI8VNuSa1c2q^df^*-G@MUMsvl(8Ap>8W0Z9dK-ad& z1)3#I0eO;C&Zo~9HOdRH9>slZ`Df0aewrdGLoZx&{HL;+i{==X<_7Bz2J#VEn9>iV z*nTQLxZxo~d*ce@(qrcrkGo17zo0r_Bv;u!i?^RF9R zuTbW4uTVR-?gMCH=WY37eJf0yaxdT};9DIe0b@fZ=MqXX=C)=R#2fLg;ei6C9oQ*6 z*5vm%Wl5^%xyjZm#$Qb)Z|)O1w}Ri3oQiv=+Bfkh0K>x;`)Ep6O$#hxiH>iB%cRd8 ziu_)mzKMTtKs6ebz<&1kYnnkk=bl7T)g>{d^z~TXbt3L}-8~xh(@133DU55)C-}{c z+7>?cjNumH=Fv43?+ydyJGwLMfWsuouWRBjRip~#OSQkJFs&Me%8^Ib<2SAy<^vW-e34_GT;XYr`}4-SYIaW0E7JRO3{?tUFm-BNJdD3 z8u&F_amTTNyhD1m#=;lsTb`^u8@~1&GYE_pvkY+qE@Sg_e;&oF_mz265$~jvOSyi7`4uPX zd;S5^Gk>nevKfnpN#w*rD*c5-ytwjM|5=J0d*N!aNclSKpfMw84Yv z+&Vguj6Oz@m0X|Q9C!!2_Ordl!Hly({eIm`Y zg`(i0ck6!qWy#vnc2=p2wIK_FWSe75pF8n5ff2;e9MBaOy0h9Go|*V4_lPdv=zs4* z8E~lfvlIUr1@0z!$Cbf6;z%7=N0vUYIeXtWD4!*W9jRwf(x3qSMi{VGm-l*daPk{p zhWSOAK)vk9Cb`y>D9zjSAvNfle;lO23eyFZt&(O#Hb{T$@PjdK57}OyuxaOD0&!AKG1W*+CbMkmZ zQXX`yr~Jr75cI}DvY?uV+nhuztVGT317&soa|Fi0NBBSZ4p*rA4~}%V`fz-H_hU=e zw?glFY+PlxrsG4Tz6PNm(BB(=ms6*){JEG|c8CG_t)OFM15vZLll=^~^d_5^+^Z(y z{8nm#F6l`_)|tvHc&V@xu`qrtbvs;X*T%h{)8uRDFM~N*<)1wt%j^4j0+x^x11rGh|rTo}C`HrjZaUVHjf&F9^Ztes+7~ZLg^ks+B zT6gOcpeB6!TQ`4wwFHNaUsV)OS@taAV8{`=IfMpY3P~!W+PruUos{Z-hfaJC`D0sg zH*h@q(+zLYVNN9p;_c55ZZ@YFHRSC?YeoA7`K(p`~*nUbA{C#Omspfe6BM? zLfC5}~NQ6*q9&`ga{ie=7v|6$YKl7@cGR zs*QreY4T-k0(oq_;y_e_;k?)MM-mMOXtl7S%;jrk)JrYi7QhJoCAP{ZPED)KIslyl zYm4`+zqO;q+m<4Ppp-SciMu$C#-z-w%@{=06#n8D-U+diU4&R-+ljFaAA9?8xm!P(^y}t zUTTZiuceYjXvOHFCw>ltI*%wtwaw^o=ZDkHATqAQ6xupI)UAds`Jh_&BV;VP@F@

(zs%@2G0f&qW>j6L^ra+ z)REM8xE;P*Od#Ww$HeVXhCAXTU;Yt@B6(PvKh8eh$@UXPzK}VS$WF0NcF(l|=&bsW zo%oYMd8Hv2MA1MqSDmq|io~OgmiwrYshK!DWr2yk)bb^u{BLY4{0YGEFxql7s-GiT zFPo9Z1)87D(h*l&Hx~Q-qB|_yrE-9kq=*$?zRu?a-ZA4^M1b_dQ)eXR#E{-`onp!o z8DhV7IGV7;LDsl%T4P2feD#qM+>a&+xQHGUeFI}==EdXaT~nu-VPipbH^`FadT!_G z9S_Tyie=9=8@=W~-Fa1m(us|_(6;A$kUa()l4w%|1 znyYO>;Ez=QEIWuQHALA^XJ2Dm&Gpe6epJ;2Kapd`XLDMu68)h==k_r$h}HWxf;s9U zY~i2tf~y-jGsF~p@b)BRL_|1^r9fW)(#@qL2Ho7f9^K>fUQV9BU7aDHY+3c>RE?D`M!Ptzcg0qEhiJ1{@mMlfnklI8SBt00IKjHCY#i zi`^>L?agg*<7u#3A5TZlis-bUlZL@-;*=h9vaQ8LrGUq%qEbtmwhugox1Qycw z>X7}n$(1{vzYFbT8Pli)%IrXr(c+{+Z7)Q$2JSRt%VS)mzf5sO%tsV6U}L(_#6~;c za1qg7FdBSHQj>DNPKd2Dzv! zFt_oN-}3N%O4>x})cCX5(nnTWP5OnH+m92JCWVdEMR$#>yk0?$G*le&YEJ8N>u40N z5qi@oe3P8v?rhw}1-~|wRJ~jC=Tew652N|a{(v!cEZ$1ouWAkD1fob`{#7w=UByS5 zsy0gn$UBr7);DXu`B8P;%M3}fmO*D`FR058?47IlkySYg&1#@g1fzm7z<_CYz=jDs zwRr~^ff|6#?0T(#t_hakrGZFE8&Q=FS%DFYE&AcRX$#3xXS07(cv^uqD6vxL;v&xD zY&g0pJp}b-GP;iWZ;%^z!#h$>03{-gOb8bI^~npM19jqyK*gD5k5E`6hVaj!cyi0G?SW;@r+X-*Q-oR|vOUEf>tfK%~bNwJ`*BdTqh zZ&1FuX8J74J3Gx4$!W5As=m=?#g!73d#u5ENv3|GHff(`CUTVBdU( zp%@*)BHgr}W9UqC7p9JZYy9Y+=P%Ke+gOLjM9wr;7~WDs7#+<_`Fl$FG43SYsW^O9 z`ycv%#EqP%y~Hbru9L0rJDPTlT8T|;YS|jJTj|_rkbrIm%3-ole2S7v?WQmcE)kO& zfdxShp1=XM-jM7ipG(9CT2d}^(cJ4z%2z;dv--@Dk+VY`*_nlqrnco+PE#OX8tW%w zHK*YU0|i`-B9dP)ATF32-?PNIU6kHn(&wmx0!iNXr(@-}G447|jRgkIcMg3RrsUP> zQlhD#t1d5kg==AM<1u)*X_$Yx#miGjSBuRGy~fHh9k@shEfccckCB#IxzBu0#$8wP zKe7o%le|$cNSYz6>9O~La*G%{u_;y7dTuGK#N#mE!TD0E4EDd~l8KLLjj>tz+$oOt z*k-9AHv>y{q`oRqmHjl_p1c1#N6!|eAE0o4r$n}Pw7bu+^-=h?m}V|3qU`;v(kFoT z?pPabRR7%liz&PqOVn| z1rHsRjS?hXpkluf{C+_AF$y<5E*5Qg5D#+UsWqAVub^H!yUwG!!Ss@hsp8 zFk;g9;L7medoFqQ?Fqob`vi!80+7V`MXcXkf2ADbea|)0#3GQA9CbUr?`{XKBqgEe zQBA);sb1u5N!Co&vjUKPcmaLamYz)xiUGXi0I;Z8C~@+MJ0)}LZU`mny1o*MKh8RQ z(TlyR;?OK<25qih`V)G^JIVd)YX0}`-{nT^ zrsbVsfM;~^my|@b($jdJ!}uu1RBLU4Z)Dg*8JdEo*d-O*e5@GWNE(_wS6BC{1Z{Lu z^Mw$DzfsFR5uefgFJpyl9|~WZ5l$E)LC_G<9EpqUTuL@hrpGx3$#56ZT^c%-goHm$ zptF_V@4#?q$OJjU7f8y@Ehs+woKb%#bs_!R>E|$SrVGP4#@+B3cayQ%+aY}2i96vg zX?WW#tTr9iS^}Xq|MXt*VWDwv zW`2*ZNHO(#J7kFA39zPR^>u#8>S@Xpo*_`w9A+Dr1*Mz>F& zZ-h$oUfil3F*R4Tiq>R+5IMvSti(a}nx#9I;oQ>YzIeKE zf9kH%v@*t9EO`65lQ-43>rRrY zS?M$CN^W}70)&4bfJm6rE!{caNz4HAjo&_14u?p-hb z7}87qkKh-BhhvMiap%%f;iR<3?|+j(mq2>GEqo%hsaHye|7W@)&x-gRxqatW0P}i; zSoz8bbq$}zuss2k*ICxA{KNjV2+JNMRr5ElC7369GfyG(#NQX%<^E{G-|nh|@1263 z1??m{e)yu`tc#h>dMjc%$F|ToxN1nzPie1Q^bwN^NH?Gf>TVM9m^6x3pQooPfMR8C z^ZH{y8N%hT4oAz{e)}!qW~H$ue;7s%;c8h}6-x}uyaN+~ZHk(u`Pp>CnRvm7`6`JG zRVAM5%*LZrj5}VqZwU0fx4Rg|3;Y{c8+?{Ehs&v@Ca= zb{12TD#luwKYEe#qKfAyea&~SL#}KFC}#?lcp+(H=Nw3^8s{_fR?HXVwNM|;>u4Vk z+%Z6*Of1R-gQV+weypP*H54I+KSUUV*L!i7^oqtl`Zc9F;uZ!w&3Rf zIrxx;m8DvM9*Q4WCq5iIqWH?F^5No<vys*2WwAjgUb2gpH1 zq@Jm>pn{n$Ir09_$#QEd2F~aDDml+2 z(X^Lvr+fLaW?H0$QzfrLnpk%p#n?Z*7@0VYdaV9VLJAAS-xSf6EqYHK=;wsOGZr)y zQ$Ye#&#JT_HX?s1>|a8OuN~68C?Huc`M}PkhN2mUSs0g-oEAE%><|9*EX#=sdZXV4`x2Jr z50#x?+Rj0qcWR@F5z^W}{?Ikf_7H)>ecq>)1rA^QlN~3{svWs--hbQ_(XDZ$b;$sPnqwi1@5Gq-1F|2XE*_4 zRb^bBjHWao6ciMl>)xJIIN0p{?<_2J7^AG(r@&FfpL``U!+Ca?v~32OGP|f}p94s8 zVvPJHFmyH02uqI~?~qbZ`?^b~XWzXt4%cl?Q9nsYBKREqoO3Zxf<>sBjw5#I)7a7_ z&Czh0C97E54q#EA?jf;0{ZO|xE(>&caSe;kD0=>0!rCrq;uAj@YM||(%uM^h0Qyy* z(f9$YOeIj0V>qYnTh4HfnOVl>+Ty@^KQ6`gc=b>?&UcUpaDe*Z7t2O3RJrj8imHG` z$oR;-Y?J*-Q|QHu=W&r}di;F^a$MoClptGzSMnv(k*hi5ZJL<}`_PJ8gkF>1R*hSJ zgYH%dEO;kY>4L;B3kkzwIAtJo@)zeS4KgAd)AmoX1BZbV4v*V^ZW$QbUw{sf@D z3-wQm)eipiH^jMiE9|(eT0l#|*=&N-xM+~|U&%-INf^o|K^4$| zSow7D&-zL3698hYkfePo@W6~6`dw_~I+LEGd*R<-24ic-FVyYydnyI$`5tZ(9G>Y2 zyKBTzl@kQ0RGL-Cmt+uNj$b3BdX|Nt7l!1;7dq`bPW(nM^5`em+^#rfG)bZkFWog5EDYSzucph6!@V? zK|@~}n$pF`Ty|xN1*KVG#STpf zZuj-;uvVxsVrXomJ8zZSV+>>Cynu(%-xLPdwJRzv!Dk=JV91K`dX#HAU!6GReNL$& z4XjU4^ppG97e0IUXh0@0e3AHLWidFVSu-VhuUp>3FsUXv;v z=EPrVW}XGhpU!5KQ|DfGMj7mQu>#H>q*Y$$sS2V;>l!E;U!7V}J@~))c~ng~RO&c< zqAD^=l~rTur%NI46ury{3=rZX*XUL9mlMd`>Z|{eo0IQZI?cIPYtKC!7zOcpJyBIV zHVhO`I}9uQXGwOa1a~vzzxlX z_YV?jCc!z5&UJw%G*>9UE>#mb7_v$E|}nR zBB&Mb70V18{soVNC4i$Eo&-ig$lqtR>=B(bz&( zL;600Ss#$MbtzEY!7jpCJft)y^%dyK--0$)sp~lZ1fW`K@SXE2HTcNK2cBq8PorzQ z?~Ue0wD2?~R^s9s4uAIB%%APN@ck5HzNJ$Q&r+439f9cTA3B;ff;dg>b4}%6U~FbC z>hiB=U1elle#V)&g$v9R=eV`e#j2`4#-VUW6R25 zNz}}IeOqk_lBw3Psa~rrO&$i)x-UU|O8ng2nZ1#oB2ee~iTvoUi)by1&QLN6!r``l zjDl4``C#$#VfsFkL(y@Wp&_&q<4497(Q#nBd`EG~D~BU5$7Pbc_MT_X)l(@2`9(QzZO>X*iepHJyPA@tefr0oD_1755=P9)~ZO3XJPOH4qn5G;iwuKA%}!8K7yR? z&irx0C~g0~dz&V`s+;aVJk9mxdUn5k|1or;RNToVl_1?8_Cm%RQF`&QH>Js7)!93sOzlOg?49gkcP&T zKbE(edAl!!g~xIJDoHOsI4w)jfXOz}Fgb^l{`e0or(bgSk)||o4Si~H=$reks^_l= z_dOjVT;-rXmFNnIbEg(5!rfl^;2{~Cwh2&hfzBb3r&sGe#Ad>Z&g;KzLzvuN&UVl^ z5sAkBTW6WM|0e73xvG?tC=+@E=}paS_zqWgQn19|MB#KS{iHsrl7M8NZ@;ZIJz-Sk z7D{Vho&ZZ?3G65{@6JQHOC0!>a=UF%+fJ#tqcMvjcPeDn%X~gk-oJP6NkH2od;O33h z$~(TYHTfJ|u*D$0rvLmMB&tV@ZVO|&Czao2OfTh^v&`xfpmGgEURJPM;}lH%RX)-A zL>m>!K5WpB5$1voa3M7szk@zF&cRw|SxZ{ItZjO!1?2$^vjZy@Lg3m?eQ z%4I&HFJ7K5!nv~3g+Y3jSpHJV1Tw4>g?-2Za?Ng9HIfES`V|RDS3~_CrWz-rbT)WHa9oXmun{%Q^U+Ta6fo_cFAN6ktq@j!KVVjAu9JC&#!IyD-7ptF) zhKd)f5^%4=25b)raxY>ed3|duv=LJlpJK2o^UpV9?;A*an~4)X1}kRg1-GFXEr5#5 ztC)+puya4Bc5k4LPQPQocX`FaSE{cmN^oBSjUAr32s8RYzhQLn&A|h_1B+Q6{VqxG zfz~;&rM7K9Q@R&FH|&v+l^cw-t75t&=E$gGD5$$Oys|1FPQQ}c2&E5QinKSXtU&g- z>snrXTOJynAEP+xnb6S6SkcfmmAadOoNsG}Q>btA0b*`bWZ@}nd=3kMwsesm zY}@ttXC+ag7)cVjxS`AbLFvH>l~XHk4(>^7nPee(J>#5Oa^1kR$44{jZ!NsTsBEN~ zzU3P!;}0M7u=k>eTV#|L*$6zCr5zy-$=i34u_(Ib1jH$4W_mUuh?QI~kzZYU%cmd8 zomz59QyOE}bbp+XOjFQBPsELC>cZxBUv7(ICkxPj92vK>d(Lec^SbS%5kg1*b+?u2penjBXf|-6HJ;f5Ix(ptNspShnzSXVSI^xBffN zu$`df|1K<&XMH8*z61mMG8mgwOu;AGR3ncmkJjI=@gzh>Zy)}q9) zA_Iy;_@wHnh_VtykK;Q#P!bG#l*z!Bu~5CxZ9~3GtCHhG9=tJi#?;hbZyRj(;aTM9 z^QlG}=gtrw|KdeB)fe%{eBNs6=l#Ugl1!SKxPci7Tu$VjBd><({)qi#f~^I`kuRh{ Pf0@AI^sGYY)8hXE54%F} literal 0 HcmV?d00001 diff --git a/function/ui_compare/capidemo/entry/src/main/resources/base/media/startIcon.png b/function/ui_compare/capidemo/entry/src/main/resources/base/media/startIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..205ad8b5a8a42e8762fbe4899b8e5e31ce822b8b GIT binary patch literal 20093 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

c)ijgxDm}8EsRXFt3h@+Ufr7@DN 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 literal 0 HcmV?d00001 diff --git a/function/ui_compare/capidemo/entry/src/main/resources/base/profile/backup_config.json b/function/ui_compare/capidemo/entry/src/main/resources/base/profile/backup_config.json new file mode 100644 index 00000000..78f40ae7 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/resources/base/profile/backup_config.json @@ -0,0 +1,3 @@ +{ + "allowToBackupRestore": true +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/resources/base/profile/main_pages.json b/function/ui_compare/capidemo/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 00000000..1898d94f --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "pages/Index" + ] +} diff --git a/function/ui_compare/capidemo/entry/src/main/resources/en_US/element/string.json b/function/ui_compare/capidemo/entry/src/main/resources/en_US/element/string.json new file mode 100644 index 00000000..f9459551 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/resources/en_US/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "label" + } + ] +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/main/resources/zh_CN/element/string.json b/function/ui_compare/capidemo/entry/src/main/resources/zh_CN/element/string.json new file mode 100644 index 00000000..597ecf95 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "模块描述" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "label" + } + ] +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/Application/AbilityStage.ts b/function/ui_compare/capidemo/entry/src/ohosTest/ets/Application/AbilityStage.ts new file mode 100644 index 00000000..35d7138e --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/Application/AbilityStage.ts @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2024 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. + */ + +import AbilityStage from '@ohos.app.ability.AbilityStage'; + +export default class MyAbilityStage extends AbilityStage { + onCreate() { + console.log('[Demo] MyAbilityStage onCreate'); + globalThis.stageOnCreateRun = 1; + globalThis.stageContext = this.context; + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/MainAbility.ts b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/MainAbility.ts new file mode 100644 index 00000000..bb42e004 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/MainAbility.ts @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2024 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. + */ + +import Ability from '@ohos.app.ability.UIAbility'; +import Settings from '../test/common/Settings'; + +const TAG: string = '[createWindow]' + +export default class MainAbility extends Ability { + onCreate(want, launchParam) { + // Ability is creating, initialize resources for this ability + console.log(`${TAG} MainAbility onCreate`); + globalThis.abilityWant = want; + globalThis.abilityLaunchParam = launchParam; + } + + onDestroy() { + // Ability is destroying, release resources for this ability + console.log(`${TAG} MainAbility onDestroy`); + } + + onWindowStageCreate(windowStage) { + // Main window is created, set main page for this ability + console.log(`${TAG} MainAbility onWindowStageCreate windowStage=` + windowStage); + globalThis.windowStage = windowStage; + globalThis.context = this.context; + + setTimeout(() => { + console.info(`${TAG} setTimeout`) + Settings.createWindow('MainAbility/pages/DemoIndex', { + width: 720, height: 1280, dpi: 230 + }) + }, 1000) + } + + onWindowStageDestroy() { + //Main window is destroyed, release UI related resources + console.log(`${TAG} MainAbility onWindowStageDestroy`); + } + + onForeground() { + // Ability has brought to foreground + console.log(`${TAG} MainAbility onForeground`); + } + + onBackground() { + // Ability has back to background + console.log(`${TAG} MainAbility onBackground`); + } +}; \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/componet/CommonView.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/componet/CommonView.ets new file mode 100644 index 00000000..a049a879 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/componet/CommonView.ets @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2024 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. + */ + +@Component +export struct CommonView { + pageTag: string = ''; + + build() { + Column() { + Column({ space: 10 }) { + XComponent({ + id: this.pageTag, + type: 'node', + libraryname: 'nativerender' + }).onDestroy(() => { + console.log('onDestroy'); + }).backgroundColor('#FFEEEEEE') + .width('100%') + .height('100%') + }.margin(20) + .height('100%') + .width('100%') + } + .id(this.pageTag) + .width('100%') + .height('100%') + } +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/DemoIndex.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/DemoIndex.ets new file mode 100644 index 00000000..8e9adc26 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/DemoIndex.ets @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2024 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. + */ + +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import { Hypium } from '@ohos/hypium'; +import testsuite from '../../test/List.test'; + +@Entry +@Component +struct DemoIndex { + aboutToAppear() { + setTimeout(() => { + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + let abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + console.info('start run testcase!!!') + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite) + }, 2000) + } + + build() { + Flex({ + direction: FlexDirection.Column, + alignItems: ItemAlign.Center, + justifyContent: FlexAlign.Center + }) { + Text('ARKUI CAPI DEMO') + .fontSize(36) + .fontWeight(FontWeight.Bold) + } + .width('100%') + .height('100%') + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/button/ButtonTypeTest.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/button/ButtonTypeTest.ets new file mode 100644 index 00000000..507e3cb5 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/button/ButtonTypeTest.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct ButtonTypeTest { + PAGE_TAG: string = 'ButtonTypeTest'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.buttonTypeTest(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage1Test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage1Test.ets new file mode 100644 index 00000000..21ec5732 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage1Test.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct CalendarPickerHintRadiusPage1Test { + PAGE_TAG: string = 'CalendarPickerHintRadiusPage1Test'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.calendarPickerHintRadiusPage1Test(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage2Test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage2Test.ets new file mode 100644 index 00000000..ce7fe8f8 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage2Test.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct CalendarPickerHintRadiusPage2Test { + PAGE_TAG: string = 'CalendarPickerHintRadiusPage2Test'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.calendarPickerHintRadiusPage2Test(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage3Test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage3Test.ets new file mode 100644 index 00000000..34eac407 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage3Test.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct CalendarPickerHintRadiusPage3Test { + PAGE_TAG: string = 'CalendarPickerHintRadiusPage3Test'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.calendarPickerHintRadiusPage3Test(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage4Test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage4Test.ets new file mode 100644 index 00000000..28532850 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage4Test.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct CalendarPickerHintRadiusPage4Test { + PAGE_TAG: string = 'CalendarPickerHintRadiusPage4Test'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.calendarPickerHintRadiusPage4Test(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage5Test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage5Test.ets new file mode 100644 index 00000000..42064add --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage5Test.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct CalendarPickerHintRadiusPage5Test { + PAGE_TAG: string = 'CalendarPickerHintRadiusPage5Test'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.calendarPickerHintRadiusPage5Test(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage6Test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage6Test.ets new file mode 100644 index 00000000..444bd07c --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage6Test.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct CalendarPickerHintRadiusPage6Test { + PAGE_TAG: string = 'CalendarPickerHintRadiusPage6Test'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.calendarPickerHintRadiusPage6Test(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage7Test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage7Test.ets new file mode 100644 index 00000000..394667c6 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage7Test.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct CalendarPickerHintRadiusPage7Test { + PAGE_TAG: string = 'CalendarPickerHintRadiusPage7Test'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.calendarPickerHintRadiusPage7Test(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage8Test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage8Test.ets new file mode 100644 index 00000000..2864b454 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage8Test.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct CalendarPickerHintRadiusPage8Test { + PAGE_TAG: string = 'CalendarPickerHintRadiusPage8Test'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.calendarPickerHintRadiusPage8Test(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/progress/ProgressTypeTest.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/progress/ProgressTypeTest.ets new file mode 100644 index 00000000..b6a1d0e8 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/progress/ProgressTypeTest.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct ProgressTypeTest { + PAGE_TAG: string = 'ProgressTypeTest'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.progressTypeTest(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/progress/ProgressValueAndTotalTest.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/progress/ProgressValueAndTotalTest.ets new file mode 100644 index 00000000..cf985c4e --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/progress/ProgressValueAndTotalTest.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct ProgressValueAndTotalTest { + PAGE_TAG: string = 'ProgressValueAndTotalTest'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.progressValueAndTotalTest(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/scroll/ScrollEnablePagingTest.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/scroll/ScrollEnablePagingTest.ets new file mode 100644 index 00000000..594b7398 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/scroll/ScrollEnablePagingTest.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct ScrollEnablePagingTest { + PAGE_TAG: string = 'ScrollEnablePagingTest'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.scrollEnablePagingTest(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/scroll/ScrollScrollBarWidthTest.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/scroll/ScrollScrollBarWidthTest.ets new file mode 100644 index 00000000..c3ca55ba --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/scroll/ScrollScrollBarWidthTest.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct ScrollScrollBarWidthTest { + PAGE_TAG: string = 'ScrollScrollBarWidthTest'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.scrollScrollBarWidthTest(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/scroll/ScrollScrollByTest.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/scroll/ScrollScrollByTest.ets new file mode 100644 index 00000000..a0eadd04 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/scroll/ScrollScrollByTest.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct ScrollScrollByTest { + PAGE_TAG: string = 'ScrollScrollByTest'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.scrollScrollByTest(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/slider/SliderTrackThicknessPage1Test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/slider/SliderTrackThicknessPage1Test.ets new file mode 100644 index 00000000..43cc27ed --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/slider/SliderTrackThicknessPage1Test.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct SliderTrackThicknessPage1Test { + PAGE_TAG: string = 'SliderTrackThicknessPage1Test'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.sliderTrackThicknessPage1Test(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/slider/SliderTrackThicknessPage2Test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/slider/SliderTrackThicknessPage2Test.ets new file mode 100644 index 00000000..f345c540 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/slider/SliderTrackThicknessPage2Test.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct SliderTrackThicknessPage2Test { + PAGE_TAG: string = 'SliderTrackThicknessPage2Test'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.sliderTrackThicknessPage2Test(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/stack/StackAlignContentTest.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/stack/StackAlignContentTest.ets new file mode 100644 index 00000000..781fcd4c --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/stack/StackAlignContentTest.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct StackAlignContentTest { + PAGE_TAG: string = 'StackAlignContentTest'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.stackAlignContentTest(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/xcomponent/XComponentIdTest.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/xcomponent/XComponentIdTest.ets new file mode 100644 index 00000000..9b2af864 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/MainAbility/pages/xcomponent/XComponentIdTest.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import render from 'libnativerender.so' +import { CommonView } from '../../componet/CommonView'; + +@Entry +@Component +struct XComponentIdTest { + PAGE_TAG: string = 'XComponentIdTest'; + + build() { + Column() { + CommonView({ + pageTag: this.PAGE_TAG, + }).onAppear(() => { + render.xComponentIdTest(this.PAGE_TAG); + }) + } + } +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/List.test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 00000000..8d0a270c --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2024 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. + */ + +import buttonTypeTest from './button/ButtonTypeTest.test' +import calendarPickerHintRadiusTest from './calendarpicker/CalendarPickerHintRadiusTest.test' +import sliderTrackThicknessTest from './slider/SliderTrackThicknessTest.test' +import stackAlignContentTest from './stack/StackAlignContentTest.test' +import xComponentIdTest from './xcomponent/XComponentIdTest.test' +import scrollScrollBarWidthTest from './scroll/ScrollScrollBarWidthTest.test' +import scrollScrollByTest from './scroll/ScrollScrollByTest.test' +import scrollEnablePagingTest from './scroll/ScrollEnablePagingTest.test' +import progressValueAndTotalTest from './progress/ProgressValueAndTotalTest.test' +import progressTypeTest from './progress/ProgressTypeTest.test' + +export default function testsuite() { + buttonTypeTest() + calendarPickerHintRadiusTest() + sliderTrackThicknessTest() + stackAlignContentTest() + xComponentIdTest() + scrollScrollBarWidthTest() + scrollScrollByTest() + scrollEnablePagingTest() + progressValueAndTotalTest() + progressTypeTest() +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/button/ButtonTypeTest.test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/button/ButtonTypeTest.test.ets new file mode 100644 index 00000000..f9a59d81 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/button/ButtonTypeTest.test.ets @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2024 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. + */ + +import { afterEach, beforeAll, describe, it } from '@ohos/hypium'; +import Utils from '../common/Utils'; +import WindowSnap from '../common/Snap'; + +export default function buttonTypeTest() { + + describe('ButtonTypeTest', () => { + + let PAGE_TAG = 'ButtonTypeTest'; + + beforeAll(async (done: Function) => { + await Utils.pushPage(`button/${PAGE_TAG}`, done); + }); + + afterEach(async (done: Function) => { + WindowSnap.snapShot(globalThis.context, 'test', done) + }) + + it('testButtonType001', 0, async (done: Function) => { + done(); + }) + }) +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/calendarpicker/CalendarPickerHintRadiusTest.test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/calendarpicker/CalendarPickerHintRadiusTest.test.ets new file mode 100644 index 00000000..c06c9daf --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/calendarpicker/CalendarPickerHintRadiusTest.test.ets @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2024 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. + */ + +import { afterEach, describe, it } from '@ohos/hypium'; +import Utils from '../common/Utils'; +import WindowSnap from '../common/Snap'; + +export default function calendarPickerHintRadiusTest() { + + describe('CalendarPickerHintRadiusTest', () => { + let PAGE_TAG_1 = 'CalendarPickerHintRadiusPage1Test'; + let PAGE_TAG_2 = 'CalendarPickerHintRadiusPage2Test'; + let PAGE_TAG_3 = 'CalendarPickerHintRadiusPage3Test'; + let PAGE_TAG_4 = 'CalendarPickerHintRadiusPage4Test'; + let PAGE_TAG_5 = 'CalendarPickerHintRadiusPage5Test'; + let PAGE_TAG_6 = 'CalendarPickerHintRadiusPage6Test'; + let PAGE_TAG_7 = 'CalendarPickerHintRadiusPage7Test'; + let PAGE_TAG_8 = 'CalendarPickerHintRadiusPage8Test'; + + afterEach(async (done: Function) => { + WindowSnap.snapShot(globalThis.context, 'test', done) + }) + it('testCalendarPickerHintRadius001', 0, async (done: Function) => { + await Utils.pushPage(`calendarpicker/${PAGE_TAG_1}`); + await Utils.clickComponent("calendarPicker1"); + await Utils.sleep(2000); + done() + }) + + it('testCalendarPickerHintRadius002', 0, async (done: Function) => { + await Utils.pushPage(`calendarpicker/${PAGE_TAG_2}`); + await Utils.clickComponent("calendarPicker2"); + await Utils.sleep(2000); + done() + }) + + it('testCalendarPickerHintRadius003', 0, async (done: Function) => { + await Utils.pushPage(`calendarpicker/${PAGE_TAG_3}`); + await Utils.clickComponent("calendarPicker3"); + await Utils.sleep(2000); + done() + }) + + it('testCalendarPickerHintRadius004', 0, async (done: Function) => { + await Utils.pushPage(`calendarpicker/${PAGE_TAG_4}`); + await Utils.clickComponent("calendarPicker4"); + await Utils.sleep(2000); + done() + }) + + it('testCalendarPickerHintRadius005', 0, async (done: Function) => { + await Utils.pushPage(`calendarpicker/${PAGE_TAG_5}`); + await Utils.clickComponent("calendarPicker5"); + await Utils.sleep(2000); + done() + }) + + it('testCalendarPickerHintRadius006', 0, async (done: Function) => { + await Utils.pushPage(`calendarpicker/${PAGE_TAG_6}`); + await Utils.clickComponent("calendarPicker6"); + await Utils.sleep(2000); + done() + }) + + it('testCalendarPickerHintRadius007', 0, async (done: Function) => { + await Utils.pushPage(`calendarpicker/${PAGE_TAG_7}`); + await Utils.clickComponent("calendarPicker7"); + await Utils.sleep(2000); + done() + }) + + it('testCalendarPickerHintRadius008', 0, async (done: Function) => { + await Utils.pushPage(`calendarpicker/${PAGE_TAG_8}`); + await Utils.clickComponent("calendarPicker8"); + await Utils.sleep(2000); + done() + }) + }) +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/common/Interfaces.d.ts b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/common/Interfaces.d.ts new file mode 100644 index 00000000..d2e942f4 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/common/Interfaces.d.ts @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2024 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. + */ + +export class ComponentInfo { + $type: string; + $rect: Object[]; +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/common/Settings.ts b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/common/Settings.ts new file mode 100644 index 00000000..f92fa6f4 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/common/Settings.ts @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2024 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. + */ +// import screen from '@ohos.screen'; +import window from '@ohos.window'; + +const TAG: string = '[SettingsCApiDemo]' + +class Settings { + sleep(time) { + return new Promise((resolve) => { + setTimeout(resolve, time) + }); + } + + windowClass: window.Window = null + + //为悬浮窗设置位置 + changeWindowPosition(windowClass, X, Y) { + windowClass.moveWindowTo(X, Y, (err) => { + if (err.code) { + console.error(`${TAG}, Fail to move the window. Cause: ${JSON.stringify(err)}`); + return; + } + }) + } + + //为悬浮窗设置大小 + changeWindowSize(windowClass, width, height) { + windowClass.resize(width, height, (err) => { + if (err.code) { + console.error(`${TAG}, Fail to change the window size. Cause: ${JSON.stringify(err)}`); + return; + } + }) + } + + loadContent(windowClass, pageURI) { + //为悬浮窗加载对应的目标页面 + windowClass.setUIContent(pageURI, (err) => { + if (err.code) { + console.error(`${TAG}, Fail to load the content. Cause: ${JSON.stringify(err)}`); + return; + } + console.info(`${TAG}, Succeeded in loading the content.`); + + //显示悬浮窗 + windowClass.showWindow((err) => { + if (err.code) { + console.error(`${TAG}, Fail to show the window. Cause: ${JSON.stringify(err)}`); + return; + } + console.info(`${TAG}, Succeeded in showing the window.`); + }) + + }) + } + + // changeDpi(dpi) { + // let screenClass = null; + // screen.getAllScreens((err, data) => { + // if (err.code) { + // console.error(`${TAG}, Fail to get all screens. Cause: ${JSON.stringify(err)}`); + // return; + // } + // console.info(`${TAG}, Succeeded in geting all screens.`); + // + // screenClass = data[0]; + // //设置设备dpi + // screenClass.setDensityDpi(dpi, (err, data) => { + // if (err.code) { + // console.error(`${TAG}, Fail to set the piexl density. Cause: ${JSON.stringify(err)}`); + // return; + // } + // console.info(`${TAG}, Succeeded in seting the piexl density.`) + // }) + // }) + // } + + destroyWindow() { + //销毁窗口 + let windowClass = null; + try { + windowClass = window.findWindow('floatWindow'); + console.info(`${TAG}, find window success.`) + } catch (exception) { + console.error(`${TAG}, Fail to find the window. Cause: ${JSON.stringify(exception)}`); + } + windowClass.destroyWindow((err) => { + if (err.code) { + console.error(`${TAG}, Fail to destroy the window. Cause: ${JSON.stringify(err)}`); + return; + } + console.info(`${TAG}, Succeeded in destroying the window.`) + }) + } + + createWindow(pageURI: String, {X=0,Y=0,width=1344,height=2560,dpi=400}={}) { + console.info(`${TAG}, params, pageURI=${pageURI}}, X=${X}, Y=${Y}, width=${width}, height=${height}, dpi=${dpi}`) + + // this.changeDpi(dpi); + this.sleep(1000); + let windowClass = null; + let config = { + name: 'floatWindow', windowType: window.WindowType.TYPE_FLOAT, ctx: globalThis.context + } + window.createWindow(config, (err, data) => { + if (err.code) { + console.error(`${TAG}, Fail to create the floatWindow. Cause: ${JSON.stringify(err)}`); + return; + } + console.info(`${TAG}, Succeeded in creating the floatWindow.`) + windowClass = data; + this.windowClass = data; + + this.changeWindowPosition(windowClass, X, Y) + this.changeWindowSize(windowClass, width, height) + this.loadContent(windowClass, pageURI) + }) + } +} + +export default new Settings() \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/common/Snap.ts b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/common/Snap.ts new file mode 100644 index 00000000..c2d92270 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/common/Snap.ts @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2024 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. + */ +import window from '@ohos.window'; +import image from '@ohos.multimedia.image'; +import fs from '@ohos.file.fs'; +import { Driver, Rect } from '@ohos.UiTest'; + +const TAG: string = '[WindowSnap]' +const INFO = { + 'img': { + prefix: 'IMG_', + suffix: '.webp' + }, + 'txt': { + prefix: 'TXT_', + suffix: '.txt' + } +} + +class WindowSnap { + async sleep(time) { + return new Promise((resolve) => { + setTimeout(resolve, time) + }); + } + + createFile(context: any, type, page) { + console.info(`${TAG}, createFile start`) + let pathDir = context.filesDir; + console.info(`${TAG}, createFile pathDir = ${pathDir}`) + let name = page + let info = INFO[type] + let displayName = `${info.prefix}${name}${info.suffix}` + let filePath = pathDir + '/' + displayName + console.info(`${TAG}, createFile filePath = ${filePath}`) + let exists = fs.accessSync(filePath) + console.info(`${TAG}, oldFile exists = ${exists}`) + if (exists) { + fs.unlinkSync(filePath) + console.info(`${TAG}, remove file succeed`) + } + return fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE) + } + + async save(data: image.PixelMap, context: any, page) { + console.info(`${TAG}, start save image`) + let packOpts: image.PackingOption = { + format: 'image/webp', quality: 100 + } + let imagePackerApi = image.createImagePacker() + let arrayBuffer = await imagePackerApi.packing(data, packOpts) + let file = null + while (file == null) { + file = this.createFile(context, 'img', page) + } + let exists = fs.accessSync(file.path) + console.info(`${TAG}, createFile exists = ${exists}`) + let fd = file.fd + console.info(`${TAG}, createFile fd = ${fd}`) + imagePackerApi.release() + try { + fs.writeSync(fd, arrayBuffer) + } catch (err) { + console.error(`${TAG}, write failed, code is ${err.code}, message is ${err.message}}`) + } + fs.closeSync(file) + console.info(`${TAG}, write picture done`) + } + + /** + * 获取窗口截图&文件保存 + * 入参必须为ability的context + * + * save:设备保存路径:/data/app/el2/100/base/{bundle_name}/haps/entry_test/files/IMG_test.webp + */ + async snapShot(context, page, done?) { + console.info(`${TAG}, start snapshot`) + await this.sleep(2000); + let windowClass = null + try { + windowClass = window.findWindow('floatWindow') + console.info(`${TAG}, find window success`) + } catch (exception) { + console.error(`${TAG}, Failed to find the window. Cause: ${JSON.stringify(exception)}`) + } + + windowClass.snapshot(async (err, data) => { + console.info(`${TAG}, windowClass.snapshot`) + if (err.code) { + console.error(`${TAG}, Failed to snapshot window. Cause: ${JSON.stringify(err)}`) + return + } + await this.save(data, context, page) + data.release() + if (done) { + done(); + } + }) + } + + async snapShotNext(context, page, done?) { + console.info(`${TAG}, start snapshot`) + let windowClass = null + try { + windowClass = window.findWindow('floatWindow'); + } catch (exception) { + console.error(`${TAG}, Failed to find the window. Cause: ${JSON.stringify(exception)}`) + } + await this.sleep(600); + windowClass.snapshot(async (err, data) => { + console.info(`${TAG}, windowClass.snapshot`) + + if (err.code) { + console.error(`${TAG}, Failed to snapshot window. Cause: ${JSON.stringify(err)}`) + return + } + await this.save(data, context, page) + data.release() + if (done) { + done(); + } + }) + } + + async snapShotByDriver(context, page, done?) { + console.info(`Start snapshot by driver`) + await this.sleep(2000); + let file = null + while (file == null) { + file = this.createFile(context, 'img', page) + } + let exists = fs.accessSync(file.path) + console.info(`${TAG}, createFile exists = ${exists}`) + + try { + let windowClass = window.findWindow('floatWindow') + console.info(`${TAG}, find window success`) + let windowRect = windowClass.getWindowProperties().windowRect; + console.info(`${TAG}, windowRct is ${JSON.stringify(windowRect)}`) + let driver = Driver.create(); + await driver.screenCapture(file.path, { + left: windowRect.left, + top: windowRect.top, + right: windowRect.width, + bottom: windowRect.height + }); + } catch (exception) { + console.error(`${TAG}, Failed to snap shot. Cause: ${JSON.stringify(exception)}`) + } + + if (done) { + done(); + } + } +} + +export default new WindowSnap() \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/common/Utils.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/common/Utils.ets new file mode 100644 index 00000000..0de78235 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/common/Utils.ets @@ -0,0 +1,278 @@ +/* + * Copyright (c) 2024 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. + */ +import events_emitter from '@ohos.events.emitter'; +import { Driver, ON, PointerMatrix, Rect } from '@ohos.UiTest'; +import { ComponentInfo } from './Interfaces'; +import systemDateTime from '@ohos.systemDateTime'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry' +import fs from '@ohos.file.fs'; +import router from '@ohos.router'; + +export default class Utils { + static sleep(time: number) { + return new Promise((resolve, reject) => { + setTimeout(() => { + resolve("ok") + }, time) + }).then(() => { + console.info(`sleep ${time} over...`) + }) + } + + static getSystemTime() { + return systemDateTime.getTime(true) / 1000 + } + + static getSandboxFileDir() { + let sandboxFileDir = AbilityDelegatorRegistry.getAbilityDelegator().getAppContext().filesDir + "/" + console.log(`[getSandboxFileDir] return ${sandboxFileDir}`); + return sandboxFileDir; + } + + static deleteFile(filePath: string) { + console.info("[deleteFile] filePath:" + filePath); + try { + fs.unlinkSync(filePath) + } catch (error) { + console.info("[deleteFile] error:" + error); + } + } + + static isFileExist(filePath: string): boolean { + console.info("[isFileExist] filePath:" + filePath); + try { + let fileExist = fs.accessSync(filePath) + console.info("[isFileExist] return:" + fileExist); + return fileExist + } catch (error) { + console.info("[isFileExist] error:" + error); + return false + } + } + + static getComponentInfoByKey(key: string): ComponentInfo { + let strJson = getInspectorByKey(key); + let obj: ComponentInfo = JSON.parse(strJson); + console.info('[getInspectorByKey] current component info: ' + JSON.stringify(obj)); + return obj; + } + + + static async flingComponent(key: string, isHorizontal: boolean, isForward: boolean) { + let driver = Driver.create(); + let rect = Utils.getComponentRect(key); + let centerX = Utils.getRectHorizontalCenterX(rect) + let centerY = Utils.getRectVerticalCenterY(rect) + let X1 = centerX - 100; + let X2 = centerX + 100; + let Y1 = centerY - 100; + let Y2 = centerY + 100; + let stepLen = 20; + let speed = 10000; + if (isHorizontal) { + if (isForward) { + await driver.fling({ + x: X2, y: centerY + }, { + x: X1, y: centerY + }, stepLen, speed); + } else { + await driver.fling({ + x: X1, y: centerY + }, { + x: X2, y: centerY + }, stepLen, speed); + } + } else { + if (isForward) { + await driver.fling({ + x: centerX, y: Y2 + }, { + x: centerX, y: Y1 + }, stepLen, speed); + } else { + await driver.fling({ + x: centerX, y: Y1 + }, { + x: centerX, y: Y2 + }, stepLen, speed); + } + } + } + + static async clickComponent(id: string) { + let driver = Driver.create(); + let component = await driver.findComponent(ON.id(id)); + await component.click(); + } + + static async doubleClickComponent(id: string) { + let driver = Driver.create(); + let component = await driver.findComponent(ON.id(id)); + await component.click(); + await component.click(); + } + + static async clickLocation(X: number, Y: number) { + let driver = Driver.create(); + await driver.click(X, Y); + } + + static async triggerKey(id: number) { + let driver = Driver.create(); + await driver.triggerKey(id); + } + + static async longClickComponent(id: string) { + let driver = Driver.create(); + let component = await driver.findComponent(ON.id(id)); + await component.longClick(); + } + + static async clickComponentByText(text: string) { + let driver = Driver.create(); + let component = await driver.findComponent(ON.text(text)); + await component.click(); + } + + static async fingerZoom(key: string, isOut: boolean) { + let rect = Utils.getComponentRect(key); + let centerX = Utils.getRectHorizontalCenterX(rect) + let centerY = Utils.getRectVerticalCenterY(rect) + let fingerUpCenterY = centerY - 100; + let fingerDownCenterY = centerY + 100; + let driver: Driver = Driver.create(); + let pointers: PointerMatrix = PointerMatrix.create(2, 3); + pointers.setPoint(0, 0, { + x: centerX, y: fingerUpCenterY - (isOut ? 40 : 120) + }); + pointers.setPoint(0, 1, { + x: centerX, y: fingerUpCenterY - 80 + }); + pointers.setPoint(0, 2, { + x: centerX, y: fingerUpCenterY - (isOut ? 120 : 40) + }); + pointers.setPoint(1, 0, { + x: centerX, y: fingerDownCenterY + (isOut ? 40 : 120) + }); + pointers.setPoint(1, 1, { + x: centerX, y: fingerDownCenterY + 80 + }); + pointers.setPoint(1, 2, { + x: centerX, y: fingerDownCenterY + (isOut ? 120 : 40) + }); + await driver.injectMultiPointerAction(pointers); + } + + static registerEvent(pageTag: string, eventId: number, callBack: Function) { + events_emitter.on({ + eventId: eventId, + priority: events_emitter.EventPriority.LOW + }, (eventData: events_emitter.EventData) => { + console.info("Value Change CallBack"); + if (eventData != null && eventData.data != null) { + if (pageTag == eventData.data.PAGE_TAG) { + console.info("CallBack value:" + JSON.stringify(eventData)); + callBack(eventData.data.VALUE); + } + } + }) + } + + static emitEvent(pageTag: string, emitValue: number | string | object, eventId: number) { + try { + let backData: events_emitter.EventData = { + data: { + "PAGE_TAG": pageTag, + "VALUE": emitValue + } + } + let backEvent: events_emitter.InnerEvent = { + eventId: eventId, + priority: events_emitter.EventPriority.LOW + } + console.info("start to emit page state"); + events_emitter.emit(backEvent, backData); + } catch (err) { + console.info("emit page state err: " + JSON.stringify(err)); + } + } + + static async pushPage(pageTag: string, done?: Function) { + let options: router.RouterOptions = { + url: `MainAbility/pages/${pageTag}`, + } + try { + router.clear(); + let pages = router.getState(); + console.info(`get ${pageTag} state success ` + JSON.stringify(pages)); + if (pageTag.indexOf(pages.name) < 0) { + console.info(`get ${pageTag} state success ` + JSON.stringify(pages.name)); + let result = await router.pushUrl(options); + await Utils.sleep(2000); + console.info(`push ${pageTag} page success ` + JSON.stringify(result)); + } + } catch (err) { + console.error(`push ${pageTag} page error: ` + err); + } + if (done) { + done(); + } + } + + static getComponentRect(key: string): Rect { + let strJson = getInspectorByKey(key); + let obj: ComponentInfo = JSON.parse(strJson); + console.info('[getInspectorByKey] key is: ' + key); + return Utils.getComponentRectByObj(obj); + } + + static getComponentRectByObj(obj: ComponentInfo): Rect { + console.info('[getInspectorByKey] current component is: ' + obj.$type); + let rectInfo: Object[] = JSON.parse('[' + obj.$rect + ']'); + let rect_value: Rect = { + left: JSON.parse('[' + rectInfo[0] + ']')[0], + top: JSON.parse('[' + rectInfo[0] + ']')[1], + right: JSON.parse('[' + rectInfo[1] + ']')[0], + bottom: JSON.parse('[' + rectInfo[1] + ']')[1] + }; + console.info(JSON.stringify(rect_value)); + return rect_value; + } + + static getRectHorizontalCenterX(rect: Rect): number { + return Number.parseInt(Number((rect.right - rect.left) / 2 + rect.left).toFixed(0)); + } + + static getRectVerticalCenterY(rect: Rect): number { + return Number.parseInt(Number((rect.bottom - rect.top) / 2 + rect.top).toFixed(0)); + } + + static async mouseMoveTo(X: number, Y: number) { + let driver = Driver.create(); + await driver.mouseMoveTo({ + x: X, y: Y + }); + } + + static async mouseMoveToCurrentComponent(componentId: string) { + let driver = Driver.create(); + let component = await driver.findComponent(ON.id(componentId)); + let point = await component.getBounds(); + await driver.mouseMoveTo({ + x: point.left + 10, y: point.bottom - 10 + }); + } +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/progress/ProgressTypeTest.test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/progress/ProgressTypeTest.test.ets new file mode 100644 index 00000000..c7324fb3 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/progress/ProgressTypeTest.test.ets @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 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. + */ + +import { describe, it, afterEach } from '@ohos/hypium'; +import Utils from '../common/Utils'; +import WindowSnap from '../common/Snap'; + +export default function progressTypeTest() { + + describe('ProgressTypeTest', () => { + + afterEach(async (done: Function) => { + WindowSnap.snapShot(globalThis.context, 'test', done) + }) + + it('testProgressType001', 0, async (done: Function) => { + let PAGE_TAG = 'ProgressTypeTest'; + await Utils.pushPage(`progress/${PAGE_TAG}`); + done(); + }) + }) +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/progress/ProgressValueAndTotalTest.test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/progress/ProgressValueAndTotalTest.test.ets new file mode 100644 index 00000000..5f28b9c8 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/progress/ProgressValueAndTotalTest.test.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 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. + */ + +import { describe, it, afterEach } from '@ohos/hypium'; +import Utils from '../common/Utils'; +import WindowSnap from '../common/Snap'; + +export default function progressValueAndTotalTest() { + describe('ProgressValueAndTotalTest', () => { + + afterEach(async (done: Function) => { + WindowSnap.snapShot(globalThis.context, 'test', done) + }) + + it('testProgressValueAndTotal001', 0, async (done: Function) => { + let PAGE_TAG = 'ProgressValueAndTotalTest'; + await Utils.pushPage(`progress/${PAGE_TAG}`); + done(); + }) + }) +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/scroll/ScrollEnablePagingTest.test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/scroll/ScrollEnablePagingTest.test.ets new file mode 100644 index 00000000..1ad5836f --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/scroll/ScrollEnablePagingTest.test.ets @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 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. + */ + +import { describe, it, afterEach } from '@ohos/hypium'; +import Utils from '../common/Utils'; +import WindowSnap from '../common/Snap'; + +export default function scrollEnablePagingTest() { + + describe('ScrollEnablePagingTest', () => { + + afterEach(async (done: Function) => { + WindowSnap.snapShot(globalThis.context, 'test', done) + }) + + it('testScrollEnablePaging001', 0, async (done: Function) => { + let PAGE_TAG = 'ScrollEnablePagingTest'; + await Utils.pushPage(`scroll/${PAGE_TAG}`); + done(); + }) + }) +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/scroll/ScrollScrollBarWidthTest.test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/scroll/ScrollScrollBarWidthTest.test.ets new file mode 100644 index 00000000..ba42087e --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/scroll/ScrollScrollBarWidthTest.test.ets @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 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. + */ + +import { describe, it, afterEach } from '@ohos/hypium'; +import Utils from '../common/Utils'; +import WindowSnap from '../common/Snap'; + +export default function scrollScrollBarWidthTest() { + + describe('ScrollScrollBarWidthTest', () => { + + afterEach(async (done: Function) => { + WindowSnap.snapShot(globalThis.context, 'test', done) + }) + + it('testScrollScrollBarWidth001', 0, async (done: Function) => { + let PAGE_TAG = 'ScrollScrollBarWidthTest'; + await Utils.pushPage(`scroll/${PAGE_TAG}`); + done(); + }) + }) +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/scroll/ScrollScrollByTest.test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/scroll/ScrollScrollByTest.test.ets new file mode 100644 index 00000000..60f7c811 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/scroll/ScrollScrollByTest.test.ets @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 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. + */ + +import { describe, it, afterEach } from '@ohos/hypium'; +import Utils from '../common/Utils'; +import WindowSnap from '../common/Snap'; + +export default function scrollScrollByTest() { + + describe('ScrollScrollByTest', () => { + + afterEach(async (done: Function) => { + WindowSnap.snapShot(globalThis.context, 'test', done) + }) + + it('testScrollScrollBy001', 0, async (done: Function) => { + let PAGE_TAG = 'ScrollScrollByTest'; + await Utils.pushPage(`scroll/${PAGE_TAG}`); + done(); + }) + }) +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/slider/SliderTrackThicknessTest.test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/slider/SliderTrackThicknessTest.test.ets new file mode 100644 index 00000000..cb628fdc --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/slider/SliderTrackThicknessTest.test.ets @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2024 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. + */ + +import { afterEach, beforeAll, describe, it } from '@ohos/hypium'; +import Utils from '../common/Utils'; +import WindowSnap from '../common/Snap'; + +export default function sliderTrackThicknessTest() { + + describe('SliderTrackThicknessTest', () => { + + let PAGE_TAG_1 = 'SliderTrackThicknessPage1Test'; + let PAGE_TAG_2 = 'SliderTrackThicknessPage2Test'; + + afterEach(async (done: Function) => { + WindowSnap.snapShot(globalThis.context, 'test', done) + }) + + it('testSliderTrackThickness001', 0, async (done: Function) => { + await Utils.pushPage(`slider/${PAGE_TAG_1}`, done); + done(); + }) + + it('testSliderTrackThickness002', 0, async (done: Function) => { + await Utils.pushPage(`slider/${PAGE_TAG_2}`); + await Utils.flingComponent('slider18', true, true); + await Utils.sleep(2000); + done(); + }) + }) +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/stack/StackAlignContentTest.test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/stack/StackAlignContentTest.test.ets new file mode 100644 index 00000000..6545d7c0 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/stack/StackAlignContentTest.test.ets @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2024 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. + */ + +import { afterEach, beforeAll, describe, it } from '@ohos/hypium'; +import Utils from '../common/Utils'; +import WindowSnap from '../common/Snap'; + +export default function stackAlignContentTest() { + + describe('StackAlignContentTest', () => { + + let PAGE_TAG = 'StackAlignContentTest'; + + beforeAll(async (done: Function) => { + await Utils.pushPage(`stack/${PAGE_TAG}`, done); + }); + + afterEach(async (done: Function) => { + WindowSnap.snapShot(globalThis.context, 'test', done); + }); + + it('testStackAlignContent001', 0, async (done: Function) => { + await Utils.sleep(2000); + done(); + }); + }) +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/xcomponent/XComponentIdTest.test.ets b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/xcomponent/XComponentIdTest.test.ets new file mode 100644 index 00000000..608eec1c --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/test/xcomponent/XComponentIdTest.test.ets @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2024 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. + */ + +import { afterEach, beforeAll, describe, it } from '@ohos/hypium'; +import Utils from '../common/Utils'; +import WindowSnap from '../common/Snap'; + +export default function xComponentIdTest() { + + describe('XComponentIdTest', () => { + + let PAGE_TAG = 'XComponentIdTest'; + + beforeAll(async (done: Function) => { + await Utils.pushPage(`xcomponent/${PAGE_TAG}`, done); + }); + + afterEach(async (done: Function) => { + WindowSnap.snapShot(globalThis.context, 'test', done) + }) + + it('testXComponentId001', 0, async (done: Function) => { + done() + }) + + }) +} diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts b/function/ui_compare/capidemo/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts new file mode 100644 index 00000000..22e8d7e3 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2024 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. + */ +import TestRunner from '@ohos.application.testRunner'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; + +let abilityDelegator = undefined; +let abilityDelegatorArguments = undefined; + +function translateParamsToString(parameters) { + const keySet = new Set([ + '-s class', '-s notClass', '-s suite', '-s it', + '-s level', '-s testType', '-s size', '-s timeout', + '-s dryRun' + ]); + let targetParams = ''; + for (const key in parameters) { + if (keySet.has(key)) { + targetParams = `${targetParams} ${key} ${parameters[key]}`; + } + } + return targetParams.trim(); +} + +async function onAbilityCreateCallback() { + console.log('onAbilityCreateCallback'); +} + +async function addAbilityMonitorCallback(err: any) { + console.info('addAbilityMonitorCallback : ' + JSON.stringify(err)); +} + +export default class OpenHarmonyTestRunner implements TestRunner { + constructor() { + } + + onPrepare() { + console.info('OpenHarmonyTestRunner OnPrepare '); + } + + async onRun() { + console.log('OpenHarmonyTestRunner onRun run'); + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments(); + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + let testAbilityName = abilityDelegatorArguments.bundleName + '.MainAbility'; + let lMonitor = { + abilityName: testAbilityName, + onAbilityCreate: onAbilityCreateCallback, + }; + abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback); + let cmd = 'aa start -d 0 -a MainAbility' + + ' -b ' + abilityDelegatorArguments.bundleName; + cmd += ' ' + translateParamsToString(abilityDelegatorArguments.parameters); + let debug = abilityDelegatorArguments.parameters['-D']; + if (debug == 'true') { + cmd += ' -D'; + } + console.info('cmd : ' + cmd); + abilityDelegator.executeShellCommand(cmd, + (err: any, d: any) => { + console.info('executeShellCommand : err : ' + JSON.stringify(err)); + console.info('executeShellCommand : data : ' + d.stdResult); + console.info('executeShellCommand : data : ' + d.exitCode); + }); + console.info('OpenHarmonyTestRunner onRun end'); + } +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/module.json5 b/function/ui_compare/capidemo/entry/src/ohosTest/module.json5 new file mode 100644 index 00000000..1b0ee0e8 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/module.json5 @@ -0,0 +1,47 @@ +{ + "module": { + "name": "entry_test", + "type": "feature", + "srcEntry": "./ets/Application/AbilityStage.ts", + "description": "$string:module_desc", + "mainElement": "MainAbility", + "deviceTypes": [ + "tablet", + "default" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "MainAbility", + "srcEntry": "./ets/MainAbility/MainAbility.ts", + "description": "$string:EntryAbility_desc", + "icon": "$media:icon", + "label": "$string:EntryAbility_label", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "orientation": "portrait", + "skills": [ + { + "actions": [ + "action.system.home" + ], + "entities": [ + "entity.system.home" + ] + } + ] + } + ], + "requestPermissions": [ + { + "name": "ohos.permission.SYSTEM_FLOAT_WINDOW" + }, + { + "name": "ohos.permission.INTERNET" + } + ] + } +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/resources/base/element/color.json b/function/ui_compare/capidemo/entry/src/ohosTest/resources/base/element/color.json new file mode 100644 index 00000000..3c712962 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/resources/base/element/float.json b/function/ui_compare/capidemo/entry/src/ohosTest/resources/base/element/float.json new file mode 100644 index 00000000..8658bacc --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/resources/base/element/float.json @@ -0,0 +1,24 @@ +{ + "float": [ + { + "name": "300vp", + "value": "300vp" + }, + { + "name": "200vp", + "value": "200vp" + }, + { + "name": "100vp", + "value": "100vp" + }, + { + "name": "50vp", + "value": "50vp" + } + ,{ + "name": "10vp", + "value": "10vp" + } + ] +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/resources/base/element/string.json b/function/ui_compare/capidemo/entry/src/ohosTest/resources/base/element/string.json new file mode 100644 index 00000000..f9459551 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "label" + } + ] +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/resources/base/media/background.png b/function/ui_compare/capidemo/entry/src/ohosTest/resources/base/media/background.png new file mode 100644 index 0000000000000000000000000000000000000000..bbe9979eda9db82793df2873701e4beae14c44cc GIT binary patch literal 312971 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

n&DYjfVtWM^(We*cv(TSfo?T8jR40?> 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%0DP>+r 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 R6Uog?;4FMmMKI`p|JkTu`9=T$ literal 0 HcmV?d00001 diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/resources/base/media/icon.png b/function/ui_compare/capidemo/entry/src/ohosTest/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c GIT binary patch literal 6790 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

(zs%@2G0f&qW>j6L^ra+ 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 Pf0@AI^sGYY)8hXE54%F} literal 0 HcmV?d00001 diff --git a/function/ui_compare/capidemo/entry/src/ohosTest/resources/base/profile/main_pages.json b/function/ui_compare/capidemo/entry/src/ohosTest/resources/base/profile/main_pages.json new file mode 100644 index 00000000..6d6f7104 --- /dev/null +++ b/function/ui_compare/capidemo/entry/src/ohosTest/resources/base/profile/main_pages.json @@ -0,0 +1,24 @@ +{ + "src": [ + "MainAbility/pages/DemoIndex", + "MainAbility/pages/button/ButtonTypeTest", + "MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage1Test", + "MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage2Test", + "MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage3Test", + "MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage4Test", + "MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage5Test", + "MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage6Test", + "MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage7Test", + "MainAbility/pages/calendarpicker/CalendarPickerHintRadiusPage8Test", + "MainAbility/pages/slider/SliderTrackThicknessPage1Test", + "MainAbility/pages/slider/SliderTrackThicknessPage2Test", + "MainAbility/pages/stack/StackAlignContentTest", + "MainAbility/pages/xcomponent/XComponentIdTest", + "MainAbility/pages/scroll/ScrollScrollBarWidthTest", + "MainAbility/pages/scroll/ScrollScrollByTest", + "MainAbility/pages/scroll/ScrollEnablePagingTest", + "MainAbility/pages/progress/ProgressValueAndTotalTest", + "MainAbility/pages/progress/ProgressTypeTest" + ] +} + diff --git a/function/ui_compare/capidemo/hvigor/hvigor-config.json5 b/function/ui_compare/capidemo/hvigor/hvigor-config.json5 new file mode 100644 index 00000000..f70ecd41 --- /dev/null +++ b/function/ui_compare/capidemo/hvigor/hvigor-config.json5 @@ -0,0 +1,5 @@ +{ + "modelVersion": "5.0.0", + "dependencies": { + } +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/hvigorfile.ts b/function/ui_compare/capidemo/hvigorfile.ts new file mode 100644 index 00000000..f3cb9f1a --- /dev/null +++ b/function/ui_compare/capidemo/hvigorfile.ts @@ -0,0 +1,6 @@ +import { appTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/function/ui_compare/capidemo/log.txt b/function/ui_compare/capidemo/log.txt new file mode 100644 index 0000000000000000000000000000000000000000..c30becbf3cf835fb939a2032089d1445f7774299 GIT binary patch literal 1658272 zcmeFad2<{`cJ_%Tkt zzOuF%{=T7i{Oi)$U+cPJeeHq1xAd2PU0nNq?fu#hYaiF%>KW^6-;}=odu?y+Nbi1H zd#88z!*%QW`9}YJT02=g)cf4`LVq2u{oiZwCZUL2!O*UEyWn zbaU<6+Kqr)FnD|Irv7tWg6|ZA*TXt5uI&g1pY+9Nyj?q9yDw~f(l>bVzqi(2>izw& zh7;Yv`)_q0xcsnoPdMHSckN}Y@Va*W_UWo-TOliZuFqwi@7I3SXYZ~ZXeF=Le$g8D zgoRgOKmSSeVtBiw&%Cns&uf1PcOB|3yW^L$d%%ocyDl66-;sW9hOaidFsxq}-knzG zg~?WTEI86#+0~kDeO2flYPH;TPtd>6>W{T|H}!QbKLBhXZ`87M9!MfM_l(wYyC|>f#rYK zHl(q4OYfi)52X3_!+RUL(yx0N^dNRY@magN`ja#V&$8=(U;7vRW%eKT4Z09o@Rh#N zU;bn)jsvZV|2M*u4`d&F407vOf0cFi>+q}>x|Yv)DeD9|jD_;_)b`{_m%_WR^(t4q z4NrfgJNLu$xRdve^?65H7wfmx*(&VW^;bO5o$(W(#TWVvKHpvk6Tj#`J_F0)rT*Rz zcWkWvgFcb>-|H@HYs1iPc!uGic$a_HWyvyZkDHR*{LNKh6@1!?{~_S;wO+->^ykKF z(mU#(dNVxrP^Cxe^g(`WNJef9+V|44UW2OaAttF&i5mo33cz#4cskuCgQzf-L9 zX<+`bpuoeh_b%!+v!E}YLU&Qu>;iVGe;S|uziUR% z<@dI<@*`b)64vOjVYOp7|EhP4E_g;_>JdrCE)BA zVandex8v(}fexPN8OM6oFIp4Nwv`t-1Z#D6UQ4}!;*;Wj8t257rgVGr6pxWBmVeDR zPS;#73zl*Hmrhq~G64Q^nS&&BIhV@H4N=XpWH(X?{qQzWwO?sFYEOHtcc5&ZX?$IL z4z!OX#9x8};q_zj2P=Rpw#1!>fihDm>Adz#pa1Ige)y`1dyu%S4j=Ug{eBtNi!>?9 zjEz%Fyb3(Q+JNtS-F+x)IC{3|^Ja}yrR`MiI=$O#&cUXABAuHIvuoq4#jEQn%@lJmWuq1N60l>!gY*T*e9}2{@VMn zmK2{Z70v44*-km>v+C}{>PWSFaYcP~Qoihhx}uD{um8{o+rer|*NoH$fBp8eekY7x zTwB*)bM;i(AFur+e1pZvA1OD1=|fRBk(N4}q(ksmwLJ%#vaZFtGwbP1 z;0I!$j)PrY?O1T@nX9l%e@|>8c&Xl!o?_W3wE{S3IeN>PjF z?b^9u_rrInu}?@9CXQ-f(JF zM~^t)Dr(M9Z3bLnrGqzgXdhd?U@*#SvH+cY{xGX7Pf!Bdiz7zasCMS1+9H6tRXq-OCjoJMni-FF-vX6qRsGmHp-! z9#6vZA~uHC?{=C$!D#HUo(z53j`Ad@cb*fe(qam{%V*)2AWOIgZ5m&XGy&%LGWelU zpjr7eF~+d+X`r7pz81N7<_K0&n6+9c!3r}{#6x(S58@mj)>_hVpyf^Rm5-=F|=GjeRdS=tRjZ< z#TQmp5aa4>Z0{J|UquX85kt$_t|Eq(eP2~UP#3kTf*|W}-MFriR#gzIDu|eQ^ZHw} zh%JiauNC86vF10uHojWCy54KHJ6Dz6d!<@)B47PFc48%epUkSqhqqUi-I9uRRr#?N zyogtqp5D(V5J>&IACL9Be5l}{7v zGgdy$bUuyc$IoNE_Vm>T)IjX3$^d_pZmcKDs=W-oNK~xPGA&}h*-mcjwokAiADvU1 zaU*n}4>?gIopr@?i?tZ53XN+0Me29f`ulV6gKw-Ruvi>K@L$DfFBe)iHo{* zHK&3u(S6D9YQOKIdS2hJDm0|0sO4MDsYvsFv6`$HxlA=h*`u}Uy%@JluZ^!3HA%g; zSw%A!+b7}{-YS|2AFQI8CIj#_R&y#=b1E!SXr=-1>PrBBdgha%ogvS(VO3WQmkZM z`7})Opo4Pd(@;U(rny&hDi#}mSXG^`s?Jwc=g26Z=eepnUsatmDPdKif%S6#%!VmW z)a$OzpxWS;Y6AG0e-gz1s0)@!geQ8M#YmWTxgL6B-^=Us3~`*-dq<}T@ReVe%*h1q zBV5#{G*iL0W?;ryy7x76_o=@BU0wf7h5Svc{6?#@^CbQ;oD#q*OdvE_OPvYlkJx|I z@)PS}VkS1@B5_L`!EnubI780P8~GS!Wis78ox!+qdTp%52iwf)JP6Tz{PE|Ktv?An zKWG;5w*Iy{IGe2bT3E0%Mtt(7d+)_4n$L~?Jp(tK@-|%64RupTVQ+TA{y=rV2p9JR zC)4Md1)Wl4_ug?D$b2V;xqsC>A%$usKa-9fe6H2LT>Go`mKmDsYmbuu{*r}LPB0mY zm-BE+h3>aC*k`t_(PgZ8$iw>75Fkx*>ay&7n4z%i=hwAWvGrNmwZZlsj(MPOD(liS zm|p7>Qu&Sy@{^A8IR2I<#twx)=dNO3xpDujr##-2L|V49tXR`i>m7{ z=Dt_?v{gRMVx+5%=T*mZj8LvRo~xevYKjw4GrSf*iE4G0m7j}l9$(oSUHLRCpQb$` zTJ%>|K8goldliPXFaNbvLK}X2@!TY0k2mszM^a8t1lZ+lH!h z!S`IvZ`zao{Y5o=@KiBcQ}1VRok!s7uUOS)Y$`Kbl!5LAtZFk>^P8}r-q+4Tx_Nq9 zRh(e+M08Z1gR!VQPyL!#Cv2^1GrVV@7_&?@#VU?TzXKTn_?a5uRUEV3dRWCVsqgX% zuj62!c^%IpVjyn8tm2rPYd@-+=b^s8Qys>xB0}5pBc5s2qW`z5&9L(dmo@vannu5h zW3Fm5ir)S^#nR{<{Yk&+U$iPF_w>_AC_Cz<<3v_YPp@_k&?QS0AM5XOs9HwP^9sFS z{Cst41#yLIH0y?3&2IuH-T}JY5l?m!>!jEfO+PDLzId=FvU5!jcy))-*kjQT^X2LE zJqrER)UrcOKp&~{_dq?X`Ay*JtuO<|SM!@zCv5GXa*FrY6Hj8=(xLc@?(Dr&t}DNv zGmQxjT-BSeYBN?o&8jwIRh#i%cFdk6Vp{*Pnn}BwNxKm|nUzmteMcLz-N~gdYi&lo zr_x=qaZB@?Zk|;e#0eYJA27?}fxfrGiBgy3>AujUr5*V^$cjDHM?KT~yTQA`qxnUW z#3p)hA}RjPTm2><0Os!M?;~B^JaOZKD&+s5&nwp~lMkJ&xLOTu5Z7Nf4ckz^nI5v9tq z?8}yTj5ygx(Oi+zHZy2#9GHGe_Tq7%ez@mHy-LiM6Cs_0OxMF{O!s4&8c~OC2{6vO zhm`Mpwjsg9iwH~6(FWpC

WDyA(S3v!>nNEA9pUS8F{ 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

-Nk*&lhcc=xbEBK1-vl2 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 pK#)UJf^W{{vma=feO1 literal 0 HcmV?d00001 diff --git a/function/ui_compare/capidemo/oh-package-lock.json5 b/function/ui_compare/capidemo/oh-package-lock.json5 new file mode 100644 index 00000000..2bdc4076 --- /dev/null +++ b/function/ui_compare/capidemo/oh-package-lock.json5 @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2024 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. + */ + +{ + "meta": { + "stableOrder": true + }, + "lockfileVersion": 3, + "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", + "specifiers": { + "@ohos/hamock@1.0.0": "@ohos/hamock@1.0.0", + "@ohos/hypium@1.0.19": "@ohos/hypium@1.0.19" + }, + "packages": { + "@ohos/hamock@1.0.0": { + "name": "@ohos/hamock", + "version": "1.0.0", + "integrity": "sha512-K6lDPYc6VkKe6ZBNQa9aoG+ZZMiwqfcR/7yAVFSUGIuOAhPvCJAo9+t1fZnpe0dBRBPxj2bxPPbKh69VuyAtDg==", + "resolved": "https://repo.harmonyos.com/ohpm/@ohos/hamock/-/hamock-1.0.0.har", + "registryType": "ohpm" + }, + "@ohos/hypium@1.0.19": { + "name": "@ohos/hypium", + "version": "1.0.19", + "integrity": "sha512-cEjDgLFCm3cWZDeRXk7agBUkPqjWxUo6AQeiu0gEkb3J8ESqlduQLSIXeo3cCsm8U/asL7iKjF85ZyOuufAGSQ==", + "resolved": "https://repo.harmonyos.com/ohpm/@ohos/hypium/-/hypium-1.0.19.har", + "registryType": "ohpm" + } + } +} \ No newline at end of file diff --git a/function/ui_compare/capidemo/oh-package.json5 b/function/ui_compare/capidemo/oh-package.json5 new file mode 100644 index 00000000..de196540 --- /dev/null +++ b/function/ui_compare/capidemo/oh-package.json5 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2024 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. + */ + +{ + "modelVersion": "5.0.0", + "description": "Please describe the basic information.", + "dependencies": { + }, + "devDependencies": { + "@ohos/hypium": "1.0.19", + "@ohos/hamock": "1.0.0" + } +} \ No newline at end of file -- Gitee