From 849a2163fd0c65586a7e652716ea2fc403778e35 Mon Sep 17 00:00:00 2001 From: yuyaozhi Date: Sat, 24 Aug 2024 13:49:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=B3=BB=E7=BB=9F=E8=B7=AF?= =?UTF-8?q?=E7=94=B1sample=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yuyaozhi --- OAT.xml | 13 +- .../ApplicationModels/SystemRouter/.gitignore | 12 + .../SystemRouter/AppScope/app.json5 | 24 ++ .../resources/base/element/string.json | 8 + .../resources/base/media/app_icon.png | Bin 0 -> 2777 bytes .../ApplicationModels/SystemRouter/README.md | 89 ++++++ .../SystemRouter/build-profile.json5 | 88 ++++++ .../SystemRouter/code-linter.json5 | 35 +++ .../SystemRouter/entry/.gitignore | 6 + .../SystemRouter/entry/build-profile.json5 | 43 +++ .../SystemRouter/entry/hvigorfile.ts | 6 + .../SystemRouter/entry/obfuscation-rules.txt | 23 ++ .../SystemRouter/entry/oh-package.json5 | 15 + .../src/main/ets/common/utils/Logger.ets | 45 +++ .../main/ets/entryability/EntryAbility.ets | 41 +++ .../entrybackupability/EntryBackupAbility.ets | 12 + .../entry/src/main/ets/pages/EntryPageOne.ets | 90 ++++++ .../entry/src/main/ets/pages/EntryPageTwo.ets | 89 ++++++ .../entry/src/main/ets/pages/Index.ets | 78 ++++++ .../SystemRouter/entry/src/main/module.json5 | 66 +++++ .../main/resources/base/element/color.json | 8 + .../main/resources/base/element/string.json | 84 ++++++ .../main/resources/base/media/background.png | Bin 0 -> 57364 bytes .../main/resources/base/media/foreground.png | Bin 0 -> 12430 bytes .../src/main/resources/base/media/icon.png | Bin 0 -> 2041 bytes .../resources/base/media/layered_image.json | 7 + .../main/resources/base/media/startIcon.png | Bin 0 -> 4351 bytes .../resources/base/profile/backup_config.json | 3 + .../resources/base/profile/main_pages.json | 5 + .../resources/base/profile/router_map.json | 17 ++ .../main/resources/en_US/element/string.json | 84 ++++++ .../main/resources/zh_CN/element/string.json | 84 ++++++ .../src/ohosTest/ets/test/Ability.test.ets | 261 ++++++++++++++++++ .../entry/src/ohosTest/ets/test/List.test.ets | 5 + .../entry/src/ohosTest/module.json5 | 27 ++ .../SystemRouter/harA/.gitignore | 6 + .../SystemRouter/harA/Index.ets | 1 + .../SystemRouter/harA/build-profile.json5 | 46 +++ .../SystemRouter/harA/consumer-rules.txt | 0 .../SystemRouter/harA/hvigorfile.ts | 6 + .../SystemRouter/harA/obfuscation-rules.txt | 23 ++ .../SystemRouter/harA/oh-package.json5 | 9 + .../harA/src/main/ets/common/utils/Logger.ets | 45 +++ .../harA/src/main/ets/components/MainPage.ets | 31 +++ .../harA/src/main/ets/pages/HarAPageOne.ets | 90 ++++++ .../harA/src/main/ets/pages/HarAPageTwo.ets | 90 ++++++ .../SystemRouter/harA/src/main/module.json5 | 26 ++ .../main/resources/base/element/string.json | 84 ++++++ .../resources/base/profile/router_map.json | 17 ++ .../main/resources/en_US/element/string.json | 84 ++++++ .../main/resources/zh_CN/element/string.json | 84 ++++++ .../SystemRouter/harB/.gitignore | 6 + .../SystemRouter/harB/Index.ets | 1 + .../SystemRouter/harB/build-profile.json5 | 46 +++ .../SystemRouter/harB/consumer-rules.txt | 0 .../SystemRouter/harB/hvigorfile.ts | 6 + .../SystemRouter/harB/obfuscation-rules.txt | 23 ++ .../SystemRouter/harB/oh-package.json5 | 9 + .../harB/src/main/ets/common/utils/Logger.ets | 45 +++ .../harB/src/main/ets/components/MainPage.ets | 31 +++ .../harB/src/main/ets/pages/HarBPageOne.ets | 90 ++++++ .../harB/src/main/ets/pages/HarBPageTwo.ets | 90 ++++++ .../SystemRouter/harB/src/main/module.json5 | 26 ++ .../main/resources/base/element/string.json | 84 ++++++ .../resources/base/profile/router_map.json | 17 ++ .../main/resources/en_US/element/string.json | 84 ++++++ .../main/resources/zh_CN/element/string.json | 84 ++++++ .../SystemRouter/hspA/.gitignore | 6 + .../SystemRouter/hspA/Index.ets | 1 + .../SystemRouter/hspA/build-profile.json5 | 43 +++ .../SystemRouter/hspA/hvigorfile.ts | 6 + .../SystemRouter/hspA/obfuscation-rules.txt | 23 ++ .../SystemRouter/hspA/oh-package.json5 | 11 + .../hspA/src/main/ets/common/utils/Logger.ets | 45 +++ .../hspA/src/main/ets/pages/HspAPageOne.ets | 90 ++++++ .../hspA/src/main/ets/pages/HspAPageTwo.ets | 90 ++++++ .../hspA/src/main/ets/pages/Index.ets | 31 +++ .../hspA/src/main/ets/utils/Calc.ets | 3 + .../SystemRouter/hspA/src/main/module.json5 | 29 ++ .../main/resources/base/element/string.json | 83 ++++++ .../resources/base/profile/main_pages.json | 5 + .../resources/base/profile/router_map.json | 17 ++ .../SystemRouter/hspB/.gitignore | 6 + .../SystemRouter/hspB/Index.ets | 1 + .../SystemRouter/hspB/build-profile.json5 | 43 +++ .../SystemRouter/hspB/hvigorfile.ts | 6 + .../SystemRouter/hspB/obfuscation-rules.txt | 23 ++ .../SystemRouter/hspB/oh-package.json5 | 11 + .../hspB/src/main/ets/common/utils/Logger.ets | 45 +++ .../hspB/src/main/ets/pages/HspBPageOne.ets | 89 ++++++ .../hspB/src/main/ets/pages/HspBPageTwo.ets | 89 ++++++ .../hspB/src/main/ets/pages/Index.ets | 31 +++ .../hspB/src/main/ets/utils/Calc.ets | 3 + .../SystemRouter/hspB/src/main/module.json5 | 29 ++ .../main/resources/base/element/string.json | 83 ++++++ .../resources/base/profile/main_pages.json | 5 + .../resources/base/profile/router_map.json | 17 ++ .../SystemRouter/hvigor/hvigor-config.json5 | 22 ++ .../SystemRouter/hvigorfile.ts | 6 + .../SystemRouter/images/EntryPageOne.jpeg | Bin 0 -> 54151 bytes .../SystemRouter/images/EntryPageTwo.jpeg | Bin 0 -> 54507 bytes .../SystemRouter/images/HarAPageOne.jpeg | Bin 0 -> 54202 bytes .../SystemRouter/images/HarAPageTwo.jpeg | Bin 0 -> 54253 bytes .../SystemRouter/images/HspAPageOne.jpeg | Bin 0 -> 54326 bytes .../SystemRouter/images/HspAPageTwo.jpeg | Bin 0 -> 54316 bytes .../SystemRouter/images/NavIndex.jpeg | Bin 0 -> 54996 bytes .../SystemRouter/oh-package.json5 | 25 ++ .../SystemRouter/ohosTest.md | 13 + 108 files changed, 3681 insertions(+), 1 deletion(-) create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/.gitignore create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/AppScope/app.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/AppScope/resources/base/element/string.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/AppScope/resources/base/media/app_icon.png create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/README.md create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/build-profile.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/code-linter.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/.gitignore create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/build-profile.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/hvigorfile.ts create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/obfuscation-rules.txt create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/oh-package.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/common/utils/Logger.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/entryability/EntryAbility.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/pages/EntryPageOne.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/pages/EntryPageTwo.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/pages/Index.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/module.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/element/color.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/element/string.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/media/background.png create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/media/foreground.png create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/media/icon.png create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/media/layered_image.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/media/startIcon.png create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/profile/backup_config.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/profile/main_pages.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/profile/router_map.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/en_US/element/string.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/zh_CN/element/string.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/ohosTest/ets/test/Ability.test.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/ohosTest/ets/test/List.test.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/entry/src/ohosTest/module.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harA/.gitignore create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harA/Index.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harA/build-profile.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harA/consumer-rules.txt create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harA/hvigorfile.ts create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harA/obfuscation-rules.txt create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harA/oh-package.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/ets/common/utils/Logger.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/ets/components/MainPage.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/ets/pages/HarAPageOne.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/ets/pages/HarAPageTwo.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/module.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/resources/base/element/string.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/resources/base/profile/router_map.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/resources/en_US/element/string.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/resources/zh_CN/element/string.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harB/.gitignore create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harB/Index.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harB/build-profile.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harB/consumer-rules.txt create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harB/hvigorfile.ts create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harB/obfuscation-rules.txt create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harB/oh-package.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/ets/common/utils/Logger.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/ets/components/MainPage.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/ets/pages/HarBPageOne.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/ets/pages/HarBPageTwo.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/module.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/resources/base/element/string.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/resources/base/profile/router_map.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/resources/en_US/element/string.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/resources/zh_CN/element/string.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspA/.gitignore create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspA/Index.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspA/build-profile.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspA/hvigorfile.ts create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspA/obfuscation-rules.txt create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspA/oh-package.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/common/utils/Logger.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/pages/HspAPageOne.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/pages/HspAPageTwo.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/pages/Index.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/utils/Calc.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/module.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/resources/base/element/string.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/resources/base/profile/main_pages.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/resources/base/profile/router_map.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspB/.gitignore create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspB/Index.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspB/build-profile.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspB/hvigorfile.ts create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspB/obfuscation-rules.txt create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspB/oh-package.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/common/utils/Logger.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/pages/HspBPageOne.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/pages/HspBPageTwo.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/pages/Index.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/utils/Calc.ets create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/module.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/resources/base/element/string.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/resources/base/profile/main_pages.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/resources/base/profile/router_map.json create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hvigor/hvigor-config.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/hvigorfile.ts create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/images/EntryPageOne.jpeg create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/images/EntryPageTwo.jpeg create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/images/HarAPageOne.jpeg create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/images/HarAPageTwo.jpeg create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/images/HspAPageOne.jpeg create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/images/HspAPageTwo.jpeg create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/images/NavIndex.jpeg create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/oh-package.json5 create mode 100644 code/BasicFeature/ApplicationModels/SystemRouter/ohosTest.md diff --git a/OAT.xml b/OAT.xml index ee347c4dc..d2e769dc0 100644 --- a/OAT.xml +++ b/OAT.xml @@ -1025,7 +1025,18 @@ Note:If the text contains special characters, please escape them according to th - + + + + + + + + + + + + diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/.gitignore b/code/BasicFeature/ApplicationModels/SystemRouter/.gitignore new file mode 100644 index 000000000..d2ff20141 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/.gitignore @@ -0,0 +1,12 @@ +/node_modules +/oh_modules +/local.properties +/.idea +**/build +/.hvigor +.cxx +/.clangd +/.clang-format +/.clang-tidy +**/.test +/.appanalyzer \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/AppScope/app.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/AppScope/app.json5 new file mode 100644 index 000000000..1177c993f --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/AppScope/app.json5 @@ -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. +*/ +{ + "app": { + "bundleName": "com.samples.systemrouter", + "vendor": "example", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name" + } +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/AppScope/resources/base/element/string.json b/code/BasicFeature/ApplicationModels/SystemRouter/AppScope/resources/base/element/string.json new file mode 100644 index 000000000..abd8de170 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "SystemRouterSamples" + } + ] +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/AppScope/resources/base/media/app_icon.png b/code/BasicFeature/ApplicationModels/SystemRouter/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a39445dc87828b76fed6d2ec470dd455c45319e3 GIT binary patch literal 2777 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 literal 0 HcmV?d00001 diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/README.md b/code/BasicFeature/ApplicationModels/SystemRouter/README.md new file mode 100644 index 000000000..bf6735de6 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/README.md @@ -0,0 +1,89 @@ +# Navigation系统路由 + +### 介绍 + +本项目提供系统路由的验证,运用系统路由表的方式,跳转到模块(HSP/HAR)的页面,可以不用配置不同跳转模块间的依赖。当发生页面跳转时,未跳转页面不会加载, +已经加载过的页面不会再次加载。 解决了不同模块依赖耦合的问题,以及首页加载时间长的问题。 +详细配置可参考[系统路由表](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/arkts-navigation-navigation.md)。 + +由于环境的差异,不建议下载后直接编译,应先当创建项目,参考示例代码进行编写。 + +### 效果预览 + + + +| EntryPageOne | EntryPageTwo | HarAPageOne | +|------------------------------------------------------------------|------------------------------------------------------------------|-----------------------------------------------------------------| +| | | | +| HarAPageTwo | HspAPageOne | HspAPageTwo | +| | | | + +使用说明 + +1. 主页会提供一个NavIndex的导航页,点击按钮会跳转到不同的来自HAR和HSP包的页面 + +2. 每个HAR和HSP包的页面也存在跳转到别的页面的按钮 + +### 工程目录 + +``` +├──entry/src/main/ets/ +│ ├──common +│ │ └──utils +│ │ └──Logger.ets // 日志打印封装 +│ ├──entryability +│ │ └──EntryAbility.ets // 程序入口 +│ └──pages +│ ├──EntryPageOne.ets // 页面1 +│ ├──EntryPageTwo.ets // 页面2 +│ └──Index.ets // 界面实现 +├──entry/src/main/resources // 应用资源目录 +├──harA +├──harB +├──hspA +└──hspB +``` + +### 具体实现 + +1.创建hapA harA hspA hspB + +2.在跳转目标模块的配置文件[module.json5](entry/src/main/module.json5)添加路由表配置 + +3.添加完路由配置文件地址后,需要在工程resources/base/profile中创建[route_map.json](entry/src/main/resources/base/profile/router_map.json) +文件 + +4.在跳转目标页面中,需要配置入口Builder函数,函数名称需要和[route_map.json](entry/src/main/resources/base/profile/router_map.json) +配置文件中的buildFunction保持一致。 + +5.应用通过调用pushDestinationByName等方式,可以获取跳转目标页面的错误信息。 + +6.运行时需设置引用所有HSP模块。设置运行后,点击Run > entry来启动应用/服务的编译构建。 + +### 相关权限 + +不涉及 + +### 依赖 + +不涉及。 + +### 约束与限制 + +1. 本示例仅支持标准系统上运行,支持设备:RK3568。 + +2. 本示例仅支持API12版本SDK,版本号:5.0.0.26,镜像版本号:OpenHarmony 5.0.0.26。 + +3. 本示例需要使用DevEco Studio NEXT Developer Beta5 (Build Version: 5.0.3.700)才可编译运行; + +### 下载 + +如需单独下载本工程,执行如下命令: + +``` +git init +git config core.sparsecheckout true +echo code/BasicFeature/ApplicationModels/SystemRouter > .git/info/sparse-checkout +git remote add origin https://gitee.com/openharmony/applications_app_samples.git +git pull origin master +``` diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/build-profile.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/build-profile.json5 new file mode 100644 index 000000000..21cf4d8ba --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/build-profile.json5 @@ -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. +*/ + +{ + "app": { + "signingConfigs": [], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compatibleSdkVersion": 12, + "compileSdkVersion": 12, + "runtimeOS": "OpenHarmony", + "buildOption": { + "strictMode": { + "caseSensitiveCheck": true + } + } + } + ], + "buildModeSet": [ + { + "name": "debug", + }, + { + "name": "release" + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + }, + { + "name": "harA", + "srcPath": "./harA", + }, + { + "name": "harB", + "srcPath": "./harB", + }, + { + "name": "hspA", + "srcPath": "./hspA", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + }, + { + "name": "hspB", + "srcPath": "./hspB", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/code-linter.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/code-linter.json5 new file mode 100644 index 000000000..b59cd6c4a --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/code-linter.json5 @@ -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. +*/ + +{ + "files": [ + "**/*.ets" + ], + "ignore": [ + "**/src/ohosTest/**/*", + "**/src/test/**/*", + "**/src/mock/**/*", + "**/node_modules/**/*", + "**/oh_modules/**/*", + "**/build/**/*", + "**/.preview/**/*" + ], + "ruleSet": [ + "plugin:@performance/recommended", + "plugin:@typescript-eslint/recommended" + ], + "rules": { + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/.gitignore b/code/BasicFeature/ApplicationModels/SystemRouter/entry/.gitignore new file mode 100644 index 000000000..e2713a277 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/build-profile.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/entry/build-profile.json5 new file mode 100644 index 000000000..3e7b5fe38 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/build-profile.json5 @@ -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. +*/ + +{ + "apiType": "stageMode", + "buildOption": { + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + } + } + } + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/hvigorfile.ts b/code/BasicFeature/ApplicationModels/SystemRouter/entry/hvigorfile.ts new file mode 100644 index 000000000..c6edcd904 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/hvigorfile.ts @@ -0,0 +1,6 @@ +import { hapTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/obfuscation-rules.txt b/code/BasicFeature/ApplicationModels/SystemRouter/entry/obfuscation-rules.txt new file mode 100644 index 000000000..272efb6ca --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/oh-package.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/entry/oh-package.json5 new file mode 100644 index 000000000..be4aeba63 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/oh-package.json5 @@ -0,0 +1,15 @@ +{ + "name": "entry", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "", + "author": "", + "license": "", + "dependencies": { + "harATest": "file:../harA", + "harBTest": "file:../harB", + "hspATest": "file:../hspA", + "hspBTest": "file:../hspB" + } +} + diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/common/utils/Logger.ets b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/common/utils/Logger.ets new file mode 100644 index 000000000..457745345 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/common/utils/Logger.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 { hilog } from '@kit.PerformanceAnalysisKit'; + +class Logger { + private domain: number; + private prefix: string; + private format: string = '%{public}s, %{public}s'; + + constructor(prefix: string) { + this.prefix = prefix; + this.domain = 0xFF00; + } + + debug(...args: string[]) { + hilog.debug(this.domain, this.prefix, this.format, args); + } + + info(...args: string[]) { + hilog.info(this.domain, this.prefix, this.format, args); + } + + warn(...args: string[]) { + hilog.warn(this.domain, this.prefix, this.format, args); + } + + error(...args: string[]) { + hilog.error(this.domain, this.prefix, this.format, args); + } +} + +export default new Logger('[Sample_SystemRouter]'); \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/entryability/EntryAbility.ets b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 000000000..8335b7692 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,41 @@ +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/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets new file mode 100644 index 000000000..dc55c03d3 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets @@ -0,0 +1,12 @@ +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/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/pages/EntryPageOne.ets b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/pages/EntryPageOne.ets new file mode 100644 index 000000000..81c8706df --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/pages/EntryPageOne.ets @@ -0,0 +1,90 @@ +/* +* 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 Logger from '../common/utils/Logger'; + +@Builder +export function PageOneBuilder(name: string, param: Object) { + PageOne() +} + +const COLUMN_SPACE: number = 12; + +@Component +export struct PageOne { + pageInfos: NavPathStack = new NavPathStack(); + + build() { + NavDestination() { + Column({ space: COLUMN_SPACE }) { + Button($r('app.string.entry_index'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Clear all pages in the stack. + this.pageInfos.clear(); + }) + Button($r('app.string.entry_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('pageTwo', null); + }) + Button($r('app.string.harA_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarAPageOne', null); + }) + Button($r('app.string.harA_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarAPageTwo', null); + }) + Button($r('app.string.harB_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarBPageOne', null); + }) + Button($r('app.string.harB_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarBPageTwo', null); + }) + } + .width($r('app.string.navDestination_width')) + .height($r('app.string.navDestination_height')) + .justifyContent(FlexAlign.End) + .padding({ + bottom: $r('app.string.column_padding'), + left: $r('app.string.column_padding'), + right: $r('app.string.column_padding') + }) + } + .title('entry-pageOne') + .onReady((context: NavDestinationContext) => { + this.pageInfos = context.pathStack; + Logger.info('current page config info is ' + JSON.stringify(context.getConfigInRouteMap())); + }) + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/pages/EntryPageTwo.ets b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/pages/EntryPageTwo.ets new file mode 100644 index 000000000..973793e10 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/pages/EntryPageTwo.ets @@ -0,0 +1,89 @@ +/* +* 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 Logger from '../common/utils/Logger'; + +@Builder +export function PageTwoBuilder(name: string, param: Object) { + PageTwo() +} + +const COLUMN_SPACE: number = 12; + +@Component +export struct PageTwo { + pageInfos: NavPathStack = new NavPathStack(); + + build() { + NavDestination() { + Column({ space: COLUMN_SPACE }) { + Button($r('app.string.entry_index'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + this.pageInfos.clear(); //Clear all pages in the stack + }) + Button($r('app.string.entry_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('pageOne', null); + }) + Button($r('app.string.hspA_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspAPageOne', null); + }) + Button($r('app.string.hspA_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspAPageTwo', null); + }) + Button($r('app.string.hspB_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspBPageOne', null); + }) + Button($r('app.string.hspB_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspBPageTwo', null); + }) + } + .width($r('app.string.navDestination_width')) + .height($r('app.string.navDestination_height')) + .justifyContent(FlexAlign.End) + .padding({ + bottom: $r('app.string.column_padding'), + left: $r('app.string.column_padding'), + right: $r('app.string.column_padding') + }) + } + .title('entry-pageTwo') + .onReady((context: NavDestinationContext) => { + this.pageInfos = context.pathStack + Logger.info('current page config info is ' + JSON.stringify(context.getConfigInRouteMap())); + }) + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/pages/Index.ets b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/pages/Index.ets new file mode 100644 index 000000000..07f543956 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/ets/pages/Index.ets @@ -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. +*/ + +@Entry +@Component +struct NavigationExample { + pageInfos: NavPathStack = new NavPathStack(); + + build() { + Navigation(this.pageInfos) { + Column({ space: 12 }) { + Button($r('app.string.entry_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('pageOne', null); + }) + Button($r('app.string.entry_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('pageTwo', null); + }) + Button($r('app.string.harA_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarAPageOne', null); + }) + Button($r('app.string.harA_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarAPageTwo', null); + }) + Button($r('app.string.hspA_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspAPageOne', null); + }) + Button($r('app.string.hspA_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspAPageTwo', null); + }) + } + .width($r('app.string.navDestination_width')) + .height($r('app.string.navDestination_height')) + .justifyContent(FlexAlign.End) + .padding({ + bottom: $r('app.string.column_padding'), + left: $r('app.string.column_padding'), + right: $r('app.string.column_padding') + }) + } + .title($r('app.string.entry_index_title')) + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/module.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/module.json5 new file mode 100644 index 000000000..c79f292c1 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/module.json5 @@ -0,0 +1,66 @@ +/* +* 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. +*/ +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "routerMap": "$profile:router_map", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ets", + "description": "$string:EntryAbility_desc", + "icon": "$media:app_icon", + "label": "$string:EntryAbility_label", + "startWindowIcon": "$media:startIcon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ], + "extensionAbilities": [ + { + "name": "EntryBackupAbility", + "srcEntry": "./ets/entrybackupability/EntryBackupAbility.ets", + "type": "backup", + "exported": false, + "metadata": [ + { + "name": "ohos.extension.backup", + "resource": "$profile:backup_config" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/element/color.json b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/element/color.json new file mode 100644 index 000000000..3c712962d --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/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/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/element/string.json b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/element/string.json new file mode 100644 index 000000000..bb7ec8087 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/element/string.json @@ -0,0 +1,84 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "Navigation systemRouting" + }, + { + "name": "navDestination_width", + "value": "100%" + }, + { + "name": "navDestination_height", + "value": "100%" + }, + { + "name": "button_width", + "value": "100%" + }, + { + "name": "button_height", + "value": "40" + }, + { + "name": "column_padding", + "value": "16" + }, + { + "name": "entry_index_title", + "value": "NavIndex" + }, + { + "name": "entry_index", + "value": "toIndex" + }, + { + "name": "entry_pageOne", + "value": "toEntryPageOne" + }, + { + "name": "entry_pageTwo", + "value": "toEntryPageTwo" + }, + { + "name": "harA_pageOne", + "value": "toHarAPageOne" + }, + { + "name": "harA_pageTwo", + "value": "toHarAPageTwo" + }, + { + "name": "harB_pageOne", + "value": "toHarBPageOne" + }, + { + "name": "harB_pageTwo", + "value": "toHarBPageTwo" + }, + { + "name": "hspA_pageOne", + "value": "toHspAPageOne" + }, + { + "name": "hspA_pageTwo", + "value": "toHspAPageTwo" + }, + { + "name": "hspB_pageOne", + "value": "toHspBPageOne" + }, + { + "name": "hspB_pageTwo", + "value": "toHspBPageTwo" + } + ] +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/media/background.png b/code/BasicFeature/ApplicationModels/SystemRouter/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/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/media/foreground.png b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/media/foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..4483ddad1f079e1089d685bd204ee1cfe1d01902 GIT binary patch literal 12430 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 E51q9-lK=n! literal 0 HcmV?d00001 diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/media/layered_image.json b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/media/layered_image.json new file mode 100644 index 000000000..fb4992044 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/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/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/media/startIcon.png b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/media/startIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..366f76459ffd4494ec40d0ddd5c59385b9c5da11 GIT binary patch literal 4351 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 literal 0 HcmV?d00001 diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/profile/backup_config.json b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/profile/backup_config.json new file mode 100644 index 000000000..78f40ae7c --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/profile/backup_config.json @@ -0,0 +1,3 @@ +{ + "allowToBackupRestore": true +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/profile/main_pages.json b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 000000000..1898d94f5 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "pages/Index" + ] +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/profile/router_map.json b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/profile/router_map.json new file mode 100644 index 000000000..bdb36958c --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/base/profile/router_map.json @@ -0,0 +1,17 @@ +{ + "routerMap": [ + { + "name": "pageOne", + "pageSourceFile": "src/main/ets/pages/EntryPageOne.ets", + "buildFunction": "PageOneBuilder", + "data": { + "description": "this is pageOne" + } + }, + { + "name": "pageTwo", + "pageSourceFile": "src/main/ets/pages/EntryPageTwo.ets", + "buildFunction": "PageTwoBuilder" + } + ] +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/en_US/element/string.json b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/en_US/element/string.json new file mode 100644 index 000000000..bb7ec8087 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/en_US/element/string.json @@ -0,0 +1,84 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "Navigation systemRouting" + }, + { + "name": "navDestination_width", + "value": "100%" + }, + { + "name": "navDestination_height", + "value": "100%" + }, + { + "name": "button_width", + "value": "100%" + }, + { + "name": "button_height", + "value": "40" + }, + { + "name": "column_padding", + "value": "16" + }, + { + "name": "entry_index_title", + "value": "NavIndex" + }, + { + "name": "entry_index", + "value": "toIndex" + }, + { + "name": "entry_pageOne", + "value": "toEntryPageOne" + }, + { + "name": "entry_pageTwo", + "value": "toEntryPageTwo" + }, + { + "name": "harA_pageOne", + "value": "toHarAPageOne" + }, + { + "name": "harA_pageTwo", + "value": "toHarAPageTwo" + }, + { + "name": "harB_pageOne", + "value": "toHarBPageOne" + }, + { + "name": "harB_pageTwo", + "value": "toHarBPageTwo" + }, + { + "name": "hspA_pageOne", + "value": "toHspAPageOne" + }, + { + "name": "hspA_pageTwo", + "value": "toHspAPageTwo" + }, + { + "name": "hspB_pageOne", + "value": "toHspBPageOne" + }, + { + "name": "hspB_pageTwo", + "value": "toHspBPageTwo" + } + ] +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/zh_CN/element/string.json b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/zh_CN/element/string.json new file mode 100644 index 000000000..e4fea2e2e --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,84 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "模块描述" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "导航系统路由" + }, + { + "name": "navDestination_width", + "value": "100%" + }, + { + "name": "navDestination_height", + "value": "100%" + }, + { + "name": "button_width", + "value": "100%" + }, + { + "name": "button_height", + "value": "40" + }, + { + "name": "column_padding", + "value": "16" + }, + { + "name": "entry_index_title", + "value": "NavIndex" + }, + { + "name": "entry_index", + "value": "toIndex" + }, + { + "name": "entry_pageOne", + "value": "toEntryPageOne" + }, + { + "name": "entry_pageTwo", + "value": "toEntryPageTwo" + }, + { + "name": "harA_pageOne", + "value": "toHarAPageOne" + }, + { + "name": "harA_pageTwo", + "value": "toHarAPageTwo" + }, + { + "name": "harB_pageOne", + "value": "toHarBPageOne" + }, + { + "name": "harB_pageTwo", + "value": "toHarBPageTwo" + }, + { + "name": "hspA_pageOne", + "value": "toHspAPageOne" + }, + { + "name": "hspA_pageTwo", + "value": "toHspAPageTwo" + }, + { + "name": "hspB_pageOne", + "value": "toHspBPageOne" + }, + { + "name": "hspB_pageTwo", + "value": "toHspBPageTwo" + } + ] +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/ohosTest/ets/test/Ability.test.ets b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 000000000..c71f5b19a --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,261 @@ +/* +* 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 '@ohos.hilog'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import { Driver, ON } from '@ohos.UiTest'; + +// 启动前需要安装手动安装HSP包再执行 +let abilityDelegatorRegistry = AbilityDelegatorRegistry.getAbilityDelegator(); +export default function abilityTest() { + describe('ActsAbilityTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + /** + * 拉起应用 + */ + it(`StartAbility_001`, 0, async (done: Function) => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.info(0xF811, 'testTag', 'StartAbility_001 begin'); + try { + await abilityDelegatorRegistry.startAbility({ + bundleName: "com.samples.systemrouter", + abilityName: 'EntryAbility' + }); + done(); + } catch (err) { + expect(0).assertEqual(err.code); + done(); + } + hilog.info(0xF811, 'testTag', 'StartAbility_001 end'); + }) + /** + * 从主页跳转到entry-pageOne + */ + it('TestCase_002', 0, async () => { + let driver = Driver.create(); + await driver.delayMs(1000); + let btnItem = await driver.findComponent(ON.text("toEntryPageOne")); + await btnItem.click(); + await driver.delayMs(1000); + + // 获取标题 + let title = await driver.findComponent(ON.text("entry-pageOne")); + // 检查 + expect(title != undefined).assertTrue(); + await driver.delayMs(1000); + }) + /** + * 从entry-pageOne跳转到主页 + */ + it('TestCase_003', 0, async () => { + let driver = Driver.create(); + await driver.delayMs(1000); + let btnItem = await driver.findComponent(ON.text("toIndex")); + await btnItem.click(); + + await driver.delayMs(1000); + // 获取标题 + let title = await driver.findComponent(ON.text("NavIndex")); + // 检查 + expect(title != undefined).assertTrue(); + await driver.delayMs(1000); + }) + + /** + * 从主页跳转到entry-pageTwo + */ + it('TestCase_004', 0, async () => { + let driver = Driver.create(); + await driver.delayMs(1000); + let btnItem = await driver.findComponent(ON.text("toEntryPageTwo")); + await btnItem.click(); + await driver.delayMs(1000); + + // 获取标题 + let title = await driver.findComponent(ON.text("entry-pageTwo")); + // 检查 + expect(title != undefined).assertTrue(); + await driver.delayMs(1000); + }) + /** + * 从entry-pageTwo跳转到主页 + */ + it('TestCase_005', 0, async () => { + let driver = Driver.create(); + await driver.delayMs(1000); + let btnItem = await driver.findComponent(ON.text("toIndex")); + await btnItem.click(); + + await driver.delayMs(1000); + // 获取标题 + let title = await driver.findComponent(ON.text("NavIndex")); + // 检查 + expect(title != undefined).assertTrue(); + await driver.delayMs(1000); + }) + + /** + * 从主页跳转到harA-pageOne + */ + it('TestCase_006', 0, async () => { + let driver = Driver.create(); + await driver.delayMs(1000); + let btnItem = await driver.findComponent(ON.text("toHarAPageOne")); + await btnItem.click(); + + await driver.delayMs(1000); + // 获取标题 + let title = await driver.findComponent(ON.text("harA-pageOne")); + // 检查 + expect(title != undefined).assertTrue(); + await driver.delayMs(1000); + }) + /** + * 从harA-pageOne跳转到主页 + */ + it('TestCase_007', 0, async () => { + let driver = Driver.create(); + await driver.delayMs(1000); + let btnItem = await driver.findComponent(ON.text("toIndex")); + await btnItem.click(); + + await driver.delayMs(1000); + // 获取标题 + let title = await driver.findComponent(ON.text("NavIndex")); + // 检查 + expect(title != undefined).assertTrue(); + await driver.delayMs(1000); + }) + + /** + * 从主页跳转到harA-pageTwo + */ + it('TestCase_008', 0, async () => { + let driver = Driver.create(); + await driver.delayMs(1000); + let btnItem = await driver.findComponent(ON.text("toHarAPageTwo")); + await btnItem.click(); + await driver.delayMs(1000); + + // 获取标题 + let title = await driver.findComponent(ON.text("harA-pageTwo")); + // 检查 + expect(title != undefined).assertTrue(); + await driver.delayMs(1000); + }) + /** + * 从harA-pageTwo跳转到主页 + */ + it('TestCase_009', 0, async () => { + let driver = Driver.create(); + await driver.delayMs(1000); + let btnItem = await driver.findComponent(ON.text("toIndex")); + await btnItem.click(); + + await driver.delayMs(1000); + // 获取标题 + let title = await driver.findComponent(ON.text("NavIndex")); + // 检查 + expect(title != undefined).assertTrue(); + await driver.delayMs(1000); + }) + + /** + * 从主页跳转到hspA-pageOne + */ + it('TestCase_010', 0, async () => { + let driver = Driver.create(); + await driver.delayMs(1000); + let btnItem = await driver.findComponent(ON.text("toHspAPageOne")); + await btnItem.click(); + await driver.delayMs(1000); + + // 获取标题 + let title = await driver.findComponent(ON.text("hspA-pageOne")); + // 检查 + expect(title != undefined).assertTrue(); + await driver.delayMs(1000); + }) + /** + * 从hspA-pageOne跳转到主页 + */ + it('TestCase_011', 0, async () => { + let driver = Driver.create(); + await driver.delayMs(1000); + let btnItem = await driver.findComponent(ON.text("toIndex")); + await btnItem.click(); + + await driver.delayMs(1000); + // 获取标题 + let title = await driver.findComponent(ON.text("NavIndex")); + // 检查 + expect(title != undefined).assertTrue(); + await driver.delayMs(1000); + }) + + /** + * 从主页跳转到hspA-pageTwo + */ + it('TestCase_012', 0, async () => { + let driver = Driver.create(); + await driver.delayMs(1000); + let btnItem = await driver.findComponent(ON.text("toHspAPageTwo")); + await btnItem.click(); + await driver.delayMs(1000); + + // 获取标题 + let title = await driver.findComponent(ON.text("hspA-pageTwo")); + // 检查 + expect(title != undefined).assertTrue(); + await driver.delayMs(1000); + }) + /** + * 从hspA-pageTwo跳转到主页 + */ + it('TestCase_013', 0, async () => { + let driver = Driver.create(); + await driver.delayMs(1000); + let btnItem = await driver.findComponent(ON.text("toIndex")); + await btnItem.click(); + + await driver.delayMs(1000); + // 获取标题 + let title = await driver.findComponent(ON.text("NavIndex")); + // 检查 + expect(title != undefined).assertTrue(); + await driver.delayMs(1000); + }) + }) +} + diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/ohosTest/ets/test/List.test.ets b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 000000000..794c7dc4e --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,5 @@ +import abilityTest from './Ability.test'; + +export default function testsuite() { + abilityTest(); +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/ohosTest/module.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/ohosTest/module.json5 new file mode 100644 index 000000000..2dadd3d30 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/entry/src/ohosTest/module.json5 @@ -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. +*/ + +{ + "module": { + "name": "entry_test", + "type": "feature", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false + } +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harA/.gitignore b/code/BasicFeature/ApplicationModels/SystemRouter/harA/.gitignore new file mode 100644 index 000000000..e2713a277 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harA/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harA/Index.ets b/code/BasicFeature/ApplicationModels/SystemRouter/harA/Index.ets new file mode 100644 index 000000000..10ebb3efe --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harA/Index.ets @@ -0,0 +1 @@ +export { MainPage } from './src/main/ets/components/MainPage' diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harA/build-profile.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/harA/build-profile.json5 new file mode 100644 index 000000000..60239b913 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harA/build-profile.json5 @@ -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. +*/ + +{ + "apiType": "stageMode", + "buildOption": { + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + }, + "consumerFiles": [ + "./consumer-rules.txt" + ] + } + }, + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest" + } + ] +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harA/consumer-rules.txt b/code/BasicFeature/ApplicationModels/SystemRouter/harA/consumer-rules.txt new file mode 100644 index 000000000..e69de29bb diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harA/hvigorfile.ts b/code/BasicFeature/ApplicationModels/SystemRouter/harA/hvigorfile.ts new file mode 100644 index 000000000..421870714 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harA/hvigorfile.ts @@ -0,0 +1,6 @@ +import { harTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: harTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harA/obfuscation-rules.txt b/code/BasicFeature/ApplicationModels/SystemRouter/harA/obfuscation-rules.txt new file mode 100644 index 000000000..272efb6ca --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harA/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harA/oh-package.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/harA/oh-package.json5 new file mode 100644 index 000000000..160009320 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harA/oh-package.json5 @@ -0,0 +1,9 @@ +{ + "name": "hara", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "Index.ets", + "author": "", + "license": "Apache-2.0", + "dependencies": {} +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/ets/common/utils/Logger.ets b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/ets/common/utils/Logger.ets new file mode 100644 index 000000000..457745345 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/ets/common/utils/Logger.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 { hilog } from '@kit.PerformanceAnalysisKit'; + +class Logger { + private domain: number; + private prefix: string; + private format: string = '%{public}s, %{public}s'; + + constructor(prefix: string) { + this.prefix = prefix; + this.domain = 0xFF00; + } + + debug(...args: string[]) { + hilog.debug(this.domain, this.prefix, this.format, args); + } + + info(...args: string[]) { + hilog.info(this.domain, this.prefix, this.format, args); + } + + warn(...args: string[]) { + hilog.warn(this.domain, this.prefix, this.format, args); + } + + error(...args: string[]) { + hilog.error(this.domain, this.prefix, this.format, args); + } +} + +export default new Logger('[Sample_SystemRouter]'); \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/ets/components/MainPage.ets b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/ets/components/MainPage.ets new file mode 100644 index 000000000..c1b84e522 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/ets/components/MainPage.ets @@ -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. +*/ + +@Component +export struct MainPage { + @State message: string = 'Hello World'; + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + } + .width($r('app.string.full_percent')) + } + .height($r('app.string.full_percent')) + } +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/ets/pages/HarAPageOne.ets b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/ets/pages/HarAPageOne.ets new file mode 100644 index 000000000..7d4d7ee63 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/ets/pages/HarAPageOne.ets @@ -0,0 +1,90 @@ +/* +* 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 Logger from '../common/utils/Logger'; + +@Builder +export function HarAPageOneBuilder(name: string, param: Object) { + HarAPageOne() +} + +const COLUMN_SPACE: number = 12; + +@Component +export struct HarAPageOne { + pageInfos: NavPathStack = new NavPathStack(); + + build() { + NavDestination() { + Column({ space: COLUMN_SPACE }) { + Button($r('app.string.entry_index'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Clear all pages in the stack. + this.pageInfos.clear(); + }) + Button($r('app.string.entry_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('pageOne', null); + }) + Button($r('app.string.entry_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('pageTwo', null); + }) + Button($r('app.string.harA_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarAPageTwo', null); + }) + Button($r('app.string.harB_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarBPageOne', null); + }) + Button($r('app.string.harB_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarBPageTwo', null); + }) + } + .width($r('app.string.navDestination_width')) + .height($r('app.string.navDestination_height')) + .justifyContent(FlexAlign.End) + .padding({ + bottom: $r('app.string.column_padding'), + left: $r('app.string.column_padding'), + right: $r('app.string.column_padding') + }) + } + .title('harA-pageOne') + .onReady((context: NavDestinationContext) => { + this.pageInfos = context.pathStack + Logger.info('current page config info is ' + JSON.stringify(context.getConfigInRouteMap())); + }) + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/ets/pages/HarAPageTwo.ets b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/ets/pages/HarAPageTwo.ets new file mode 100644 index 000000000..7294f55ec --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/ets/pages/HarAPageTwo.ets @@ -0,0 +1,90 @@ +/* +* 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 Logger from '../common/utils/Logger'; + +@Builder +export function HarAPageTwoBuilder(name: string, param: Object) { + HarAPageTwo() +} + +const COLUMN_SPACE: number = 12; + +@Component +export struct HarAPageTwo { + pageInfos: NavPathStack = new NavPathStack(); + + build() { + NavDestination() { + Column({ space: COLUMN_SPACE }) { + Button($r('app.string.entry_index'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Clear all pages in the stack. + this.pageInfos.clear(); + }) + Button($r('app.string.harA_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarAPageOne', null); + }) + Button($r('app.string.hspA_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspAPageOne', null); + }) + Button($r('app.string.hspA_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspAPageTwo', null); + }) + Button($r('app.string.hspB_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspBPageOne', null); + }) + Button($r('app.string.hspB_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspBPageTwo', null); + }) + } + .width($r('app.string.navDestination_width')) + .height($r('app.string.navDestination_height')) + .justifyContent(FlexAlign.End) + .padding({ + bottom: $r('app.string.column_padding'), + left: $r('app.string.column_padding'), + right: $r('app.string.column_padding') + }) + } + .title('harA-pageTwo') + .onReady((context: NavDestinationContext) => { + this.pageInfos = context.pathStack + Logger.info('current page config info is ' + JSON.stringify(context.getConfigInRouteMap())); + }) + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/module.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/module.json5 new file mode 100644 index 000000000..702fc9453 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/module.json5 @@ -0,0 +1,26 @@ +/* +* 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. +*/ + +{ + "module": { + "name": "harA", + "type": "har", + "deviceTypes": [ + "default", + "tablet" + ], + "routerMap": "$profile:router_map" + } +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/resources/base/element/string.json b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/resources/base/element/string.json new file mode 100644 index 000000000..0b9d25e65 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/resources/base/element/string.json @@ -0,0 +1,84 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from package" + }, + { + "name": "navDestination_width", + "value": "100%" + }, + { + "name": "navDestination_height", + "value": "100%" + }, + { + "name": "button_width", + "value": "100%" + }, + { + "name": "button_height", + "value": "40" + }, + { + "name": "button_margin", + "value": "20" + }, + { + "name": "column_padding", + "value": "16" + }, + { + "name": "entry_index_title", + "value": "NavIndex" + }, + { + "name": "entry_index", + "value": "toIndex" + }, + { + "name": "entry_pageOne", + "value": "toEntryPageOne" + }, + { + "name": "entry_pageTwo", + "value": "toEntryPageTwo" + }, + { + "name": "harA_pageOne", + "value": "toHarAPageOne" + }, + { + "name": "harA_pageTwo", + "value": "toHarAPageTwo" + }, + { + "name": "harB_pageOne", + "value": "toHarBPageOne" + }, + { + "name": "harB_pageTwo", + "value": "toHarBPageTwo" + }, + { + "name": "hspA_pageOne", + "value": "toHspAPageOne" + }, + { + "name": "hspA_pageTwo", + "value": "toHspAPageTwo" + }, + { + "name": "hspB_pageOne", + "value": "toHspBPageOne" + }, + { + "name": "hspB_pageTwo", + "value": "toHspBPageTwo" + }, + { + "name": "full_percent", + "value": "100%" + } + ] +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/resources/base/profile/router_map.json b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/resources/base/profile/router_map.json new file mode 100644 index 000000000..e7c119db9 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/resources/base/profile/router_map.json @@ -0,0 +1,17 @@ +{ + "routerMap": [ + { + "name": "HarAPageOne", + "pageSourceFile": "src/main/ets/pages/HarAPageOne.ets", + "buildFunction": "HarAPageOneBuilder", + "data": { + "description": "this is pageOne" + } + }, + { + "name": "HarAPageTwo", + "pageSourceFile": "src/main/ets/pages/HarAPageTwo.ets", + "buildFunction": "HarAPageTwoBuilder" + } + ] +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/resources/en_US/element/string.json b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/resources/en_US/element/string.json new file mode 100644 index 000000000..0b9d25e65 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/resources/en_US/element/string.json @@ -0,0 +1,84 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from package" + }, + { + "name": "navDestination_width", + "value": "100%" + }, + { + "name": "navDestination_height", + "value": "100%" + }, + { + "name": "button_width", + "value": "100%" + }, + { + "name": "button_height", + "value": "40" + }, + { + "name": "button_margin", + "value": "20" + }, + { + "name": "column_padding", + "value": "16" + }, + { + "name": "entry_index_title", + "value": "NavIndex" + }, + { + "name": "entry_index", + "value": "toIndex" + }, + { + "name": "entry_pageOne", + "value": "toEntryPageOne" + }, + { + "name": "entry_pageTwo", + "value": "toEntryPageTwo" + }, + { + "name": "harA_pageOne", + "value": "toHarAPageOne" + }, + { + "name": "harA_pageTwo", + "value": "toHarAPageTwo" + }, + { + "name": "harB_pageOne", + "value": "toHarBPageOne" + }, + { + "name": "harB_pageTwo", + "value": "toHarBPageTwo" + }, + { + "name": "hspA_pageOne", + "value": "toHspAPageOne" + }, + { + "name": "hspA_pageTwo", + "value": "toHspAPageTwo" + }, + { + "name": "hspB_pageOne", + "value": "toHspBPageOne" + }, + { + "name": "hspB_pageTwo", + "value": "toHspBPageTwo" + }, + { + "name": "full_percent", + "value": "100%" + } + ] +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/resources/zh_CN/element/string.json b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/resources/zh_CN/element/string.json new file mode 100644 index 000000000..0b9d25e65 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harA/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,84 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from package" + }, + { + "name": "navDestination_width", + "value": "100%" + }, + { + "name": "navDestination_height", + "value": "100%" + }, + { + "name": "button_width", + "value": "100%" + }, + { + "name": "button_height", + "value": "40" + }, + { + "name": "button_margin", + "value": "20" + }, + { + "name": "column_padding", + "value": "16" + }, + { + "name": "entry_index_title", + "value": "NavIndex" + }, + { + "name": "entry_index", + "value": "toIndex" + }, + { + "name": "entry_pageOne", + "value": "toEntryPageOne" + }, + { + "name": "entry_pageTwo", + "value": "toEntryPageTwo" + }, + { + "name": "harA_pageOne", + "value": "toHarAPageOne" + }, + { + "name": "harA_pageTwo", + "value": "toHarAPageTwo" + }, + { + "name": "harB_pageOne", + "value": "toHarBPageOne" + }, + { + "name": "harB_pageTwo", + "value": "toHarBPageTwo" + }, + { + "name": "hspA_pageOne", + "value": "toHspAPageOne" + }, + { + "name": "hspA_pageTwo", + "value": "toHspAPageTwo" + }, + { + "name": "hspB_pageOne", + "value": "toHspBPageOne" + }, + { + "name": "hspB_pageTwo", + "value": "toHspBPageTwo" + }, + { + "name": "full_percent", + "value": "100%" + } + ] +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harB/.gitignore b/code/BasicFeature/ApplicationModels/SystemRouter/harB/.gitignore new file mode 100644 index 000000000..e2713a277 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harB/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harB/Index.ets b/code/BasicFeature/ApplicationModels/SystemRouter/harB/Index.ets new file mode 100644 index 000000000..10ebb3efe --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harB/Index.ets @@ -0,0 +1 @@ +export { MainPage } from './src/main/ets/components/MainPage' diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harB/build-profile.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/harB/build-profile.json5 new file mode 100644 index 000000000..60239b913 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harB/build-profile.json5 @@ -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. +*/ + +{ + "apiType": "stageMode", + "buildOption": { + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + }, + "consumerFiles": [ + "./consumer-rules.txt" + ] + } + }, + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest" + } + ] +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harB/consumer-rules.txt b/code/BasicFeature/ApplicationModels/SystemRouter/harB/consumer-rules.txt new file mode 100644 index 000000000..e69de29bb diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harB/hvigorfile.ts b/code/BasicFeature/ApplicationModels/SystemRouter/harB/hvigorfile.ts new file mode 100644 index 000000000..421870714 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harB/hvigorfile.ts @@ -0,0 +1,6 @@ +import { harTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: harTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harB/obfuscation-rules.txt b/code/BasicFeature/ApplicationModels/SystemRouter/harB/obfuscation-rules.txt new file mode 100644 index 000000000..272efb6ca --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harB/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harB/oh-package.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/harB/oh-package.json5 new file mode 100644 index 000000000..93490a938 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harB/oh-package.json5 @@ -0,0 +1,9 @@ +{ + "name": "harb", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "Index.ets", + "author": "", + "license": "Apache-2.0", + "dependencies": {} +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/ets/common/utils/Logger.ets b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/ets/common/utils/Logger.ets new file mode 100644 index 000000000..457745345 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/ets/common/utils/Logger.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 { hilog } from '@kit.PerformanceAnalysisKit'; + +class Logger { + private domain: number; + private prefix: string; + private format: string = '%{public}s, %{public}s'; + + constructor(prefix: string) { + this.prefix = prefix; + this.domain = 0xFF00; + } + + debug(...args: string[]) { + hilog.debug(this.domain, this.prefix, this.format, args); + } + + info(...args: string[]) { + hilog.info(this.domain, this.prefix, this.format, args); + } + + warn(...args: string[]) { + hilog.warn(this.domain, this.prefix, this.format, args); + } + + error(...args: string[]) { + hilog.error(this.domain, this.prefix, this.format, args); + } +} + +export default new Logger('[Sample_SystemRouter]'); \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/ets/components/MainPage.ets b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/ets/components/MainPage.ets new file mode 100644 index 000000000..c1b84e522 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/ets/components/MainPage.ets @@ -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. +*/ + +@Component +export struct MainPage { + @State message: string = 'Hello World'; + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + } + .width($r('app.string.full_percent')) + } + .height($r('app.string.full_percent')) + } +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/ets/pages/HarBPageOne.ets b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/ets/pages/HarBPageOne.ets new file mode 100644 index 000000000..ff1d3f1da --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/ets/pages/HarBPageOne.ets @@ -0,0 +1,90 @@ +/* +* 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 Logger from '../common/utils/Logger'; + +@Builder +export function HarBPageOneBuilder(name: string, param: Object) { + HarBPageOne() +} + +const COLUMN_SPACE: number = 12; + +@Component +export struct HarBPageOne { + pageInfos: NavPathStack = new NavPathStack(); + + build() { + NavDestination() { + Column({ space: COLUMN_SPACE }) { + Button($r('app.string.entry_index'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Clear all pages in the stack. + this.pageInfos.clear(); + }) + Button($r('app.string.entry_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('pageOne', null); + }) + Button($r('app.string.entry_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('pageTwo', null); + }) + Button($r('app.string.harA_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarAPageOne', null); + }) + Button($r('app.string.harA_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarAPageTwo', null); + }) + Button($r('app.string.harB_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarBPageTwo', null); + }) + } + .width($r('app.string.navDestination_width')) + .height($r('app.string.navDestination_height')) + .justifyContent(FlexAlign.End) + .padding({ + bottom: $r('app.string.column_padding'), + left: $r('app.string.column_padding'), + right: $r('app.string.column_padding') + }) + } + .title('harB-pageOne') + .onReady((context: NavDestinationContext) => { + this.pageInfos = context.pathStack + Logger.info('current page config info is ' + JSON.stringify(context.getConfigInRouteMap())); + }) + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/ets/pages/HarBPageTwo.ets b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/ets/pages/HarBPageTwo.ets new file mode 100644 index 000000000..4ca0a2240 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/ets/pages/HarBPageTwo.ets @@ -0,0 +1,90 @@ +/* +* 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 Logger from '../common/utils/Logger'; + +@Builder +export function HarBPageTwoBuilder(name: string, param: Object) { + HarBPageTwo() +} + +const COLUMN_SPACE: number = 12; + +@Component +export struct HarBPageTwo { + pageInfos: NavPathStack = new NavPathStack(); + + build() { + NavDestination() { + Column({ space: COLUMN_SPACE }) { + Button($r('app.string.entry_index'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Clear all pages in the stack. + this.pageInfos.clear(); + }) + Button($r('app.string.harB_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarBPageOne', null); + }) + Button($r('app.string.hspA_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspAPageOne', null); + }) + Button($r('app.string.hspA_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspAPageTwo', null); + }) + Button($r('app.string.hspB_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspBPageOne', null); + }) + Button($r('app.string.hspB_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspBPageTwo', null); + }) + } + .width($r('app.string.navDestination_width')) + .height($r('app.string.navDestination_height')) + .justifyContent(FlexAlign.End) + .padding({ + bottom: $r('app.string.column_padding'), + left: $r('app.string.column_padding'), + right: $r('app.string.column_padding') + }) + } + .title('harB-pageTwo') + .onReady((context: NavDestinationContext) => { + this.pageInfos = context.pathStack + Logger.info('current page config info is ' + JSON.stringify(context.getConfigInRouteMap())); + }) + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/module.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/module.json5 new file mode 100644 index 000000000..e555e386a --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/module.json5 @@ -0,0 +1,26 @@ +/* +* 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. +*/ + +{ + "module": { + "name": "harB", + "type": "har", + "deviceTypes": [ + "default", + "tablet" + ], + "routerMap": "$profile:router_map" + } +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/resources/base/element/string.json b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/resources/base/element/string.json new file mode 100644 index 000000000..0b9d25e65 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/resources/base/element/string.json @@ -0,0 +1,84 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from package" + }, + { + "name": "navDestination_width", + "value": "100%" + }, + { + "name": "navDestination_height", + "value": "100%" + }, + { + "name": "button_width", + "value": "100%" + }, + { + "name": "button_height", + "value": "40" + }, + { + "name": "button_margin", + "value": "20" + }, + { + "name": "column_padding", + "value": "16" + }, + { + "name": "entry_index_title", + "value": "NavIndex" + }, + { + "name": "entry_index", + "value": "toIndex" + }, + { + "name": "entry_pageOne", + "value": "toEntryPageOne" + }, + { + "name": "entry_pageTwo", + "value": "toEntryPageTwo" + }, + { + "name": "harA_pageOne", + "value": "toHarAPageOne" + }, + { + "name": "harA_pageTwo", + "value": "toHarAPageTwo" + }, + { + "name": "harB_pageOne", + "value": "toHarBPageOne" + }, + { + "name": "harB_pageTwo", + "value": "toHarBPageTwo" + }, + { + "name": "hspA_pageOne", + "value": "toHspAPageOne" + }, + { + "name": "hspA_pageTwo", + "value": "toHspAPageTwo" + }, + { + "name": "hspB_pageOne", + "value": "toHspBPageOne" + }, + { + "name": "hspB_pageTwo", + "value": "toHspBPageTwo" + }, + { + "name": "full_percent", + "value": "100%" + } + ] +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/resources/base/profile/router_map.json b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/resources/base/profile/router_map.json new file mode 100644 index 000000000..e3a49c10b --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/resources/base/profile/router_map.json @@ -0,0 +1,17 @@ +{ + "routerMap": [ + { + "name": "HarBPageOne", + "pageSourceFile": "src/main/ets/pages/HarBPageOne.ets", + "buildFunction": "HarBPageOneBuilder", + "data": { + "description": "this is pageOne" + } + }, + { + "name": "HarBPageTwo", + "pageSourceFile": "src/main/ets/pages/HarBPageTwo.ets", + "buildFunction": "HarBPageTwoBuilder" + } + ] +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/resources/en_US/element/string.json b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/resources/en_US/element/string.json new file mode 100644 index 000000000..0b9d25e65 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/resources/en_US/element/string.json @@ -0,0 +1,84 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from package" + }, + { + "name": "navDestination_width", + "value": "100%" + }, + { + "name": "navDestination_height", + "value": "100%" + }, + { + "name": "button_width", + "value": "100%" + }, + { + "name": "button_height", + "value": "40" + }, + { + "name": "button_margin", + "value": "20" + }, + { + "name": "column_padding", + "value": "16" + }, + { + "name": "entry_index_title", + "value": "NavIndex" + }, + { + "name": "entry_index", + "value": "toIndex" + }, + { + "name": "entry_pageOne", + "value": "toEntryPageOne" + }, + { + "name": "entry_pageTwo", + "value": "toEntryPageTwo" + }, + { + "name": "harA_pageOne", + "value": "toHarAPageOne" + }, + { + "name": "harA_pageTwo", + "value": "toHarAPageTwo" + }, + { + "name": "harB_pageOne", + "value": "toHarBPageOne" + }, + { + "name": "harB_pageTwo", + "value": "toHarBPageTwo" + }, + { + "name": "hspA_pageOne", + "value": "toHspAPageOne" + }, + { + "name": "hspA_pageTwo", + "value": "toHspAPageTwo" + }, + { + "name": "hspB_pageOne", + "value": "toHspBPageOne" + }, + { + "name": "hspB_pageTwo", + "value": "toHspBPageTwo" + }, + { + "name": "full_percent", + "value": "100%" + } + ] +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/resources/zh_CN/element/string.json b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/resources/zh_CN/element/string.json new file mode 100644 index 000000000..0b9d25e65 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/harB/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,84 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from package" + }, + { + "name": "navDestination_width", + "value": "100%" + }, + { + "name": "navDestination_height", + "value": "100%" + }, + { + "name": "button_width", + "value": "100%" + }, + { + "name": "button_height", + "value": "40" + }, + { + "name": "button_margin", + "value": "20" + }, + { + "name": "column_padding", + "value": "16" + }, + { + "name": "entry_index_title", + "value": "NavIndex" + }, + { + "name": "entry_index", + "value": "toIndex" + }, + { + "name": "entry_pageOne", + "value": "toEntryPageOne" + }, + { + "name": "entry_pageTwo", + "value": "toEntryPageTwo" + }, + { + "name": "harA_pageOne", + "value": "toHarAPageOne" + }, + { + "name": "harA_pageTwo", + "value": "toHarAPageTwo" + }, + { + "name": "harB_pageOne", + "value": "toHarBPageOne" + }, + { + "name": "harB_pageTwo", + "value": "toHarBPageTwo" + }, + { + "name": "hspA_pageOne", + "value": "toHspAPageOne" + }, + { + "name": "hspA_pageTwo", + "value": "toHspAPageTwo" + }, + { + "name": "hspB_pageOne", + "value": "toHspBPageOne" + }, + { + "name": "hspB_pageTwo", + "value": "toHspBPageTwo" + }, + { + "name": "full_percent", + "value": "100%" + } + ] +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspA/.gitignore b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/.gitignore new file mode 100644 index 000000000..e2713a277 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspA/Index.ets b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/Index.ets new file mode 100644 index 000000000..3cb1d2e3e --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/Index.ets @@ -0,0 +1 @@ +export { add } from './src/main/ets/utils/Calc' \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspA/build-profile.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/build-profile.json5 new file mode 100644 index 000000000..d538be2ef --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/build-profile.json5 @@ -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. +*/ + +{ + "apiType": "stageMode", + "buildOption": { + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + } + } + }, + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest" + } + ] +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspA/hvigorfile.ts b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/hvigorfile.ts new file mode 100644 index 000000000..d993120bd --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/hvigorfile.ts @@ -0,0 +1,6 @@ +import { hspTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: hspTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspA/obfuscation-rules.txt b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/obfuscation-rules.txt new file mode 100644 index 000000000..272efb6ca --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspA/oh-package.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/oh-package.json5 new file mode 100644 index 000000000..e9e1bcf62 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/oh-package.json5 @@ -0,0 +1,11 @@ +{ + "name": "hspa", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "Index.ets", + "author": "", + "license": "Apache-2.0", + "packageType": "InterfaceHar", + "dependencies": { + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/common/utils/Logger.ets b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/common/utils/Logger.ets new file mode 100644 index 000000000..457745345 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/common/utils/Logger.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 { hilog } from '@kit.PerformanceAnalysisKit'; + +class Logger { + private domain: number; + private prefix: string; + private format: string = '%{public}s, %{public}s'; + + constructor(prefix: string) { + this.prefix = prefix; + this.domain = 0xFF00; + } + + debug(...args: string[]) { + hilog.debug(this.domain, this.prefix, this.format, args); + } + + info(...args: string[]) { + hilog.info(this.domain, this.prefix, this.format, args); + } + + warn(...args: string[]) { + hilog.warn(this.domain, this.prefix, this.format, args); + } + + error(...args: string[]) { + hilog.error(this.domain, this.prefix, this.format, args); + } +} + +export default new Logger('[Sample_SystemRouter]'); \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/pages/HspAPageOne.ets b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/pages/HspAPageOne.ets new file mode 100644 index 000000000..5ca15ed0b --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/pages/HspAPageOne.ets @@ -0,0 +1,90 @@ +/* +* 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 Logger from '../common/utils/Logger'; + +@Builder +export function HspAPageOneBuilder(name: string, param: Object) { + HspAPageOne() +} + +const COLUMN_SPACE: number = 12; + +@Component +export struct HspAPageOne { + pageInfos: NavPathStack = new NavPathStack(); + + build() { + NavDestination() { + Column({ space: COLUMN_SPACE }) { + Button($r('app.string.entry_index'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Clear all pages in the stack. + this.pageInfos.clear(); + }) + Button($r('app.string.entry_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('pageOne', null); + }) + Button($r('app.string.entry_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('pageTwo', null); + }) + Button($r('app.string.hspA_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspAPageTwo', null); + }) + Button($r('app.string.hspB_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspBPageOne', null); + }) + Button($r('app.string.hspB_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspBPageTwo', null); + }) + } + .width($r('app.string.navDestination_width')) + .height($r('app.string.navDestination_height')) + .justifyContent(FlexAlign.End) + .padding({ + bottom: $r('app.string.column_padding'), + left: $r('app.string.column_padding'), + right: $r('app.string.column_padding') + }) + } + .title('hspA-pageOne') + .onReady((context: NavDestinationContext) => { + this.pageInfos = context.pathStack + Logger.info('current page config info is ' + JSON.stringify(context.getConfigInRouteMap())); + }) + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/pages/HspAPageTwo.ets b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/pages/HspAPageTwo.ets new file mode 100644 index 000000000..b10bcc5f6 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/pages/HspAPageTwo.ets @@ -0,0 +1,90 @@ +/* +* 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 Logger from '../common/utils/Logger'; + +@Builder +export function HspAPageTwoBuilder(name: string, param: Object) { + HspAPageTwo() +} + +const COLUMN_SPACE: number = 12; + +@Component +export struct HspAPageTwo { + pageInfos: NavPathStack = new NavPathStack(); + + build() { + NavDestination() { + Column({ space: COLUMN_SPACE }) { + Button($r('app.string.entry_index'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Clear all pages in the stack. + this.pageInfos.clear(); + }) + Button($r('app.string.hspA_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspAPageOne', null); + }) + Button($r('app.string.harA_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarAPageOne', null); + }) + Button($r('app.string.harA_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarAPageTwo', null); + }) + Button($r('app.string.harB_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarBPageOne', null); + }) + Button($r('app.string.harB_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarBPageTwo', null); + }) + } + .width($r('app.string.navDestination_width')) + .height($r('app.string.navDestination_height')) + .justifyContent(FlexAlign.End) + .padding({ + bottom: $r('app.string.column_padding'), + left: $r('app.string.column_padding'), + right: $r('app.string.column_padding') + }) + } + .title('hspA-pageTwo') + .onReady((context: NavDestinationContext) => { + this.pageInfos = context.pathStack + Logger.info('current page config info is ' + JSON.stringify(context.getConfigInRouteMap())); + }) + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/pages/Index.ets b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/pages/Index.ets new file mode 100644 index 000000000..029d6f5c9 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/pages/Index.ets @@ -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. +*/ +@Entry +@Component +export struct Index { + @State message: string = 'Hello World'; + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + } + .width($r('app.string.full_percent')) + } + .height($r('app.string.full_percent')) + } +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/utils/Calc.ets b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/utils/Calc.ets new file mode 100644 index 000000000..08ab263da --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/ets/utils/Calc.ets @@ -0,0 +1,3 @@ +export function add(a: number, b: number) { + return a + b; +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/module.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/module.json5 new file mode 100644 index 000000000..47a3710dd --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/module.json5 @@ -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. +*/ + +{ + "module": { + "name": "hspA", + "type": "shared", + "description": "$string:shared_desc", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "pages": "$profile:main_pages", + "routerMap": "$profile:router_map" + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/resources/base/element/string.json b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/resources/base/element/string.json new file mode 100644 index 000000000..c21ff2f1b --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/resources/base/element/string.json @@ -0,0 +1,83 @@ +{ + "string": [ + { + "name": "shared_desc", + "value": "description" + },{ + "name": "navDestination_width", + "value": "100%" + }, + { + "name": "navDestination_height", + "value": "100%" + }, + { + "name": "button_width", + "value": "100%" + }, + { + "name": "button_height", + "value": "40" + }, + { + "name": "button_margin", + "value": "20" + }, + { + "name": "column_padding", + "value": "16" + }, + { + "name": "entry_index_title", + "value": "NavIndex" + }, + { + "name": "entry_index", + "value": "toIndex" + }, + { + "name": "entry_pageOne", + "value": "toEntryPageOne" + }, + { + "name": "entry_pageTwo", + "value": "toEntryPageTwo" + }, + { + "name": "harA_pageOne", + "value": "toHarAPageOne" + }, + { + "name": "harA_pageTwo", + "value": "toHarAPageTwo" + }, + { + "name": "harB_pageOne", + "value": "toHarBPageOne" + }, + { + "name": "harB_pageTwo", + "value": "toHarBPageTwo" + }, + { + "name": "hspA_pageOne", + "value": "toHspAPageOne" + }, + { + "name": "hspA_pageTwo", + "value": "toHspAPageTwo" + }, + { + "name": "hspB_pageOne", + "value": "toHspBPageOne" + }, + { + "name": "hspB_pageTwo", + "value": "toHspBPageTwo" + }, + { + "name": "full_percent", + "value": "100%" + } + ] +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/resources/base/profile/main_pages.json b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/resources/base/profile/main_pages.json new file mode 100644 index 000000000..1898d94f5 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "pages/Index" + ] +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/resources/base/profile/router_map.json b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/resources/base/profile/router_map.json new file mode 100644 index 000000000..d79dcf9cc --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspA/src/main/resources/base/profile/router_map.json @@ -0,0 +1,17 @@ +{ + "routerMap": [ + { + "name": "HspAPageOne", + "pageSourceFile": "src/main/ets/pages/HspAPageOne.ets", + "buildFunction": "HspAPageOneBuilder", + "data": { + "description": "this is pageOne" + } + }, + { + "name": "HspAPageTwo", + "pageSourceFile": "src/main/ets/pages/HspAPageTwo.ets", + "buildFunction": "HspAPageTwoBuilder" + } + ] +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspB/.gitignore b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/.gitignore new file mode 100644 index 000000000..e2713a277 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspB/Index.ets b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/Index.ets new file mode 100644 index 000000000..3cb1d2e3e --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/Index.ets @@ -0,0 +1 @@ +export { add } from './src/main/ets/utils/Calc' \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspB/build-profile.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/build-profile.json5 new file mode 100644 index 000000000..d538be2ef --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/build-profile.json5 @@ -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. +*/ + +{ + "apiType": "stageMode", + "buildOption": { + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + } + } + }, + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest" + } + ] +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspB/hvigorfile.ts b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/hvigorfile.ts new file mode 100644 index 000000000..d993120bd --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/hvigorfile.ts @@ -0,0 +1,6 @@ +import { hspTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: hspTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspB/obfuscation-rules.txt b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/obfuscation-rules.txt new file mode 100644 index 000000000..272efb6ca --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspB/oh-package.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/oh-package.json5 new file mode 100644 index 000000000..6b88aaa71 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/oh-package.json5 @@ -0,0 +1,11 @@ +{ + "name": "hspb", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "Index.ets", + "author": "", + "license": "Apache-2.0", + "packageType": "InterfaceHar", + "dependencies": { + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/common/utils/Logger.ets b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/common/utils/Logger.ets new file mode 100644 index 000000000..457745345 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/common/utils/Logger.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 { hilog } from '@kit.PerformanceAnalysisKit'; + +class Logger { + private domain: number; + private prefix: string; + private format: string = '%{public}s, %{public}s'; + + constructor(prefix: string) { + this.prefix = prefix; + this.domain = 0xFF00; + } + + debug(...args: string[]) { + hilog.debug(this.domain, this.prefix, this.format, args); + } + + info(...args: string[]) { + hilog.info(this.domain, this.prefix, this.format, args); + } + + warn(...args: string[]) { + hilog.warn(this.domain, this.prefix, this.format, args); + } + + error(...args: string[]) { + hilog.error(this.domain, this.prefix, this.format, args); + } +} + +export default new Logger('[Sample_SystemRouter]'); \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/pages/HspBPageOne.ets b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/pages/HspBPageOne.ets new file mode 100644 index 000000000..099c158c4 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/pages/HspBPageOne.ets @@ -0,0 +1,89 @@ +/* +* 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 Logger from '../common/utils/Logger'; + +@Builder +export function HspBPageOneBuilder(name: string, param: Object) { + HspBPageOne() +} +const COLUMN_SPACE: number = 12; +@Component +export struct HspBPageOne { + + pageInfos: NavPathStack = new NavPathStack(); + + build() { + NavDestination() { + Column({ space: COLUMN_SPACE }) { + Button($r('app.string.entry_index'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Clear all pages in the stack. + this.pageInfos.clear(); + }) + Button($r('app.string.hspB_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspBPageTwo', null); + }) + Button($r('app.string.harA_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarAPageOne', null); + }) + Button($r('app.string.harA_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarAPageTwo', null); + }) + Button($r('app.string.harB_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarBPageOne', null); + }) + Button($r('app.string.harB_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HarBPageTwo', null); + }) + } + .width($r('app.string.navDestination_width')) + .height($r('app.string.navDestination_height')) + .justifyContent(FlexAlign.End) + .padding({ + bottom: $r('app.string.column_padding'), + left: $r('app.string.column_padding'), + right: $r('app.string.column_padding') + }) + } + .title('hspB-pageOne') + .onReady((context: NavDestinationContext) => { + this.pageInfos = context.pathStack + Logger.info('current page config info is ' + JSON.stringify(context.getConfigInRouteMap())); + }) + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/pages/HspBPageTwo.ets b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/pages/HspBPageTwo.ets new file mode 100644 index 000000000..a5cbfad63 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/pages/HspBPageTwo.ets @@ -0,0 +1,89 @@ +/* +* 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 Logger from '../common/utils/Logger'; + +@Builder +export function HspBPageTwoBuilder(name: string, param: Object) { + HspBPageTwo() +} +const COLUMN_SPACE: number = 12; +@Component +export struct HspBPageTwo { + + pageInfos: NavPathStack = new NavPathStack(); + + build() { + NavDestination() { + Column({ space: COLUMN_SPACE }) { + Button($r('app.string.entry_index'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Clear all pages in the stack. + this.pageInfos.clear(); + }) + Button($r('app.string.entry_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('pageOne', null); + }) + Button($r('app.string.entry_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('pageTwo', null); + }) + Button($r('app.string.hspA_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspAPageOne', null); + }) + Button($r('app.string.hspA_pageTwo'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspAPageTwo', null); + }) + Button($r('app.string.hspB_pageOne'), { stateEffect: true, type: ButtonType.Capsule }) + .width($r('app.string.button_width')) + .height($r('app.string.button_height')) + .onClick(() => { + //Push the NavDestination page information specified by name onto the stack, and pass the data as param. + this.pageInfos.pushPathByName('HspBPageOne', null); + }) + } + .width($r('app.string.navDestination_width')) + .height($r('app.string.navDestination_height')) + .justifyContent(FlexAlign.End) + .padding({ + bottom: $r('app.string.column_padding'), + left: $r('app.string.column_padding'), + right: $r('app.string.column_padding') + }) + } + .title('hspB-pageTwo') + .onReady((context: NavDestinationContext) => { + this.pageInfos = context.pathStack + Logger.info('current page config info is ' + JSON.stringify(context.getConfigInRouteMap())); + }) + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/pages/Index.ets b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/pages/Index.ets new file mode 100644 index 000000000..029d6f5c9 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/pages/Index.ets @@ -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. +*/ +@Entry +@Component +export struct Index { + @State message: string = 'Hello World'; + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + } + .width($r('app.string.full_percent')) + } + .height($r('app.string.full_percent')) + } +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/utils/Calc.ets b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/utils/Calc.ets new file mode 100644 index 000000000..08ab263da --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/ets/utils/Calc.ets @@ -0,0 +1,3 @@ +export function add(a: number, b: number) { + return a + b; +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/module.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/module.json5 new file mode 100644 index 000000000..4f2eeb31e --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/module.json5 @@ -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. +*/ + +{ + "module": { + "name": "hspB", + "type": "shared", + "description": "$string:shared_desc", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "pages": "$profile:main_pages", + "routerMap": "$profile:router_map" + } +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/resources/base/element/string.json b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/resources/base/element/string.json new file mode 100644 index 000000000..c21ff2f1b --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/resources/base/element/string.json @@ -0,0 +1,83 @@ +{ + "string": [ + { + "name": "shared_desc", + "value": "description" + },{ + "name": "navDestination_width", + "value": "100%" + }, + { + "name": "navDestination_height", + "value": "100%" + }, + { + "name": "button_width", + "value": "100%" + }, + { + "name": "button_height", + "value": "40" + }, + { + "name": "button_margin", + "value": "20" + }, + { + "name": "column_padding", + "value": "16" + }, + { + "name": "entry_index_title", + "value": "NavIndex" + }, + { + "name": "entry_index", + "value": "toIndex" + }, + { + "name": "entry_pageOne", + "value": "toEntryPageOne" + }, + { + "name": "entry_pageTwo", + "value": "toEntryPageTwo" + }, + { + "name": "harA_pageOne", + "value": "toHarAPageOne" + }, + { + "name": "harA_pageTwo", + "value": "toHarAPageTwo" + }, + { + "name": "harB_pageOne", + "value": "toHarBPageOne" + }, + { + "name": "harB_pageTwo", + "value": "toHarBPageTwo" + }, + { + "name": "hspA_pageOne", + "value": "toHspAPageOne" + }, + { + "name": "hspA_pageTwo", + "value": "toHspAPageTwo" + }, + { + "name": "hspB_pageOne", + "value": "toHspBPageOne" + }, + { + "name": "hspB_pageTwo", + "value": "toHspBPageTwo" + }, + { + "name": "full_percent", + "value": "100%" + } + ] +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/resources/base/profile/main_pages.json b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/resources/base/profile/main_pages.json new file mode 100644 index 000000000..1898d94f5 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "pages/Index" + ] +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/resources/base/profile/router_map.json b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/resources/base/profile/router_map.json new file mode 100644 index 000000000..4752c6dd3 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hspB/src/main/resources/base/profile/router_map.json @@ -0,0 +1,17 @@ +{ + "routerMap": [ + { + "name": "HspBPageOne", + "pageSourceFile": "src/main/ets/pages/HspBPageOne.ets", + "buildFunction": "HspBPageOneBuilder", + "data": { + "description": "this is pageOne" + } + }, + { + "name": "HspBPageTwo", + "pageSourceFile": "src/main/ets/pages/HspBPageTwo.ets", + "buildFunction": "HspBPageTwoBuilder" + } + ] +} \ No newline at end of file diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hvigor/hvigor-config.json5 b/code/BasicFeature/ApplicationModels/SystemRouter/hvigor/hvigor-config.json5 new file mode 100644 index 000000000..06b278367 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/hvigor/hvigor-config.json5 @@ -0,0 +1,22 @@ +{ + "modelVersion": "5.0.0", + "dependencies": { + }, + "execution": { + // "analyze": "normal", /* Define the build analyze mode. Value: [ "normal" | "advanced" | false ]. Default: "normal" */ + // "daemon": true, /* Enable daemon compilation. Value: [ true | false ]. Default: true */ + // "incremental": true, /* Enable incremental compilation. Value: [ true | false ]. Default: true */ + // "parallel": true, /* Enable parallel compilation. Value: [ true | false ]. Default: true */ + // "typeCheck": false, /* Enable typeCheck. Value: [ true | false ]. Default: false */ + }, + "logging": { + // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ + }, + "debugging": { + // "stacktrace": false /* Disable stacktrace compilation. Value: [ true | false ]. Default: false */ + }, + "nodeOptions": { + // "maxOldSpaceSize": 8192 /* Enable nodeOptions maxOldSpaceSize compilation. Unit M. Used for the daemon process. Default: 8192*/ + // "exposeGC": true /* Enable to trigger garbage collection explicitly. Default: true*/ + } +} diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/hvigorfile.ts b/code/BasicFeature/ApplicationModels/SystemRouter/hvigorfile.ts new file mode 100644 index 000000000..f3cb9f1a8 --- /dev/null +++ b/code/BasicFeature/ApplicationModels/SystemRouter/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/code/BasicFeature/ApplicationModels/SystemRouter/images/EntryPageOne.jpeg b/code/BasicFeature/ApplicationModels/SystemRouter/images/EntryPageOne.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..95044a8bf1817b793e1707edacd36030a5c31db9 GIT binary patch literal 54151 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 z zH$(O#0k~;VX|RdEF8A#4soaY5d}CJJf!0+4{K97oMB?tOZOXh%E~~!ka%;VIU3!IQ z$f9n_^u#R)KywGuuR%vN^VBP@%$281Sa!zIm8d-i3WR;8_!qy}zjWM7b69-bbN;72 zB6StTC7`R?MM{lJD54&ihK4IEY|4Am;MN$wi6b#FPyOxnc_~(yjv37I0`x_1&Hk~piU|EU!7Fzgeo@o|Yy1=^d1eDGp#O*$ z{k*6s*w~-_^t(z>W;USbEk@+bgMZcY*7Az7tNm8bd$^RncjEY|lT4?;3sF5@%;u6Y zn7|VQDnn64QnHYx*wDt)^BHLK-fa1G?Fa=&b6gf$(_sCv%q0c=ZCFbdQ8XV=Atar) zA#p>9A>Nay1CZI1&+^XRFO9tuR*WWX4?w14kcd_9Y1f3`9HRJ}&%oi#gS4YFq-(pB zTY8swA=k)epMeDFDF>j88M2D^mV@`-KReES)Z8x!CVPML{@`u;?C8ozwejEm5`2d;GyhBtB8^l;!vNN27t1 zr#;^%3E&@HYCMjvv;~m&dCrt!-Dn!gyhuR(N6kzVtDU;bm20-cH1W?VB^5%5jp`oK zopsei&v`p}u+E#C)+`j-H>R@!)72{r_)X&ojYV=rfrntR`Ns{Yy$s;SqQw?4wS&VTcrBy&aM_{K`tI9J$+a2s#R-XdbaP; zQo(DD6r!g$1h#JbnNda1K6N*G0?0P7al7=pWL|jkl=quCzYsz>ov|*RpZ8;kt5X_&;a*2Le#=-r9J7FpB#0JfxNr|rh#a6zQ zy!NE2>AnDk0AA;)1pajSE1E{;9v}Wh{4D6#b722Ff#Z|9aHxo3r`FrVUDFaxt$`YT zftzo`Plj_}k}?^`RH&sYCb{^`s3Y_uS*QYRee4nsKrr=GogNvq(b54ZfF8v`DHB}~ zCT}g9Bro90kF6Dc|E%o7sTHv>KZyfSL-zT1Izh`VoqZhY53$5-zyPIpSJSXQZOrDZ z#pUmCZ?s{pNEq*@3)Ud!#4XW)amaZ_Ds&oRj(;&1=W#i)eym=WF_fj$!q`IBLV-wd z=-EGy{G{>`XFXu^BChg*Bu`0q1>aaO%Q%nKzU30#E|hgWIZ7x}@1sp_ubNQ@_n4)&TDe6f(rHuBJQ*=B@fVwu9jns( zyR^6vn!8Q6%BiIJl4c9;$FuaLg>1>6g`>4?gP51EGp{c^!q?r4{8;SHmfM=C8L5i> zGQXk7AnyR%_Se?P575QgP;5mD4zQo`SJ-%FK+xsR&t@_gveb^0ush6x*YV>|J3av` z(`NPmPKntY3zo%HUz*##J9ht@(LVks*}uvsFR(2?D})s(rD~L*y|ifRen&f)Ic&H+A>x-`42=&h~$R#$;`1S%|(68E{ri-dV4^c6&d(=_y8V z*rIW%^%QSf;0esubsc&%affA81BY4QftE$}o0XQtgQr?dp1Pf)$LssDlX2a zUj=2B-`b7#YHww#Sm09E(uP_*-dd{oEK_V@@k$z;H=xg+S^a@3Dd?G8_OTCAW(i%G zil^jDMwf?!wfJ=NZpS|><|)_G#DuyS8_ZvEGDJ@q8KN#mP}h1#d;&$vyB^t zz?zG;UmThjYhsb(RLkZ(R`T%tD~&WO)iZk90pKnbLr17(Q?*88TRICeX!qry?OavJ z^0H)1eHX)6@M>o`0Ztw&_rnhlu9VhG88f356VE*#yjv8ZffH$wcVf?7j&nA!|H@E$ zJfCl~#k_*rF6)%A0Y=O$X~QP_(P1an?m} zxm}!qXkK-ycwX6!QRR`+cfTokR_|tIjFa;4W+Ty7HN&M)y{uP+p^wkZe^gxu8t8LZ zyHnkDqL-#^0a`E*8zwArFI-<2L0kvj<&YlFI};G|k%0_QR6Y z_v$%nPe8GfUwh6q^c#OI>Myib7ml~b7fQcmt?Up9B=B|2=KG%1B;1_v+AHh@#;Dk? z`2iqT=4Q*MTpKhtRO05NYA4n+ZxXgDTTK?otc4X_a18ub6TxAY`N#f*>7=zQ1TdJg z6x4KN#PPAaEPI9*Ysl1>Ai4)KvkC_WNu&@|y(E83h9$mmWC6c*mXB5Ya{c3XO_TOy z+sDpsX;Eoevu+BZsH$uWROT_ZUFoeGCb1hQ=w?D|3ZxBl^{t3Gcl0v3S@hZNtAHd< z5-&H1Uh~8DtZZS5!|$2C4@(Zy87qpP7<~iNs?iByRDs$doI>zU#j21x#3!U(ZuiUN zf$~v}_=GpJSMkt+x;tC+!$lvST@b#{N9WPv%=il>>j4P8Y=HmJ;o|(wd$7ggTz!(G z{p39y|J3`t(i6SDMC}cZ(Y+v_GdrMQca*X7m)QLmI^`!c~Pr4E3}QNw}$p(-Si>DUeUDNt$~5T-VS`A zrmx|OOr^V6f)x$vxrpoYP;=XI-;joI>O2~|+6OTTEA^knJ|Z7gRfM)7$9KDLYaKhC zxHXf2s=Qk`r@XSDZ^%6`&ZD-P+-j%zSvZPrt{&8&;Z}$3#ds>pVY^6j6eBO!_?F-* zOQ*fx`Zk~@xw!3-(JUTWZs?6ELxIsW0GCo078ojJ&?X7SPJ6-!Gdm6X`0#g*cT4!7p^cmaL@`WZMjR9u^IiFb5$iSD#nIvKJ@U!FN%u;X4!W-2Mf5txYX zvY*r5iS>XSm{Q}bdVF(tq6QWo1S)i*>2a#T#rgKpk(K(Sgbp40Ei63C0>+m^#a$U( z9m(|y#1Zm|BSdOEyjDF;UZTEP3!cZX&qM69xkxKpe+e(B43V)acVig2fg@l`NdoTI zFAlV1doBIEe_M!7_9^72;zq8|IM)V2^Cd5OgLcCOky0!Dep(6guE@3BXu*I#X`FMq zOBzCv7$t=ka2L*JaK4mEGZP=T3WLJh-(q75vMiloLD19_B4UeGIysb?lV&S9W&znP zG;Bjqp`v|<`LdTp`ua+K3vo>9u8}oz!_(RD0fgr9<2f>0MKNwt5qp+iD7XZ4SG>J| z4RF4=^Ijfl<-?W~zZv@YP7v;!-?Z=$idEqk8Bbm6QjE~eRKsFx5S-aJ{>%hwXT5&S zW~8wJUlpB~;30@A${aV8={}qJ34p?uRU~vkJ9O8Ec?a<=Qc={Jgxk2Yu*`i{%7HI&@81iCDJ)h{AC7J z8YWAdC&QYneX;BY(xoq|JWpl(eR1+H%838SX@=dfxil|%sf97Sens`ihX*m8p}9OP z2;|2xE$Kq2e2ty&bYP*FW5VTm*ret+yUqqUU9;@*mv=pFA9ZW0#EEN%^3r@zPfg!V zKg`qf=i1_T?UxBhTMKYJ;!6s*&`(xKdrzWpGkRNf{S&+DzOBxeu@r3EU75Uv4bnbO z^tIp=zfe)dJnNjf+GpJ3>@5`Qv-&&mF%*u#tXCeCv&~aP^Q^g{7ZSS0v^fg6TKRb{ zN~=NjJT(exJAzMJ#<~H%&A)Q<4x3XqPh<~#55m8OXL!5Fez%YKBBxVL`TH7TF-u%x_ikzOT&$h{ra|AX_)KVprtQ<9^5 zZ3W0rRF|J^K7gzVl+xsE?15z<{B3v!hb5M~rNr@^PI>!M38_Mda6MW1D_XRFH?he% zI#NXD6yFizeN~qhH<);(3*JwKiR|aPDa-bnk}bZc#j^T>1Eb)8Xx!4&lhcFezA|rz zP)@43j{eU?1fIE9uBUCa>LB6!kAFTdj7s36SocnvTl3Hly0e5aGu^cM0EGL;K>ott?D71_ zNZDhiASD3mUqNrnaiBqf$RRfy5??#<4FFvnJpesZ{O!&YQ+ejT9f3)b(IM1GVD|t- z0e~xj#RcH0%wQ%1Wo=#Y{>=`}v<^Tx@d1cQ2Ot2MbX34m6#-r9s23eQXh%cE(R1)0 znh(@N$A?U--BTpB~m7?yRnqG`nhvI%9FIL^we8HwQ3e{AE_3;_d!(z8R`!V~DK zoRNhMYv&CQ`3sjce0xG=cg}k=TW+fCwm+(X%fTwkjUz77{o25|Zxx4gfU82C3}xE%eX3m&$GlL9Ib7oz-M+CVIn`sq zGyd6BoZ{tQf@xmtsaN3m&s7pIA5?<~VYXrOV0i~7aU4Npk08o-LrG8d)Z{B)hEGvV z`&?zKGeLS4y(B6f(-tnU1binJOVhn$rGY75>3t6X1eDo}eZ>6w?A|W7L2f=mS_fuY zF14WgTWkxLX|4-&$5WiSc%~IB;arW>*knlJkw?2$w~Zz#Ah7P~BXhmprWHlubZxgo z1QSqb0~uO;jX^2SOt*;cQ~uW{cf6!8xMVqIrpAQ#{)kk8W0E(7%yY>^IJ4{u*^d`V zfu1am8k}@~j=CYR-fFfJ@StnSL%?jDPpC7;V=hQYKbkjny*Yxsy!+i=jy|<#yvw?2 zuBys;)d4N z>zLK^Vb)vkdF!drs#i}Bt)=cmG`kQkJ-70%M!-4J=gH2qmutjP7Pq>}VT4^r32vU} z8mAZX`x%-<$|GN&`;J(n%w$xYdW?61!u*;CAAe(8zjHs>&MHgPqDd?j`NT{(O&o)C zHo2mQA=BasrsnB5GlfS;<9dZ}L9rVE(kH9TDbhRp!Lxj9)Y#XSlh--7!4&MUm{6hc z;*4P~RP*@qtafrSd?KP|d#Mcnmj6t{+mH!v$@>WW&$K2T6w3+3&dbW&x^0@C2Ybj2wuieW3t(um<5K3ROX5YO@@Bl=kyl znYAOJ_Q^lV?UR7N-^J`#uRqQDgHDXLGK1&jbJYAfPrfIYC*rs;c{GN(L-MaiJj@Et zHIYK(J+D#gs-(_UWdittnSgk0>sXF{viC}Z1dw&Ihgsxr;RFBHHtYK%q3}}@C!JE0 zUrU8v8XZCTk_1@{hj^5)j2Kg$;%nZNn5m?1ZLRaE69h-Z=yPufYS4t%B z!Ph!D*0^M>f2I8%0g?;s8-4&RX^E0&|52Q5qdgl zRxNh`@<8BM&EA`IrsMcN=T=o@BN42ltBOyJC&@rH=Oc`yHnEt3&Yg^J5PuI*TbjCF)>a4Q8N)9^OS9er zU0EJVJp$D4rwjGpUmD?zyl+{@HB>6WNE|P4w4oVYxQfp=kbfCAsPyFK6;s>UlD6BD zr%`CDYxGN*w~`#f*uGGlynpJ+FH#Y68s~gt*(o*Qtvi_BpS%j(mx4Yrk*a+x;;IUA zy^VLwYUTEXH7eHmgkwrPYCfIWcAY@WW(|j4b-4sreesz zass^>pVXoT`jyiypce-fSc7wKm_4N=of*iqlHu*fX6s<08+|&@-@n?q_yDhyugl80 zS7ZsDu2!vzw~~W>Dzg^a&P8I;_+e5!>M@WlZo6D|S`=>@X{eHbB*1FAu`O|04H}p@mPd=mg7+U@P?}gaiFaWX z)LG2qz%4&3$9`y#=A~okz;EPBW0uGQZoTl-K_{FseMy@|zlY?L=GKAUUVEH~#3HV~ z=JNPCg)LHfYIEmvx>J;_bU)A94kCWw?9*MGzZb)tmzKs$FY<7Vgn)M@a6aAwmOq#v zm52p`6Y)hf1@3x_&|PQcd8)Qo?ww=GzZ6ii^d)e}_ zH|f-!R62*VrKI}%*&-zMSYp#?<)F(i<9d2yhPqZ1(lQJ!;&1qjyP6fNa=bEmK1l1^ z5&xNvlw~NI!%Lpk=n1%r?O$ zf?OILj2+IXEibs(Vpn;n+CgjI2|wGRj~dxd2&jV0a_b2dH-Q zhU6(j(s7QQo%diy(s!6QznXR@d^Mi0FJa^`s_I1Np$Vr?Rt7dlykdLP*f`_cl%m?Z zj0u$5)7SEm>LZojIj(d)C{OzOi7g*Ky-m>50)2NX6K^gfUW7?T2ie$Qc6s3hUd*0_`U`#WBG&|Mbr-H&%U6g( zY=W+p08T?w?%K5$i93$&x!cvd^Y$1`dAEj7|JHc^n^cf8v;&V*g1y%BH8*cnMdeYg zhwGJ?c#=h zRr*hRSd6_H2Xneg$rGwzS0Uf$Q}+%)l5>D24If93NM*`sLv!}{zTGlw6_#VKXg}N7 z+4we__3Q;j;|F>6s}P?>X$9#;AW!63st(WP7mNp>I9IQ10Q8~aG;Fdhcs_ja+|SU& zNdT0GqeOPp$s4Y<6z)@pe>cTufN3U%y-*VJGD@j_MJ)^|ZbBa{BIibC;{R-|{Ez3& zPKDE5Rf-Gi{m}eMaY8NmHAiVhS;f;{sIWTpwdscdFY|!~|d4A*HiB%b-II^J#IJI3dx-o370sXk-`?y2bE28VR+JG=+qC!DCQKiK0Pt( z3VEIPaHRpLM{%GYlQ)9shCD}28LQ)5KmEY_Gx4`04WsAXXbp<6&RH1u>JI5^V{gV< zId=!u2=(+Ym}_Sf_q>7TO0MF^THrJ0)#lsLX(}R#N#}szK$@_`KYkB6}O7MR4p2mrmJ&oZ8 z52xXf&l6ymT<5O`pgv}JNjngDHO4haj@d_t78wr~N6$@>;y6$6d?yA3G1n5%O%fe& zmeQgNefQ;tRG1v@y|ArWX_z$FoC;Ohn4hQu4BL%<_6Hy%CvT!Ijg!bfec{zJdMBE( z!N{VD_giA;EzloKs@33$%kZ67n#pe>z#@OR#8U4lRj>fs=uq2C<=BmNnO3nMWQm3< z&f}aO9FE!d3wKc3Wu2^b_DT$7@%3BbiM=*;PfC?rD{1(!%Nk>FmH82eUB5U& zUG!C)_ZPYFriA62v>RZaoaEQSBIjO!-4zkLEG}&9De=SYt!J}T%I=grRjhupi8846 z%NIQWU2}!3681AoBORmq@f(W)0CH2UJ7wy+u*EQJVtfA9Q|C_X3SG;-Zf!r4?a~mI4DQ% z9HB{V*w(qe&5Cw(c=(G`KuT@WoMyi~Yx5vd85ObI%EQ=3SW@N~M9IQL{+dGRf6?62 zGKm+KRIi9(EiBHo+VZ93*e13JHpnhNkhxvNC=%?lFH#CnpJp=>&ztYG9mC13QV}ie z0C$gW#}Y@6hi!&sidr`xAEfYUkzQr-?I>HeoV%2HXC=0CtNvt8r9YdC=|6PdLH~aN Dj@AVs literal 0 HcmV?d00001 diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/images/EntryPageTwo.jpeg b/code/BasicFeature/ApplicationModels/SystemRouter/images/EntryPageTwo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..05b3e6613643f6cc538bdef5cde3bc32fcbd3439 GIT binary patch literal 54507 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 L{SS|!J{tNj(b=SI literal 0 HcmV?d00001 diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/images/HarAPageOne.jpeg b/code/BasicFeature/ApplicationModels/SystemRouter/images/HarAPageOne.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..499cd45c451e248647c19aeb88f0910f76f295f2 GIT binary patch literal 54202 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 literal 0 HcmV?d00001 diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/images/HspAPageOne.jpeg b/code/BasicFeature/ApplicationModels/SystemRouter/images/HspAPageOne.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..671eddeb01f4c9bc20da7651d9c1e23544aa3698 GIT binary patch literal 54326 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 literal 0 HcmV?d00001 diff --git a/code/BasicFeature/ApplicationModels/SystemRouter/images/NavIndex.jpeg b/code/BasicFeature/ApplicationModels/SystemRouter/images/NavIndex.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..1ef06b0dbf1418b86f9aa16b014bce873aa0d597 GIT binary patch literal 54996 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