diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000..51c63e29
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,15 @@
+*.tgz filter=lfs diff=lfs merge=lfs -text
+*.trp filter=lfs diff=lfs merge=lfs -text
+*.apk filter=lfs diff=lfs merge=lfs -text
+*.jar filter=lfs diff=lfs merge=lfs -text
+*.mp4 filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text
+*.asm filter=lfs diff=lfs merge=lfs -text
+*.8svn filter=lfs diff=lfs merge=lfs -text
+*.9svn filter=lfs diff=lfs merge=lfs -text
+*.dylib filter=lfs diff=lfs merge=lfs -text
+*.exe filter=lfs diff=lfs merge=lfs -text
+*.a filter=lfs diff=lfs merge=lfs -text
+*.so filter=lfs diff=lfs merge=lfs -text
+*.bin filter=lfs diff=lfs merge=lfs -text
+*.dll filter=lfs diff=lfs merge=lfs -text
diff --git a/LICENSE b/LICENSE
new file mode 100755
index 00000000..d0381d6d
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,176 @@
+Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
diff --git a/README.en.md b/README.en.md
deleted file mode 100644
index b9e366c7..00000000
--- a/README.en.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# applications_settings
-
-#### Description
-Settings system app | 系统设置应用
-
-#### Software Architecture
-Software architecture description
-
-#### Installation
-
-1. xxxx
-2. xxxx
-3. xxxx
-
-#### Instructions
-
-1. xxxx
-2. xxxx
-3. xxxx
-
-#### Contribution
-
-1. Fork the repository
-2. Create Feat_xxx branch
-3. Commit your code
-4. Create Pull Request
-
-
-#### Gitee Feature
-
-1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
-2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
-3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
-4. The most valuable open source project [GVP](https://gitee.com/gvp)
-5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
-6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
diff --git a/README.md b/README.md
old mode 100644
new mode 100755
index ba19ee3d..6273e14c
--- a/README.md
+++ b/README.md
@@ -1,37 +1,37 @@
-# applications_settings
+# Settings
-#### 介绍
-Settings system app | 系统设置应用
+- [Introduction](#section11660541593)
+ - [Architecture](#section48896451454)
-#### 软件架构
-软件架构说明
+- [Directory Structure](#section161941989596)
+- [Repositories Involved](#section1371113476307)
+## Introduction
-#### 安装教程
+Settings is a system app preinstalled in OpenHarmony to provide an interactive UI for users to set system attributes, such as the system time and screen brightness.
-1. xxxx
-2. xxxx
-3. xxxx
+### Architecture
-#### 使用说明
+![](figures/en-us_image_0000001153225717.png)
-1. xxxx
-2. xxxx
-3. xxxx
+## Directory Structure
-#### 参与贡献
+```
+/applications/standard/settings
+├── figures # Architecture figures
+├── entry # Main entry module code
+│ ├── src
+│ ├── main
+│ └── js # JavaScript code
+│ └── resources # Resources
+│ └── config.json # Global configuration files
+├── signature # Certificate files
+├── LICENSE # License files
+```
-1. Fork 本仓库
-2. 新建 Feat_xxx 分支
-3. 提交代码
-4. 新建 Pull Request
+## Repositories Involved
+System apps
-#### 特技
+**applications\_standard\_settings**
-1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
-2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
-3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
-4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
-5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
-6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
diff --git a/README_zh.md b/README_zh.md
new file mode 100755
index 00000000..c0a44700
--- /dev/null
+++ b/README_zh.md
@@ -0,0 +1,37 @@
+# Settings
+
+- [简介](#section11660541593)
+ - [架构图](#section48896451454)
+
+- [目录](#section161941989596)
+- [相关仓](#section1371113476307)
+
+## 简介
+
+设置应用是OpenHarmony系统中预置的系统应用,为用户提供设置系统属性的交互界面,例如设置系统时间,屏幕亮度等系统属性。
+
+### 架构图
+
+![](figures/zh-cn_image_0000001153225717.png)
+
+## 目录
+
+```
+/applications/standard/settings
+├── figures # 架构图目录
+├── entry # 主entry模块目录
+│ ├── src
+│ ├── main
+│ └── js # js代码目录
+│ └── resources # 资源存放目录
+│ └── config.json # 全局配置文件
+├── signature # 证书文件目录
+├── LICENSE # 许可文件
+```
+
+## 相关仓
+
+系统应用
+
+**applications\_standard\_settings**
+
diff --git a/build.gradle b/build.gradle
new file mode 100755
index 00000000..45ddcb88
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,42 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+apply plugin: 'com.huawei.ohos.app'
+
+ohos {
+ compileSdkVersion 6
+ defaultConfig {
+ compatibleSdkVersion 6
+ }
+}
+
+buildscript {
+ repositories {
+ maven {
+ url 'http://repo.ark.tools.huawei.com/artifactory/maven-public/'
+ }
+ maven {
+ url 'https://mirrors.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.huawei.ohos:hap:2.4.4.3-RC'
+ }
+}
+
+allprojects {
+ repositories {
+ maven {
+ url 'http://repo.ark.tools.huawei.com/artifactory/maven-public/'
+ }
+ maven {
+ url 'https://mirrors.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+ jcenter()
+ }
+}
diff --git a/entry/build.gradle b/entry/build.gradle
new file mode 100755
index 00000000..f02ee84e
--- /dev/null
+++ b/entry/build.gradle
@@ -0,0 +1,11 @@
+apply plugin: 'com.huawei.ohos.hap'
+ohos {
+ compileSdkVersion 6
+ defaultConfig {
+ compatibleSdkVersion 6
+ }
+ supportSystem "standard"
+}
+
+dependencies {
+}
diff --git a/entry/package.json b/entry/package.json
new file mode 100755
index 00000000..69a88e3b
--- /dev/null
+++ b/entry/package.json
@@ -0,0 +1 @@
+{}
diff --git a/entry/src/main/config.json b/entry/src/main/config.json
new file mode 100755
index 00000000..b781781a
--- /dev/null
+++ b/entry/src/main/config.json
@@ -0,0 +1,65 @@
+{
+ "app": {
+ "bundleName": "com.ohos.settings",
+ "vendor": "ohos",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 3,
+ "target": 3
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.ohos.settings",
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "name": "com.ohos.settings.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ }
+ ],
+ "js": [
+ {
+ "pages": [
+ "pages/settingList/settingList",
+ "pages/dateAndTime/dateAndTime",
+ "pages/brightness/brightnessSettings",
+ "pages/searchInfo/searchInfo",
+ "pages/appManagement/appManagement",
+ "pages/aboutDevice/aboutDevice",
+ "pages/applicationInfo/applicationInfo"
+ ],
+ "name": "default",
+ "window": {
+ "designWidth": 720,
+ "autoDesignWidth": true
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/js/default/app.js b/entry/src/main/js/default/app.js
new file mode 100755
index 00000000..35a2723f
--- /dev/null
+++ b/entry/src/main/js/default/app.js
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export default {
+ onCreate() {
+ console.info('AceApplication onCreate');
+ },
+ onDestroy() {
+ console.info('AceApplication onDestroy');
+ }
+};
+
diff --git a/entry/src/main/js/default/common/baseUtil/DateAndTimeUtil.js b/entry/src/main/js/default/common/baseUtil/DateAndTimeUtil.js
new file mode 100755
index 00000000..d8521d5b
--- /dev/null
+++ b/entry/src/main/js/default/common/baseUtil/DateAndTimeUtil.js
@@ -0,0 +1,150 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+const twelve = 12;
+/**
+ * date package tool class
+ */
+export default class DateAndTimeUtil{
+ constructor() {
+ console.log('DateAndTimeUtil constructor start globalThis.$globalT:'+globalThis.$globalT);
+ if (globalThis.$globalT) {
+ this.monday = globalThis.$globalT('strings.monday');
+ this.tuesday = globalThis.$globalT('strings.tuesday');
+ this.wednesday = globalThis.$globalT('strings.wednesday');
+ this.thursday = globalThis.$globalT('strings.thursday');
+ this.friday = globalThis.$globalT('strings.friday');
+ this.saturday = globalThis.$globalT('strings.saturday');
+ this.sunday = globalThis.$globalT('strings.sunday');
+ this.morning = globalThis.$globalT('strings.morning');
+ this.afternoon = globalThis.$globalT('strings.afternoon');
+ this.year = globalThis.$globalT('strings.year');
+ this.month = globalThis.$globalT('strings.month');
+ this.day = globalThis.$globalT('strings.day');
+ console.log('DateAndTimeUtil constructor this.monday:' + this.monday);
+ }
+ console.log('DateAndTimeUtil constructor end');
+ }
+ /**
+ *
+ * Get the current time
+ */
+ now() {
+ const datetime = new Date();
+ const hours = datetime.getHours();
+ const minutes = datetime.getMinutes();
+ return this.concatTime(hours, minutes);
+ };
+ /**
+ * format
+ * @param value
+ * @return
+ */
+ fill(value) {
+ return (value > 9 ? "" : "0") + value;
+ };
+ /**
+ * concat date
+ * @param year m d
+ * @return
+ */
+ concatDate(year, month, date) {
+ return year + this.year + month + this.month + date + this.day;
+ };
+
+ concatTime(hours, minutes) {
+ return `${this.fill(hours)}:${this.fill(minutes)}`;
+ };
+ /**
+ * Turn to 24-hour clock
+ * @param str
+ * @return
+ */
+ transform24(str) {
+ const timeFlag = str.substr(0, 2);
+ if (timeFlag == this.morning) {
+ const h = str.substr(2).split(":")[0];
+ if (h == twelve) {
+ const time = "0" + ":" + str.substr(2).split(":")[1];
+ return time;
+ } else {
+ return h + ":" + str.substr(2).split(":")[1];
+ }
+ } else {
+ const h = str.substr(2).split(":")[0];
+ const h1 = parseInt(h) + twelve;
+ if (h != twelve) {
+ const time = h1 + ":" + str.substr(2).split(":")[1];
+ return time;
+ }
+ }
+ };
+ /**
+ * Turn to 12-hour clock
+ * @param str
+ * @return
+ */
+ transform12(str) {
+ const hours = str.substring(0, str.indexOf(":"));
+ const minutes = str.split(":")[1];
+ if (hours < twelve) {
+ return this.morning.concat(`${hours}:${minutes}`);
+ }
+ if (hours == twelve) {
+ return this.afternoon.concat(`${hours}:${minutes}`);
+ } else {
+ const reduceHours = parseInt(hours) - twelve;
+ return this.afternoon.concat(`${reduceHours}:${minutes}`);
+ }
+ };
+ /**
+ * Calculate the week base on date
+ * @param y
+ * @param m
+ * @param d
+ * @return
+ */
+ convert(y, m, d) {
+ if (!globalThis.$globalT) {
+ return;
+ }
+ const week = (d + 2 * m + parseInt(3 * (m + 1) / 5) + y + parseInt(y / 4)
+ - parseInt(y / 100) + parseInt(y / 400)) % 7;
+ switch (week) {
+ case 0:
+ return this.monday;
+ break;
+ case 1:
+ return this.tuesday;
+ break;
+ case 2:
+ return this.wednesday;
+ break;
+ case 3:
+ return this.thursday;
+ break;
+ case 4:
+ return this.friday;
+ break;
+ case 5:
+ return this.saturday;
+ break;
+ case 6:
+ return this.sunday;
+ break;
+ default:
+ break;
+ }
+ };
+}
diff --git a/entry/src/main/js/default/common/baseUtil/LogUtil.js b/entry/src/main/js/default/common/baseUtil/LogUtil.js
new file mode 100755
index 00000000..a5bae8ed
--- /dev/null
+++ b/entry/src/main/js/default/common/baseUtil/LogUtil.js
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import BaseModel from '../../model/BaseModel.js';
+
+/**
+ * Log level
+ */
+var LOG_LEVEL = {
+ /**
+ * debug
+ */
+ DEBUG: 'debug',
+
+ /**
+ * log
+ */
+ LOG: 'log',
+
+ /**
+ * info
+ */
+ INFO: 'info',
+
+ /**
+ * warn
+ */
+ WARN: 'warn',
+
+ /**
+ * error
+ */
+ ERROR: 'error'
+};
+
+/**
+ * log package tool class
+ */
+export default class LogUtil extends BaseModel {
+ debug(msg) {
+ console.info(msg);
+ }
+
+ log(msg) {
+ console.log(msg);
+
+ }
+
+ info(msg) {
+ console.info(msg);
+ }
+
+ warn(msg) {
+ console.warn(msg);
+ }
+
+ error(msg) {
+ console.error(msg);
+ }
+}
diff --git a/entry/src/main/js/default/i18n/en-US.json b/entry/src/main/js/default/i18n/en-US.json
new file mode 100755
index 00000000..90c8c44c
--- /dev/null
+++ b/entry/src/main/js/default/i18n/en-US.json
@@ -0,0 +1,66 @@
+{
+ "strings": {
+ "enable": "ENABLE",
+ "enabled": "Enabled",
+ "disable": "DISABLE",
+ "disabled": "Disabled",
+ "restore": "RESTORE",
+ "on": "On",
+ "off": "Off",
+ "ok": "OK",
+ "setting": "Settings",
+ "search": "Search",
+ "buttonValue1Right": ">",
+ "buttonValue1Left": "<",
+ "buttonValue2Left": "⇦",
+ "more-wifi-settings": "More Wifi Settings",
+ "wifi-list": "Wifi-List which can be used",
+ "autoset": "Autoset",
+ "autoset-require": "date、time and time zone",
+ "date": "Date",
+ "time": "Time",
+ "time-zone": "Time Zone",
+ "cancel": "Cancel",
+ "confirm": "Confirm",
+ "brightnessMode": "brightnessMode",
+ "settings": "Settings",
+ "wifiTab": "wifiTab",
+ "brightnessTab": "brightnessTab",
+ "applyTab": "applyTab",
+ "dateAndTimeTab": "dateAndTimeTab",
+ "aboutTab": "aboutTab",
+ "applicationInfo": "App info",
+ "appManagement": "Apps",
+ "24Hour": "24 Hour",
+ "deviceId": "DeviceId",
+ "companyInfo": "CompanyInfo",
+ "hardwareVersion": "HardwareVersion",
+ "systemName": "SystemName",
+ "softwareVersion": "SoftwareVersion",
+ "adjust": "Automatic adjustment",
+ "model": "Model",
+ "brand": "Brand",
+ "manufacturer": "Manufacturer",
+ "wifi": "WIFI",
+ "version": "version",
+ "monday": "Monday",
+ "tuesday": "Tuesday",
+ "wednesday": "Wednesday",
+ "thursday": "Thursday",
+ "friday": "Friday",
+ "saturday": "Saturday",
+ "sunday": "Sunday",
+ "year": "year",
+ "month": "month",
+ "day": "date",
+ "morning": "morning",
+ "afternoon": "afternoon"
+ },
+ "png": {
+ "info": {
+ "back": "/res/image/ic_back.png"
+ },
+ "new": {
+ }
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/js/default/i18n/zh-CN.json b/entry/src/main/js/default/i18n/zh-CN.json
new file mode 100755
index 00000000..5df82801
--- /dev/null
+++ b/entry/src/main/js/default/i18n/zh-CN.json
@@ -0,0 +1,72 @@
+{
+ "strings": {
+ "enable": "开启",
+ "enabled": "已开启",
+ "disable": "关闭",
+ "disabled": "已关闭",
+ "restore": "还原",
+ "on": "开启",
+ "off": "关闭",
+ "ok": "确定",
+ "setting": "设置",
+ "search": "搜索",
+ "buttonValue1Right": ">",
+ "buttonValue1Left": "<",
+ "buttonValue2Left": "⇦",
+ "more-wifi-settings": "更多WIFI设置",
+ "tips-content": "为提高位置信息的精确度,应用和服务仍然会扫描WIFI网络.您可以在提高精确度中更改此设置",
+ "wifi-list": "可用WIFI列表",
+ "wifi-advanced-options": "显示高级选项",
+ "wifi-pass-details": "请至少输入8个字符",
+ "wifi-link": "连接",
+ "autoset": "自动设置",
+ "autoset-require": "日期、时间和时区",
+ "date": "日期",
+ "time": "时间",
+ "time-zone": "时区",
+ "location-service": "打开定位服务,自动定位所在时区",
+ "cancel": "取消",
+ "confirm": "确定",
+ "brightnessMode": "自动调节",
+ "settings": "设置",
+ "wifiTab": "WIFI",
+ "brightnessTab": "亮度",
+ "applyTab": "应用",
+ "dateAndTimeTab": "日期和时间",
+ "aboutTab": "关于手机",
+ "wifi-pass": "密码",
+ "displayMode": "显示模式",
+ "applicationInfo": "应用信息",
+ "appManagement": "应用管理",
+ "24Hour": "24小时制",
+ "deviceId": "设备ID",
+ "companyInfo": "厂家信息",
+ "hardwareVersion": "硬件版本",
+ "systemName": "系统名称",
+ "softwareVersion": "软件版本",
+ "model": "型号",
+ "brand": "品牌",
+ "manufacturer": "生产商",
+ "wifi": "WIFI",
+ "version": "版本 ",
+ "monday": "星期一",
+ "tuesday": "星期二",
+ "wednesday": "星期三",
+ "thursday": "星期四",
+ "friday": "星期五",
+ "saturday": "星期六",
+ "sunday": "星期日",
+ "year": "年",
+ "month": "月",
+ "day": "日",
+ "morning": "上午",
+ "afternoon": "下午"
+ },
+ "png": {
+ "info": {
+ "back": "/res/image/ic_back.png"
+ },
+ "new": {
+ }
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/js/default/model/BaseModel.js b/entry/src/main/js/default/model/BaseModel.js
new file mode 100755
index 00000000..e242bc00
--- /dev/null
+++ b/entry/src/main/js/default/model/BaseModel.js
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default class BaseModel {
+ constructor() {
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/js/default/model/aboutDeviceImpl/AboutDeviceModel.js b/entry/src/main/js/default/model/aboutDeviceImpl/AboutDeviceModel.js
new file mode 100755
index 00000000..5f3ad384
--- /dev/null
+++ b/entry/src/main/js/default/model/aboutDeviceImpl/AboutDeviceModel.js
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import BaseModel from '../BaseModel.js';
+import LogUtil from '../../common/baseUtil/LogUtil.js';
+import deviceInfo from '@ohos.deviceinfo';
+
+let logUtil = new LogUtil();
+/**
+ * about device service class
+ */
+export default class AboutDeviceModel extends BaseModel {
+ setOnAboutDeviceListener(callback) {
+ logUtil.info('settings aboutDevice get deviceInfo start:');
+ this.text = deviceInfo.productModel;
+ logUtil.info('settings aboutDevice get deviceInfo:' + JSON.stringify(deviceInfo));
+ callback(deviceInfo);
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/js/default/model/appManagementImpl/AppManagementModel.js b/entry/src/main/js/default/model/appManagementImpl/AppManagementModel.js
new file mode 100755
index 00000000..c64db0fa
--- /dev/null
+++ b/entry/src/main/js/default/model/appManagementImpl/AppManagementModel.js
@@ -0,0 +1,140 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import BaseModel from '../BaseModel.js';
+import bundle from '@ohos.bundle_mgr';
+import resmgr from '@ohos.resmgr';
+
+const index = 0;
+/**
+ * app management service class
+ *
+ */
+var mBundleInfoList = [];
+
+export default class AppManagementModel extends BaseModel {
+ setAppManagementListener(callback) {
+ console.info('setting appManagement init AppManagementModel setAppManagementListener start')
+ bundle.getApplicationInfos().then((data) => {
+ console.log('setting appManagement init AppManagementModel setAppManagementListener getApplicationInfos() data.length: ' + data.length);
+ for (var i = 0;i < data.length; i++) {
+ console.log('setting appManagement init AppManagementModel setAppManagementListener getApplicationInfos() data[i].iconId:' + data[i].bundleName + '|data[i].iconId:' + data[i].iconId + '|data[i].labelId:' + data[i].labelId);
+ }
+ var dataArray = data;
+ console.log('setting appManagement init AppManagementModel setAppManagementListener getApplicationInfos() dataArray' + JSON.stringify(dataArray));
+ this.getIcon(dataArray, callback);
+ });
+ console.info('setting appManagement init AppManagementModel setAppManagementListener end')
+ }
+
+ getIcon(data, callback) {
+ console.info('setting appManagement init AppManagementModel getIcon start')
+ this.getIconItem(index, data.length, data, callback);
+ console.info('setting appManagement init AppManagementModel getIcon end')
+ }
+
+ /**
+ * get app icon and item
+ * @param index
+ * @param count
+ * @param data
+ * @param callback
+ * @return
+ */
+ getIconItem(index, count, data, callback) {
+ console.info('setting appManagement init AppManagementModel getIconItem start data.length' + data.length)
+ let imageValue = '';
+ let label = '';
+ let that = this;
+ resmgr.getResourceManager(data[index].bundleName, (error, item) => {
+ console.info('setting appManagement init AppManagementModel getIconItem getResourceManager start item' + JSON.stringify(item))
+ if (data[index].labelId > 0) {
+ item.getString(data[index].labelId, (error, value) => {
+ console.info('setting appManagement init AppManagementModel getIconItem getResourceManager getString() value.length:' + value.length)
+ if (value != null) {
+ console.info('setting appManagement init AppManagementModel getIconItem getResourceManager getString() value:' + value)
+ label = value;
+ console.info('setting appManagement init AppManagementModel getIconItem getResourceManager getString() label:' + label)
+ } else {
+ console.info('setting appManagement init AppManagementModel getIconItem getResourceManager getString() error:' + error)
+ }
+ });
+ } else {
+ console.info('setting appManagement init AppManagementModel getIconItem getResourceManager getString() data[index].label:' + data[index].label)
+ label = data[index].label;
+ }
+ console.info('setting appManagement init AppManagementModel getIconItem getResourceManager getString() finish label:' + label)
+ item.getMediaBase64(data[index].iconId, (error, value) => {
+ console.info('setting appManagement init AppManagementModel getIconItem getResourceManager getMediaBase64() value.length:' + value.length)
+ if (value.length > 0) {
+ imageValue = value;
+ } else {
+ }
+ console.info('setting appManagement init AppManagementModel getIconItem getResourceManager getMediaBase64() end')
+ mBundleInfoList.push({
+ settingIcon: imageValue,
+ settingTitle: label,
+ settingValue: '',
+ settingArrow: '/res/image/ic_settings_arrow.png',
+ settingDefaultValue: false,
+ settingSummary: '',
+ dividerIsShow: true,
+ settingType: 1,
+ settingBundleName: data[index].bundleName,
+ item: data[index],
+ settingUri: 'pages/applicationInfo/applicationInfo'
+ })
+ if (count - 1 > index) {
+ setTimeout(function () {
+ console.info('setting appManagement init AppManagementModel getIconItem getResourceManager getMediaBase64() if index:' + index + '|count:' + count)
+ index = index + 1;
+ that.getIconItem(index, count, data, callback);
+ }, 100);
+ } else {
+ console.info('setting appManagement init AppManagementModel getIconItem getResourceManager getMediaBase64() else index:' + index + '|count:' + count)
+ that.getBundleInfo(0, mBundleInfoList.length, mBundleInfoList, callback);
+ }
+ });
+ });
+ console.info('setting appManagement init AppManagementModel getIconItem end')
+ }
+ /**
+ * getBundleInfo
+ * @param index
+ * @param count
+ * @param mBundleInfoList
+ * @param callback
+ * @return
+ */
+ getBundleInfo(index, count, mBundleInfoList, callback) {
+ let that = this
+ console.info('setting appManagement init AppManagementModel getBundleInfo start mBundleInfoList :' + mBundleInfoList.length+mBundleInfoList[index].settingBundleName)
+ bundle.getBundleInfo(mBundleInfoList[index].settingBundleName).then(data => {
+ console.info("setting appManagement init AppManagementModel getBundleInfo versionCode:" + data.versionCode + "|versionName:" + data.versionName);
+ mBundleInfoList[index].settingSummary = data.versionName;
+ console.info("setting appManagement init AppManagementModel getBundleInfo mBundleInfoList[index].settingSummary:" + mBundleInfoList[index].settingSummary);
+ if (count - 1 > index) {
+ setTimeout(function () {
+ console.info('setting appManagement init AppManagementModel getIconItem getBundleInfo if index:' + index + '|count:' + count)
+ index = index + 1;
+ that.getBundleInfo(index, count, mBundleInfoList, callback);
+ }, 100);
+ } else {
+ console.info('setting appManagement init AppManagementModel getIconItem getBundleInfo callback else index:' + index + '|count:' + count)
+ callback(mBundleInfoList);
+ }
+ });
+ console.info('setting appManagement init AppManagementModel getBundleInfo end' )
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/js/default/model/baseParseConfImpl/BaseParseConfModel.js b/entry/src/main/js/default/model/baseParseConfImpl/BaseParseConfModel.js
new file mode 100755
index 00000000..ae96570c
--- /dev/null
+++ b/entry/src/main/js/default/model/baseParseConfImpl/BaseParseConfModel.js
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import BaseModel from '../BaseModel.js';
+import fileio from '@ohos.fileio';
+
+export default class BaseParseConfModel extends BaseModel {
+ getJsonData(fileName) {
+ console.info('settings dateAndTime BaseParseConfModel getJsonData start')
+ try {
+ console.info('settings dateAndTime BaseParseConfModel getJsonDat start try');
+ var ss = fileio.Stream.createStreamSync(fileName, "r")
+ var buf = new ArrayBuffer(4096)
+ var len = ss.readSync(buf)
+ console.info('settings dateAndTime BaseParseConfModel getJsonData len' + JSON.stringify(len) + len);
+ var content = String.fromCharCode.apply(null, new Uint8Array(buf));
+ console.info('settings dateAndTime BaseParseConfModel getJsonData content:' + content);
+ ss.closeSync();
+ return JSON.parse(content);
+ } catch (e) {
+ console.info("settings dateAndTime BaseParseConfModel getJsonData catch e:" + e);
+ }
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/js/default/model/brightnessImpl/BrightnessSettingModel.js b/entry/src/main/js/default/model/brightnessImpl/BrightnessSettingModel.js
new file mode 100755
index 00000000..2f9ac8cb
--- /dev/null
+++ b/entry/src/main/js/default/model/brightnessImpl/BrightnessSettingModel.js
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import BaseModel from '../BaseModel.js';
+import brightness from '@ohos.brightness';
+import storage from '@ohos.data.storage';
+import LogUtil from '../../common/baseUtil/LogUtil.js';
+
+const PREFERENCES_PATH = '/data/accounts/account_0/appdata/com.ohos.settings/sharedPreference/SettingPreferences';
+var brightnessPreferences = storage.getStorageSync(PREFERENCES_PATH);
+let logUtil = new LogUtil();
+const BRIGHTNESS_SAVE_VALUE = 'BrightnessSaveValue';
+/**
+ * brightness service class
+ */
+export default class BrightnessSettingModel extends BaseModel {
+ setBrightnessListener(brightnessValue) {
+ logUtil.log('setting setBrightnessListener BrightnessSettingModel start');
+ brightness.setValue(brightnessValue);
+ logUtil.log('setting setBrightnessListener BrightnessSettingModel end');
+ }
+
+ setStorageValue(brightnessValue) {
+ logUtil.log('setting setBrightnessListener setStorageListener start brightnessValue' + brightnessValue);
+ brightnessPreferences.putSync(BRIGHTNESS_SAVE_VALUE, brightnessValue);
+ brightnessPreferences.flushSync();
+ logUtil.log('setting setBrightnessListener setStorageListener end');
+ }
+
+ getStorageValue() {
+ logUtil.log('setting setBrightnessListener getStorageValue start');
+ return brightnessPreferences.getSync(BRIGHTNESS_SAVE_VALUE, 0);
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/js/default/model/settingListImpl/SettingListModel.js b/entry/src/main/js/default/model/settingListImpl/SettingListModel.js
new file mode 100755
index 00000000..d1ba687d
--- /dev/null
+++ b/entry/src/main/js/default/model/settingListImpl/SettingListModel.js
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import BaseModel from '../BaseModel.js';
+import BaseParseConfModel from '../baseParseConfImpl/BaseParseConfModel.js';
+import LogUtil from '../../common/baseUtil/LogUtil.js';
+
+/**
+ * app setting homepage service class
+ */
+let baseParseConfModel = new BaseParseConfModel();
+let logUtil = new LogUtil();
+var settingList;
+
+export default class SettingListModel extends BaseModel {
+ setSettingListener(callback) {
+ settingList = baseParseConfModel.getJsonData('/data/accounts/account_0/applications/com.ohos.settings/com.ohos.settings/assets/entry/resources/rawfile/settinglist.json');
+ logUtil.info('settings settingList get by json:' + JSON.stringify(settingList));
+ callback(settingList);
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/js/default/pages/aboutDevice/aboutDevice.css b/entry/src/main/js/default/pages/aboutDevice/aboutDevice.css
new file mode 100755
index 00000000..3e8fba0e
--- /dev/null
+++ b/entry/src/main/js/default/pages/aboutDevice/aboutDevice.css
@@ -0,0 +1,20 @@
+/*
+* Copyright (c) 2021 Huawei Device Co., Ltd.
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+.container {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ height: 100%;
+}
diff --git a/entry/src/main/js/default/pages/aboutDevice/aboutDevice.hml b/entry/src/main/js/default/pages/aboutDevice/aboutDevice.hml
new file mode 100755
index 00000000..049d38ff
--- /dev/null
+++ b/entry/src/main/js/default/pages/aboutDevice/aboutDevice.hml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/entry/src/main/js/default/pages/aboutDevice/aboutDevice.js b/entry/src/main/js/default/pages/aboutDevice/aboutDevice.js
new file mode 100755
index 00000000..777388ab
--- /dev/null
+++ b/entry/src/main/js/default/pages/aboutDevice/aboutDevice.js
@@ -0,0 +1,82 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import router from '@system.router';
+import AboutDeviceModel from '../../model/aboutDeviceImpl/AboutDeviceModel.js';
+import BaseParseConfModel from '../../model/baseParseConfImpl/BaseParseConfModel.js';
+import LogUtil from '../../common/baseUtil/LogUtil.js';
+
+let mAboutDeviceModel = new AboutDeviceModel();
+let baseParseConfModel = new BaseParseConfModel();
+let logUtil = new LogUtil();
+
+export default {
+ data: {
+ aboutDeviceList: [],
+ text: ''
+ },
+ onInit() {
+ logUtil.info('aboutDevice onInit start:')
+ this.aboutDeviceList = baseParseConfModel.getJsonData('/data/accounts/account_0/applications/com.ohos.settings/com.ohos.settings/assets/entry/resources/rawfile/aboutDevice.json');
+ logUtil.info('settings aboutDevice get aboutDeviceList by json:' + JSON.stringify(this.aboutDeviceList))
+ for (let key in this.aboutDeviceList) {
+ var settingAlias = this.aboutDeviceList[key].settingAlias
+ this.aboutDeviceList[key].settingTitle = this.$t('strings.'.concat(settingAlias))
+ }
+ mAboutDeviceModel.setOnAboutDeviceListener(this.aboutDevice);
+ logUtil.info('aboutDevice onInit end:')
+ },
+ aboutDevice(data) {
+ logUtil.info('aboutDeviceList start:' + JSON.stringify(data))
+ for (let key in this.aboutDeviceList) {
+ let value = this.aboutDeviceList[key]
+ if ('model' == value.settingAlias) {
+ value.settingValue = data.productModel;
+ }
+ if ('companyInfo' == value.settingAlias) {
+ value.settingValue = data.manufacture;
+ }
+ if ('deviceId' == value.settingAlias) {
+ value.settingValue = data.serial;
+ }
+ if ('softwareVersion' == value.settingAlias) {
+ value.settingValue = data.displayVersion;
+ }
+ }
+ },
+ aboutDeviceBack() {
+ logUtil.info('settings aboutDevice back start:')
+ router.back();
+ logUtil.info('settings aboutDevice back end:')
+ },
+ onBackPress() {
+ logUtil.info('settings aboutDevice onBackPress:')
+ router.back();
+ },
+ onCreate() {
+ logUtil.info('setting aboutDevice onCreate')
+ },
+ onReady() {
+ logUtil.info('setting aboutDevice onReady')
+ },
+ onShow() {
+ logUtil.info('setting aboutDevice onShow')
+ },
+ onHide() {
+ logUtil.info('setting aboutDevice onHide')
+ },
+ onDestroy() {
+ logUtil.info('setting aboutDevice onDestroy')
+ }
+}
diff --git a/entry/src/main/js/default/pages/appManagement/appManagement.css b/entry/src/main/js/default/pages/appManagement/appManagement.css
new file mode 100755
index 00000000..38226012
--- /dev/null
+++ b/entry/src/main/js/default/pages/appManagement/appManagement.css
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2021 Huawei Device Co., Ltd.
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+.container {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ height: 100%;
+}
+
+.search {
+ width: 100%;
+ height: 70px;
+ align-items: center;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+
+
+
diff --git a/entry/src/main/js/default/pages/appManagement/appManagement.hml b/entry/src/main/js/default/pages/appManagement/appManagement.hml
new file mode 100755
index 00000000..278566f9
--- /dev/null
+++ b/entry/src/main/js/default/pages/appManagement/appManagement.hml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/entry/src/main/js/default/pages/appManagement/appManagement.js b/entry/src/main/js/default/pages/appManagement/appManagement.js
new file mode 100755
index 00000000..df4d322b
--- /dev/null
+++ b/entry/src/main/js/default/pages/appManagement/appManagement.js
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import AppManagementModel from '../../model/appManagementImpl/AppManagementModel.js';
+import LogUtil from '../../common/baseUtil/LogUtil.js';
+import router from '@system.router';
+
+const DATA_PAGE_SOURCE_APP_PAGE = 'appPage';
+let appManagementModel = new AppManagementModel();
+let logUtil = new LogUtil();
+
+export default {
+ data: {
+ appList: [],
+ },
+ onInit() {
+ logUtil.info('setting appManagement init start:')
+ appManagementModel.setAppManagementListener(this.appListData)
+ logUtil.info('setting appManagement init end:')
+ },
+ appListData(appListData) {
+ if (null == appListData) {
+ logUtil.info('setting appManagement appListData is null')
+ return;
+ }
+ logUtil.info('setting appManagement appListData start:' + JSON.stringify(appListData.length))
+ for(var i=0;i
+
+
+
+
+
+
+
+ {{ label }}
+ {{ settingSummary }}
+
+
+
diff --git a/entry/src/main/js/default/pages/applicationInfo/applicationInfo.js b/entry/src/main/js/default/pages/applicationInfo/applicationInfo.js
new file mode 100755
index 00000000..b20cbd4b
--- /dev/null
+++ b/entry/src/main/js/default/pages/applicationInfo/applicationInfo.js
@@ -0,0 +1,128 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import router from '@system.router';
+import LogUtil from '../../common/baseUtil/LogUtil.js';
+import resmgr from '@ohos.resmgr';
+
+let logUtil = new LogUtil();
+
+export default {
+ data: {
+ appInfo: {},
+ bundleName: '',
+ icon: '',
+ label: '',
+ settingSummary: ''
+ },
+ onInit() {
+ logUtil.info('setting applicationInfo onInit start:');
+ this.appInfo = this.dataParam;
+ logUtil.info('setting applicationInfo onInit appInfo:' + JSON.stringify(this.appInfo))
+ this.bundleName = this.appInfo.item.bundleName;
+ this.settingSummary = this.appInfo.settingSummary;
+ this.getMediaResources(this.bundleName, this.appInfo.item.iconId);
+ this.getStringResources(this.bundleName, this.appInfo.item.labelId);
+ logUtil.info('setting applicationInfo onInit end:');
+ },
+
+ /**
+ * get app icon media by iconId
+ * @param bundleName
+ * @param iconId
+ * @return
+ */
+ getMediaResources(bundleName, iconId) {
+ logUtil.info('setting applicationInfo getMediaResources start bundleName labelId' + bundleName + '|' + iconId)
+ let that = this;
+ try {
+ resmgr.getResourceManager(bundleName).then(data => {
+ logUtil.info('setting applicationInfo getMediaResources getResourceManager start data:' + JSON.stringify(data))
+ data.getMediaBase64(iconId, (error, value) => {
+ logUtil.info('setting applicationInfo getMediaResources getResourceManager getMediaBase64 value:' + value)
+ if (value != null) {
+ logUtil.info('setting applicationInfo getMediaResources getResourceManager getMediaBase64 if 1 value :' + value)
+ that.icon = value;
+ logUtil.info('setting applicationInfo getMediaResources getResourceManager getMediaBase64 if 2 that.icon :' + that.icon)
+ } else {
+ logUtil.info('setting applicationInfo getMediaResources getResourceManager getMediaBase64 else error:' + error)
+ }
+ });
+ logUtil.info('setting applicationInfo getMediaResources getResourceManager end')
+ });
+ } catch (err) {
+ logUtil.info('setting applicationInfo getStringResources getMediaBase64 else error:' + err)
+ }
+ logUtil.info('setting applicationInfo getStringResources end')
+ },
+
+ /**
+ * get app label info by labelId
+ * @param bundleName
+ * @param labelId
+ * @return
+ */
+ getStringResources(bundleName, labelId) {
+ logUtil.info('setting applicationInfo getStringResources start bundleName labelId' + bundleName + '---' + labelId)
+ let that = this;
+ try {
+ resmgr.getResourceManager(bundleName).then(data => {
+ logUtil.info('setting applicationInfo getStringResources start data:' + data)
+ if (labelId > 0) {
+ data.getString(labelId, (error, value) => {
+ logUtil.info('setting applicationInfo getStringResources getString value:' + value)
+ if (value != null) {
+ logUtil.info('setting applicationInfo getStringResources getString if value:' + value)
+ that.label = value;
+ logUtil.info('setting applicationInfo getStringResources getString if that.label:' + that.label)
+ } else {
+ logUtil.info('setting applicationInfo getStringResources getString else error:' + error)
+ }
+ });
+ } else {
+ logUtil.info('setting applicationInfo getStringResources getString else this.appInfo.item.label:' + this.appInfo.item.label)
+ that.label = this.appInfo.item.label;
+ }
+ });
+ } catch (err) {
+ logUtil.info('setting applicationInfo getStringResources catch err:' + err)
+ }
+ logUtil.info('setting applicationInfo getStringResources end')
+ },
+ appInfoBack() {
+ logUtil.info('setting applicationInfo appInfoBack start')
+ router.back();
+ logUtil.info('setting applicationInfo appInfoBack end')
+ },
+ onBackPress() {
+ logUtil.info('setting applicationInfo onBackPress start')
+ router.back();
+ logUtil.info('setting applicationInfo onBackPress end')
+ },
+ onCreate() {
+ logUtil.info('setting applicationInfo onCreate')
+ },
+ onReady() {
+ logUtil.info('setting applicationInfo onReady')
+ },
+ onShow() {
+ logUtil.info('setting applicationInfo onShow')
+ },
+ onHide() {
+ logUtil.info('setting applicationInfo onHide')
+ },
+ onDestroy() {
+ logUtil.info('setting applicationInfo onDestroy')
+ }
+}
diff --git a/entry/src/main/js/default/pages/brightness/brightnessSettings.css b/entry/src/main/js/default/pages/brightness/brightnessSettings.css
new file mode 100755
index 00000000..b252b805
--- /dev/null
+++ b/entry/src/main/js/default/pages/brightness/brightnessSettings.css
@@ -0,0 +1,51 @@
+/*
+* Copyright (c) 2021 Huawei Device Co., Ltd.
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+.container {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ height: 100%;
+ background-color: white;
+}
+
+.container-first {
+ width: 100%;
+ flex-direction: row;
+ align-items: center;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+
+.bright-slider {
+ color: gray;
+ selected-color: cornflowerblue;
+ block-color: cornflowerblue;
+ padding-left: 10px;
+ padding-right: 10px;
+}
+
+.bright-image {
+ width: 40px;
+ height: 40px;
+}
+
+.bright-image-after {
+ width: 60px;
+ height: 60px;
+}
+
+
diff --git a/entry/src/main/js/default/pages/brightness/brightnessSettings.hml b/entry/src/main/js/default/pages/brightness/brightnessSettings.hml
new file mode 100755
index 00000000..3f40bbf5
--- /dev/null
+++ b/entry/src/main/js/default/pages/brightness/brightnessSettings.hml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/entry/src/main/js/default/pages/brightness/brightnessSettings.js b/entry/src/main/js/default/pages/brightness/brightnessSettings.js
new file mode 100755
index 00000000..6f18f621
--- /dev/null
+++ b/entry/src/main/js/default/pages/brightness/brightnessSettings.js
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import router from '@system.router';
+import BrightnessSettingModel from '../../model/brightnessImpl/BrightnessSettingModel.js';
+import BaseParseConfModel from '../../model/baseParseConfImpl/BaseParseConfModel.js';
+import LogUtil from '../../common/baseUtil/LogUtil.js';
+
+let brightnessSettingModel = new BrightnessSettingModel();
+let baseParseConfModel = new BaseParseConfModel();
+let logUtil = new LogUtil();
+
+export default {
+ data: {
+ bright: null,
+ settingSwitchValue: false,
+ switchModeValue: 0,
+ before: '/res/image/ic_settings_brightness_minimum.png',
+ after: '/res/image/ic_settings_brightness_maximum.png',
+ brightnessSettingOb: {},
+ brightnessSettingList: []
+ },
+ onInit() {
+ logUtil.info('setting brightnessSettings onInit start')
+ this.bright = brightnessSettingModel.getStorageValue();
+ logUtil.info('setting brightnessSettings onInit start this.bright:' + this.bright)
+ /**
+ * Get the current screen brightness value of the device
+ */
+ this.brightnessSettingList = baseParseConfModel.getJsonData('/data/accounts/account_0/applications/com.ohos.settings/com.ohos.settings/assets/entry/resources/rawfile/brightness.json');
+ for (let key in this.brightnessSettingList) {
+ var settingAlias = this.brightnessSettingList[key].settingAlias
+ this.brightnessSettingList[key].settingTitle = this.$t('strings.'.concat(settingAlias))
+ }
+ logUtil.info('setting brightnessSettings onInit end')
+ },
+
+ /**
+ * Acquisition mode
+ * @param data
+ * @return
+ */
+ getMode(data) {
+ logUtil.info('setting brightnessSettings getMode start:' + JSON.stringify(data) + JSON.stringify(this.brightnessSettingList));
+ for (let key in this.brightnessSettingList) {
+ let value = this.brightnessSettingList[key]
+ /**
+ * The value adjustment of the screen brightness mode is 0 or 1
+ * 0: manual 1:automatic
+ */
+ value.settingSwitchValue = data[value.settingAlias] == 0 ? false : true;
+ value.switchModeValue = data[value.settingAlias];
+ }
+ logUtil.info('setting brightnessSettings getMode end:' + JSON.stringify(this.brightnessSettingList));
+ },
+
+ /**
+ * Get the current screen brightness value of the device
+ * @param data
+ * @return
+ */
+ getBrightnessValue(brightValue) {
+ logUtil.info('setting brightnessSettings getBrightnessValue start brightValue:' + brightValue);
+ this.bright = brightValue;
+ logUtil.info('setting brightnessSettings getBrightnessValue end')
+ },
+
+ /**
+ * Brightness setting
+ */
+ getValue: function (name, data) {
+ logUtil.info('setting brightnessSettings getValue start');
+ this.bright = data.value;
+ brightnessSettingModel.setBrightnessListener(this.bright);
+ brightnessSettingModel.setStorageValue(this.bright);
+ logUtil.info('setting brightnessSettings getValue end this.bright:' + this.bright);
+ },
+ /**
+ * Set the current screen brightness value of the device
+ * @param e
+ * @return
+ */
+ clickBrightnessSet(brightnessValue) {
+ logUtil.info('setting brightnessSettings clickBrightnessSet start brightnessValue:' + brightnessValue)
+ brightnessSettingModel.setBrightnessListener(brightnessValue);
+ brightnessSettingModel.setStorageValue(brightnessValue);
+ logUtil.info('setting brightnessSettings clickBrightnessSet end')
+ },
+ /**
+ * Brightness mode setting
+ */
+ switchTouch() {
+ logUtil.info('setting brightnessSettings switchTouch start')
+ for (let key in this.brightnessSettingList) {
+ logUtil.info('setting brightnessSettings switchTouch this.settingSwitchValue:' + this.brightnessSettingList[key].settingSwitchValue);
+ if (this.brightnessSettingList[key].settingSwitchValue == false) {
+ this.brightnessSettingList[key].settingSwitchValue = true;
+ this.brightnessSettingList[key].switchModeValue = 1;
+ this.clickSetMode(this.brightnessSettingList[key].switchModeValue)
+ logUtil.info('setting brightnessSettings switchTouch settingSwitchValue true:' + this.brightnessSettingList[key].settingSwitchValue + " | switchModeValue | " + this.brightnessSettingList[key].switchModeValue);
+ } else {
+ this.brightnessSettingList[key].settingSwitchValue = false;
+ this.brightnessSettingList[key].switchModeValue = 0;
+ this.clickSetMode(this.brightnessSettingList[key].switchModeValue)
+ logUtil.info('setting brightnessSettings switchTouch settingSwitchValue false:' + this.brightnessSettingList[key].settingSwitchValue + " | switchModeValue | " + this.brightnessSettingList[key].switchModeValue);
+ }
+ }
+ logUtil.info('setting brightnessSettings onBackPress end')
+ },
+ /**
+ * Set the current screen brightness mode of the device.
+ * @param e
+ * @return
+ */
+ clickSetMode(e) {
+ logUtil.info('setting brightnessSettings switchTouch start clickSetMode:' + e);
+ },
+ back() {
+ logUtil.info('setting brightnessSettings back start')
+ router.back();
+ logUtil.info('setting brightnessSettings back end')
+ },
+ onBackPress() {
+ logUtil.info('setting brightnessSettings onBackPress start')
+ router.back();
+ logUtil.info('setting brightnessSettings onBackPress end')
+ },
+ onCreate() {
+ logUtil.info('setting brightnessSettings onCreate')
+ },
+ onReady() {
+ logUtil.info('setting brightnessSettings onReady')
+ },
+ onShow() {
+ logUtil.info('setting brightnessSettings onShow')
+ },
+ onHide() {
+ logUtil.info('setting brightnessSettings onHide')
+ },
+ onDestroy() {
+ logUtil.info('setting brightnessSettings onDestroy')
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/js/default/pages/component/entryComponent/entryComponent.css b/entry/src/main/js/default/pages/component/entryComponent/entryComponent.css
new file mode 100755
index 00000000..6ee8b128
--- /dev/null
+++ b/entry/src/main/js/default/pages/component/entryComponent/entryComponent.css
@@ -0,0 +1,115 @@
+/*
+* Copyright (c) 2021 Huawei Device Co., Ltd.
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+.item {
+ width: 100%;
+ height: 70px;
+ flex-direction: column;
+ align-items: center;
+ background-color: #fdfdfd;
+}
+
+.preference {
+ width: 100%;
+ height: 70px;
+ flex-direction: row;
+ align-items: center;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+
+.text-style-summary {
+ weights: 1;
+ font-size: 18px;
+ color: #999999;
+ align-items: center;
+}
+
+.title-text-style {
+ weights: 1;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+}
+
+.title-style {
+ font-family: Courier;
+ font-size: 22px;
+ color: #333333;
+}
+
+.preference-title {
+ width: 60%;
+ flex-direction: column;
+ weights: 1;
+ justify-content: center;
+}
+
+.head-image-pin {
+ width: 43px;
+ height: 38px;
+ justify-content: center;
+ margin-right: 15px;
+ align-items: center;
+}
+
+.div_head-image{
+ height: 70px;
+ justify-content: center;
+ align-items: center;
+}
+
+.head-image {
+ width: 45px;
+ height: 45px;
+ justify-content: center;
+ align-items: center;
+}
+
+.switch-on-off{
+ width: 85px;
+ height: 70px;
+ justify-content: center;
+ align-items: center;
+}
+
+.div-line{
+ width: 100%;
+ height: 1px;
+ background-color: #E3E3E3;
+ flex-shrink:0;
+}
+
+.text-container-style-right {
+ color: #666666;
+ width: 40%;
+ justify-content: flex-end;
+ align-items: center;
+}
+
+.text-style-right {
+ font-size: 18px;
+ color: #666666;
+}
+
+.preference-title-width100{
+ width:100%;
+ flex-direction: column;
+ weights: 1;
+ justify-content: center;
+}
+
+.text-container-style-right-width0{
+ width:0%;
+}
diff --git a/entry/src/main/js/default/pages/component/entryComponent/entryComponent.hml b/entry/src/main/js/default/pages/component/entryComponent/entryComponent.hml
new file mode 100755
index 00000000..d9406939
--- /dev/null
+++ b/entry/src/main/js/default/pages/component/entryComponent/entryComponent.hml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+ {{title}}
+
+
+
+ {{summary}}
+
+
+
+ {{modelStateDescribe}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/entry/src/main/js/default/pages/component/entryComponent/entryComponent.js b/entry/src/main/js/default/pages/component/entryComponent/entryComponent.js
new file mode 100755
index 00000000..6b754365
--- /dev/null
+++ b/entry/src/main/js/default/pages/component/entryComponent/entryComponent.js
@@ -0,0 +1,165 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import LogUtil from '../../../common/baseUtil/LogUtil.js';
+let logUtil = new LogUtil();
+
+export default {
+ props: {
+ /**
+ * Whether a single model is displayed or hidden
+ */
+ itemIsShow: {
+ default: true,
+ },
+ /**
+ * String value representing the Preference title
+ */
+ title: {
+ default: '',
+ },
+ /**
+ * String value representing the Preference summary
+ */
+ summary: {
+ default: ''
+ },
+ /**
+ * Drawable representing the Preference icon
+ */
+ icon: {
+ default: ''
+ },
+ /**
+ * Boolean indicating whether the user can interact with Preference
+ * false:Preference will be grayed out and users cannot interact with it.
+ * The default value is true
+ */
+ enabled: {
+ default: true
+ },
+ /**
+ * A boolean indicating whether the user can interact with the Preference.
+ * The default value is true.
+ */
+ selectable: {
+ default: true
+ },
+ /**
+ * Whether the icon is displayed
+ * The default value is false.
+ */
+ iconShow: {
+ default: false
+ },
+ /**
+ * whether the Preference category or Preference category is visible
+ * Does summary show or hide
+ */
+ isSummaryShow: {
+ default: true
+ },
+ /**
+ * Whether the text status is displayed
+ * The default value is false
+ */
+ stateDescriptionShow: {
+ default: false
+ },
+ /**
+ * State description of a single model item
+ */
+ modelStateDescribe: {
+ default: ''
+ },
+ /**
+ * Entry item
+ * Whether the icon at the end of a single model item is displayed
+ * The default value is true
+ */
+ entranceToItemShow: {
+ default: true
+ },
+ /**
+ * The icon at the end of a single model item
+ */
+ entranceToItemIcon: {
+ default: '/res/image/ic_settings_arrow.png'
+ },
+ /**
+ * Whether to display the switch item
+ * The default value is false
+ */
+ switchesIsShow: {
+ default: false
+ },
+ /**
+ * switch item value
+ * The default value is false
+ */
+ switchDefaultValue: {
+ default: false
+ },
+ /**
+ * item
+ */
+ item: {},
+ /**
+ * Switch item
+ * monitor the changed value
+ */
+ switchOnChangeValue:{},
+ showObject: {},
+ /**
+ * Icon behind title
+ */
+ headIcon: {
+ default: '/res/image/head_icon.png'
+ },
+ isHeadIconShow: {
+ default: false
+ },
+ dividerShow:{
+ default: true
+ }
+ },
+ data() {
+ return {
+ showObj: this.showObject,
+ itemData: this.item,
+ switchDefaultValue:this.switchDefaultValue,
+ switchOnChangeValue: this.switchOnChangeValue,
+ };
+ },
+ action() {
+ logUtil.info("setting entryComponent action start this.itemData"+JSON.stringify( this.itemData));
+ this.$emit('actionType',{
+ text: this.itemData,
+ });
+ logUtil.info("setting entryComponent action end");
+ },
+ /**
+ * The onchange event of the switch item
+ */
+ switchOnChange() {
+
+ logUtil.info("setting entryComponent switchOnChange start switchChangeValue this.switchOnChangeValue:"+this.switchOnChangeValue+"--this.switchDefaultValue--"+this.switchDefaultValue);
+ this.$emit('switchOnChangeType',{
+ text: !this.switchOnChangeValue,
+ defaultText: this.switchDefaultValue,
+ detail: this.itemData,
+ });
+ logUtil.info("setting entryComponent switchOnChange end");
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/js/default/pages/component/headComponent/headComponent.css b/entry/src/main/js/default/pages/component/headComponent/headComponent.css
new file mode 100755
index 00000000..44018824
--- /dev/null
+++ b/entry/src/main/js/default/pages/component/headComponent/headComponent.css
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2021 Huawei Device Co., Ltd.
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+.app-bar-info {
+ width: 100%;
+ height: 70px;
+ flex-direction: row;
+ align-items: center;
+ padding-right: 20px;
+}
+
+.app-bar-div {
+ width: 70px;
+ height: 70px;
+ align-items: center;
+ justify-content: flex-start;
+
+}
+
+.app-bar-image-change-background {
+ border-left: 15px solid transparent;
+ border-right: 15px solid transparent;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ width: 70px;
+ height: 50px;
+ background-color: lightgray;
+}
+
+.app-bar-image {
+ border-left: 15px solid transparent;
+ border-right: 15px solid transparent;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ width: 70px;
+ height: 50px;
+}
+
+.app-bar-text {
+ font-size: 24px;
+ font-weight: bold;
+ padding-right: 15px;
+}
\ No newline at end of file
diff --git a/entry/src/main/js/default/pages/component/headComponent/headComponent.hml b/entry/src/main/js/default/pages/component/headComponent/headComponent.hml
new file mode 100755
index 00000000..cdbcc1a2
--- /dev/null
+++ b/entry/src/main/js/default/pages/component/headComponent/headComponent.hml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+ {{titleName}}
+
+
diff --git a/entry/src/main/js/default/pages/component/headComponent/headComponent.js b/entry/src/main/js/default/pages/component/headComponent/headComponent.js
new file mode 100755
index 00000000..cce9c821
--- /dev/null
+++ b/entry/src/main/js/default/pages/component/headComponent/headComponent.js
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import router from '@system.router';
+
+export default {
+ props: {
+ //Title name
+ titleName: {
+ default: '',
+ },
+ backIcon: {},
+ backIsShow: {
+ default: true,
+ },
+ buttonStyles: {
+ default: 'app-bar-image'
+ },
+ },
+ back() {
+ console.info('setting headComponent back start');
+ this.$emit('backType', {});
+ console.info('setting headComponent back end');
+ },
+ backChangeBackground() {
+ console.info('setting headComponent backChangeBackground start');
+ this.buttonStyles = 'app-bar-image-change-background'
+ console.info('setting headComponent backChangeBackground end');
+ },
+ backRouter() {
+ console.info('setting headComponent backRouter start');
+ router.back();
+ console.info('setting headComponent backRouter end');
+ }
+}
+
diff --git a/entry/src/main/js/default/pages/component/settingsListComponent/settingsListComponent.css b/entry/src/main/js/default/pages/component/settingsListComponent/settingsListComponent.css
new file mode 100755
index 00000000..84c74183
--- /dev/null
+++ b/entry/src/main/js/default/pages/component/settingsListComponent/settingsListComponent.css
@@ -0,0 +1,14 @@
+/*
+* Copyright (c) 2021 Huawei Device Co., Ltd.
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
diff --git a/entry/src/main/js/default/pages/component/settingsListComponent/settingsListComponent.hml b/entry/src/main/js/default/pages/component/settingsListComponent/settingsListComponent.hml
new file mode 100755
index 00000000..e6015000
--- /dev/null
+++ b/entry/src/main/js/default/pages/component/settingsListComponent/settingsListComponent.hml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
diff --git a/entry/src/main/js/default/pages/component/settingsListComponent/settingsListComponent.js b/entry/src/main/js/default/pages/component/settingsListComponent/settingsListComponent.js
new file mode 100755
index 00000000..429c9c87
--- /dev/null
+++ b/entry/src/main/js/default/pages/component/settingsListComponent/settingsListComponent.js
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import router from '@system.router';
+import LogUtil from '../../../common/baseUtil/LogUtil.js';
+
+let logUtil = new LogUtil();
+
+export default {
+ props: {
+ //Receive the value passed by the parent component
+ parentData: {
+ default: '',
+ },
+ listShow: {
+ default: true,
+ }
+ },
+ data: {},
+
+ /**
+ * Jump to the corresponding lower menu
+ */
+ onclick(e) {
+ logUtil.info('setting settingsListComponent onclick start: ' + JSON.stringify(e.detail.text));
+ router.push({
+ uri: e.detail.text.settingUri,
+ params: {
+ dataParam: e.detail.text,
+ }
+ });
+ logUtil.info('setting settingsListComponent onclick end: ');
+ },
+ /**
+ * switch Onchange get the value
+ * @param e
+ * @return
+ */
+ switchClick(e) {
+ logUtil.info('setting settingsListComponent switchClick start: ');
+ this.switchChangeValue = e.detail.text,
+ this.switchDefaultChangeValue = e.detail.defaultText
+ logUtil.info('setting settingsListComponent switchClick end:' + this.switchChangeValue + '|' + this.switchDefaultChangeValue);
+ }
+}
+
diff --git a/entry/src/main/js/default/pages/dateAndTime/dateAndTime.css b/entry/src/main/js/default/pages/dateAndTime/dateAndTime.css
new file mode 100755
index 00000000..4e8c069a
--- /dev/null
+++ b/entry/src/main/js/default/pages/dateAndTime/dateAndTime.css
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2021 Huawei Device Co., Ltd.
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+.container {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ height: 100%;
+}
+
+.dialog-main {
+ width: 440px;
+ height: 440px;
+}
+
+.dialog-div {
+ flex-direction: column;
+ align-items: center;
+ width: 420px;
+ height: 420px;
+}
+
+.inner-title {
+ width: 100%;
+ height: 50px;
+ align-items: center;
+ text-align: left;
+ margin-left: 10px;
+ font-size: 18px;
+}
+
+.inner-txt {
+ width: 100%;
+ height: 360px;
+ text-align: left;
+}
+
+.inner-btn {
+ width: 400px;
+ height: 80px;
+ justify-content: space-around;
+ align-items: center;
+}
+
+.time-picker {
+ width: 600px;
+ height: 500px;
+ margin-top: 20px;
+}
+
+
diff --git a/entry/src/main/js/default/pages/dateAndTime/dateAndTime.hml b/entry/src/main/js/default/pages/dateAndTime/dateAndTime.hml
new file mode 100755
index 00000000..5a6f364e
--- /dev/null
+++ b/entry/src/main/js/default/pages/dateAndTime/dateAndTime.hml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/entry/src/main/js/default/pages/dateAndTime/dateAndTime.js b/entry/src/main/js/default/pages/dateAndTime/dateAndTime.js
new file mode 100755
index 00000000..a5db476a
--- /dev/null
+++ b/entry/src/main/js/default/pages/dateAndTime/dateAndTime.js
@@ -0,0 +1,212 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import router from '@system.router';
+import BaseParseConfModel from '../../model/baseParseConfImpl/BaseParseConfModel.js';
+import LogUtil from '../../common/baseUtil/LogUtil.js';
+import DateAndTimeUtil from '../../common/baseUtil/DateAndTimeUtil.js';
+import systemTime from '@ohos.systemTime';
+
+let logUtil = new LogUtil();
+let dateAndTimeUtil = null;
+let baseParseConfModel = new BaseParseConfModel();
+
+globalThis.$globalT = null;
+
+export default {
+ data: {
+ date: '', //The date displayed on the current page
+ time: '', //The time displayed on the current page
+ currentDate: '',
+ currentTime: '',
+ inner_title: '', //Title information on the time frame
+ intervalFlag: '', //Timer flag
+ dateAndTimeList: [],
+ dateAndTimeListData: 'dateAndTimeList',
+ },
+ /**
+ * init
+ */
+ onInit() {
+ logUtil.info('settings dateAndTime onInit start')
+ globalThis.$globalT = this.$t.bind(this);
+ dateAndTimeUtil = new DateAndTimeUtil();
+ this.dateAndTimeList = baseParseConfModel.getJsonData('/data/accounts/account_0/applications/com.ohos.settings/com.ohos.settings/assets/entry/resources/rawfile/dateAndTime.json');
+ for (let key in this.dateAndTimeList) {
+ var settingAlias = this.dateAndTimeList[key].settingAlias
+ this.dateAndTimeList[key].settingTitle = this.$t('strings.'.concat(settingAlias))
+ }
+ logUtil.info('settings dateAndTime onInit dateAndTimeList:' + JSON.stringify(this.dateAndTimeList));
+ const dateTime = new Date();
+ const year = dateTime.getFullYear();
+ const month = dateTime.getMonth() + 1;
+ const day = dateTime.getDate();
+ this.date = dateAndTimeUtil.concatDate(year, month, day);
+ this.time = dateAndTimeUtil.now();
+ this.changeValue();
+ let that = this
+ this.intervalFlag = setInterval(function () {
+ that.time = dateAndTimeUtil.now();
+ that.changeValue();
+ }, 1000);
+ logUtil.info('settings dateAndTime onInit end:' + JSON.stringify(this.dateAndTimeList));
+ },
+ /**
+ * Stop refresh
+ */
+ onDestroy() {
+ logUtil.info('setting dateAndTime onDestroy start')
+ clearInterval(this.intervalFlag)
+ logUtil.info('setting dateAndTime onDestroy end')
+ },
+ /**
+ * Assignment conversion
+ */
+ changeValue() {
+
+ for (let key in this.dateAndTimeList) {
+ let settingAlias = this.dateAndTimeList[key].settingAlias;
+ if (settingAlias == 'date') {
+ this.dateAndTimeList[key].settingValue = this.date;
+ } else if (settingAlias == 'time') {
+ this.dateAndTimeList[key].settingValue = this.time;
+ }
+ }
+ },
+ /**
+ * Enter to select sub-page details
+ * @param index
+ * @return
+ */
+ clickToDetail(index) {
+ logUtil.info('setting dateAndTime clickToDetail start')
+ let settingAlias = this.dateAndTimeList[index].settingAlias;
+ if (settingAlias == 'date') {
+ const datetime = new Date();
+ const y = datetime.getFullYear();
+ const m = datetime.getMonth() + 1;
+ const d = datetime.getDate();
+ this.currentDate = this.date;
+ this.inner_title = this.currentDate + dateAndTimeUtil.convert(y, m, d);
+ this.$element('dateDialog').show();
+ }
+ else if (settingAlias == 'time') {
+ this.currentTime = this.time;
+ this.$element('timeDialog').show();
+ }
+ else {
+ }
+ logUtil.info('setting dateAndTime clickToDetail end')
+ },
+ /**
+ * Cancel the bullet box
+ * @return
+ */
+ cancelSchedule() {
+ logUtil.info('setting dateAndTime cancelSchedule start')
+ this.$element('dateDialog').close()
+ this.$element('timeDialog').close()
+ logUtil.info('setting dateAndTime cancelSchedule end')
+ },
+ /**
+ * Modify date
+ * @return
+ */
+ setDateSchedule() {
+ logUtil.info('setting dateAndTime setDateSchedule start')
+ this.$element('dateDialog').close();
+ if (this.currentDate != this.date) {
+ logUtil.info('dateDialog init start:: current date is' + this.currentDate);
+ this.date = this.currentDate;
+ this.inner_title = this.date + this.week;
+ this.changeValue();
+ }
+ logUtil.info('setting dateAndTime setDateSchedule end')
+ },
+ /**
+ * Modify time
+ * @return
+ */
+ setTimeSchedule() {
+ logUtil.info('setting dateAndTime setTimeSchedule start')
+ this.$element('timeDialog').close();
+ if (this.currentTime != this.time) {
+ logUtil.info('timeDialog init start:: current time is' + this.currentTime);
+ const datetime = new Date();
+ const y = datetime.getFullYear();
+ const m = datetime.getMonth() + 1;
+ const d = datetime.getDate();
+ const str = y + "/" + dateAndTimeUtil.fill(m) + "/" + dateAndTimeUtil.fill(d) + " " + this.currentTime + ":" + "00"
+ logUtil.info('timeDialog init start::' + str);
+ const s = (new Date(str)).getTime();
+ logUtil.info('timeDialog time::' + s);
+ this.setTime(s);
+ this.time = this.currentTime;
+ logUtil.info('timeDialog time::' + this.time);
+ this.changeValue();
+ }
+ logUtil.info('setting dateAndTime setTimeSchedule end')
+ },
+ setTime(time) {
+ console.log('setting dateAndTime setTime start');
+ systemTime.setTime(time).then(data =>
+ console.log('setting dateAndTime AceApplication promise1::then ' + data))
+ .catch(error =>
+ console.log('setting dateAndTime AceApplication promise1::catch ' + error));
+ console.log('setting dateAndTime setTime end');
+ },
+ /**
+ * Date drag
+ * @param data
+ * @return
+ */
+ handleDateChange(data) {
+ logUtil.info('setting dateAndTime handleDateChange start')
+ this.currentDate = dateAndTimeUtil.concatDate(data.year, data.month + 1, data.day);
+ this.inner_title = this.currentDate + dateAndTimeUtil.convert(data.year, data.month + 1, data.day);
+ logUtil.info('setting dateAndTime handleDateChange end')
+ },
+ /**
+ * Time drag
+ * @param data
+ * @return
+ */
+ handleTimeChange(data) {
+ logUtil.info('setting dateAndTime handleTimeChange start')
+ this.currentTime = dateAndTimeUtil.concatTime(data.hour, data.minute);
+ logUtil.info('setting dateAndTime handleTimeChange end')
+ },
+ /**
+ * Return to the previous menu
+ */
+ back() {
+ logUtil.info('settings dateAndTime back start:')
+ router.back();
+ logUtil.info('settings dateAndTime back end:')
+ },
+ onCreate() {
+ logUtil.info('settings dateAndTime onCreate')
+ },
+ onReady() {
+ logUtil.info('settings dateAndTime onReady')
+ },
+ onHide() {
+ logUtil.info('settings dateAndTime onHide')
+ }
+}
+
+
+
+
+
diff --git a/entry/src/main/js/default/pages/searchInfo/searchInfo.css b/entry/src/main/js/default/pages/searchInfo/searchInfo.css
new file mode 100755
index 00000000..537a0321
--- /dev/null
+++ b/entry/src/main/js/default/pages/searchInfo/searchInfo.css
@@ -0,0 +1,88 @@
+/*
+* Copyright (c) 2021 Huawei Device Co., Ltd.
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+.container {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ height: 100%;
+ padding-left: 30px;
+ padding-right: 30px;
+}
+
+.search {
+ height: 90px;
+ align-items: center;
+ padding-left: 30px;
+ padding-right: 30px;
+}
+
+.icon {
+ width: 20%;
+ height: 120px;
+ justify-content: center;
+ align-items: center;
+ padding-left: 30px;
+ padding-right: 30px;
+}
+
+.body {
+ width: 30%;
+ height: 120px;
+ justify-content: center;
+ align-items: flex-start;
+}
+
+.status {
+ width: 35%;
+ height: 120px;
+ justify-content: flex-end;
+ align-items: center;
+}
+
+.more-div {
+ padding-right: 20px;
+ padding-top: 20px;
+ width: 15%;
+ flex-direction: row;
+ justify-content: flex-end;
+ align-items: flex-end;
+}
+
+.arrow {
+ width: 60px;
+ height: 90px;
+ justify-content: center;
+ align-items: center;
+}
+
+.settings-body {
+ padding-left: 30px;
+ padding-right: 30px;
+}
+
+.app-bar-info {
+ width: 100%;
+ height: 120px;
+ flex-direction: row;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ align-items: center;
+}
+
+.app-bar-image {
+ width: 50px;
+ height: 50px;
+ margin-left: 30px;
+}
diff --git a/entry/src/main/js/default/pages/searchInfo/searchInfo.hml b/entry/src/main/js/default/pages/searchInfo/searchInfo.hml
new file mode 100755
index 00000000..08582db6
--- /dev/null
+++ b/entry/src/main/js/default/pages/searchInfo/searchInfo.hml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/entry/src/main/js/default/pages/searchInfo/searchInfo.js b/entry/src/main/js/default/pages/searchInfo/searchInfo.js
new file mode 100755
index 00000000..1351842f
--- /dev/null
+++ b/entry/src/main/js/default/pages/searchInfo/searchInfo.js
@@ -0,0 +1,84 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import router from '@system.router';
+
+const DATA_PAGE_SOURCE_HOME_PAGE = 'homePage';
+const DATA_PAGE_SOURCE_APP_PAGE = 'appPage';
+
+export default {
+ data: {
+ /**
+ * setting homepage date list
+ */
+ settingsList: [],
+ /**
+ * Application management list
+ */
+ appList: [],
+ /**
+ * search result list
+ */
+ searchList: [],
+ /**
+ * Page source
+ * homePage:homePage, appManage:appPage
+ */
+ type: null,
+ },
+ onInit() {
+ this.settingsList = this.data;
+ this.appList = this.appData;
+ this.type = this.type;
+ },
+
+ /**
+ * Get the value in the search box
+ */
+ getValue: function (e) {
+ this.clickSearch(e.text);
+ },
+
+ /**
+ * Search app
+ * @param e
+ * @return
+ */
+ clickSearch(e) {
+ if (e == null) {
+ return;
+ }
+ this.searchList = [];
+ if (this.type == DATA_PAGE_SOURCE_HOME_PAGE) {
+ this.settingsList.forEach((element) => {
+ if ((element.settingTitle).includes(e) && '' != e) {
+ this.searchList.push(element);
+ }
+ })
+ }
+ else if (this.type == DATA_PAGE_SOURCE_APP_PAGE) {
+ this.appList.forEach((element) => {
+ if ((element.settingTitle).includes(e) && '' != e) {
+ this.searchList.push(element);
+ }
+ })
+ }
+ },
+ searchBack() {
+ router.back();
+ },
+ onBackPress() {
+ router.back();
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/js/default/pages/settingList/settingList.css b/entry/src/main/js/default/pages/settingList/settingList.css
new file mode 100755
index 00000000..eaeeda78
--- /dev/null
+++ b/entry/src/main/js/default/pages/settingList/settingList.css
@@ -0,0 +1,75 @@
+/*
+* Copyright (c) 2021 Huawei Device Co., Ltd.
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+.container {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ height: 100%;
+}
+
+.search {
+ width: 100%;
+ height: 70px;
+ align-items: center;
+ padding-left: 15px;
+ padding-right: 15px;
+ margin-top: 8px;
+ margin-bottom: 8px;
+}
+
+.icon {
+ width: 20%;
+ height: 120px;
+ justify-content: center;
+ align-items: center;
+ padding-left: 30px;
+ padding-right: 30px;
+}
+
+.body {
+ width: 30%;
+ height: 120px;
+ justify-content: center;
+ align-items: flex-start;
+}
+
+.status {
+ width: 35%;
+ height: 120px;
+ justify-content: flex-end;
+ align-items: center;
+}
+
+.more-div {
+ padding-right: 20px;
+ padding-top: 20px;
+ width: 15%;
+ flex-direction: row;
+ justify-content: flex-end;
+ align-items: flex-end;
+}
+
+.arrow {
+ width: 60px;
+ height: 90px;
+ justify-content: center;
+ align-items: center;
+}
+
+.settings-body {
+ padding-left: 30px;
+ padding-right: 30px;
+}
+
diff --git a/entry/src/main/js/default/pages/settingList/settingList.hml b/entry/src/main/js/default/pages/settingList/settingList.hml
new file mode 100755
index 00000000..f5d288f5
--- /dev/null
+++ b/entry/src/main/js/default/pages/settingList/settingList.hml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/entry/src/main/js/default/pages/settingList/settingList.js b/entry/src/main/js/default/pages/settingList/settingList.js
new file mode 100755
index 00000000..112f9ee3
--- /dev/null
+++ b/entry/src/main/js/default/pages/settingList/settingList.js
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import router from '@system.router';
+import SettingListModel from '../../model/settingListImpl/SettingListModel.js';
+import LogUtil from '../../common/baseUtil/LogUtil.js';
+
+const DATA_PAGE_SOURCE_HOME_PAGE = 'homePage';
+let mSettingListModel = new SettingListModel();
+let logUtil = new LogUtil();
+
+export default {
+ data: {
+ settingsList: [],
+ switchChangeValue: false,
+ switchDefaultChangeValue: false
+ },
+ onInit() {
+ logUtil.info('settings settingList onInit start:');
+ mSettingListModel.setSettingListener(this.settingsListData);
+ for (let key in this.settingsList) {
+ var settingAlias = this.settingsList[key].settingAlias
+ if (settingAlias == 'wifiTab') {
+ this.settingsList[key].settingValue = this.$t('strings.enabled')
+ }
+ this.settingsList[key].settingTitle = this.$t('strings.'.concat(settingAlias))
+ }
+ logUtil.info('settings settingList onInit end:');
+ },
+ settingsListData(data) {
+ logUtil.info('settingList settingsListData data:' + JSON.stringify(data));
+ this.settingsList = data
+ },
+
+ /**
+ * Click the search box to jump to the search page
+ */
+ onClick() {
+ logUtil.info('settings settingList onClick start:');
+ router.push({
+ uri: 'pages/searchInfo/searchInfo',
+ params: {
+ data: this.settingsList,
+ type: DATA_PAGE_SOURCE_HOME_PAGE
+ }
+ });
+ logUtil.info('settings settingList onClick end:');
+ },
+}
\ No newline at end of file
diff --git a/entry/src/main/js/default/res/image/about.png b/entry/src/main/js/default/res/image/about.png
new file mode 100755
index 00000000..70776056
Binary files /dev/null and b/entry/src/main/js/default/res/image/about.png differ
diff --git a/entry/src/main/js/default/res/image/apply.jpg b/entry/src/main/js/default/res/image/apply.jpg
new file mode 100755
index 00000000..8e5f0441
Binary files /dev/null and b/entry/src/main/js/default/res/image/apply.jpg differ
diff --git a/entry/src/main/js/default/res/image/arrow.jpg b/entry/src/main/js/default/res/image/arrow.jpg
new file mode 100755
index 00000000..ed0e6dad
Binary files /dev/null and b/entry/src/main/js/default/res/image/arrow.jpg differ
diff --git a/entry/src/main/js/default/res/image/bright.png b/entry/src/main/js/default/res/image/bright.png
new file mode 100755
index 00000000..850dba6d
Binary files /dev/null and b/entry/src/main/js/default/res/image/bright.png differ
diff --git a/entry/src/main/js/default/res/image/brightness.png b/entry/src/main/js/default/res/image/brightness.png
new file mode 100755
index 00000000..ccfddeb3
Binary files /dev/null and b/entry/src/main/js/default/res/image/brightness.png differ
diff --git a/entry/src/main/js/default/res/image/dateTime.jpg b/entry/src/main/js/default/res/image/dateTime.jpg
new file mode 100755
index 00000000..039495b9
Binary files /dev/null and b/entry/src/main/js/default/res/image/dateTime.jpg differ
diff --git a/entry/src/main/js/default/res/image/head_icon.png b/entry/src/main/js/default/res/image/head_icon.png
new file mode 100755
index 00000000..8c6c89e4
Binary files /dev/null and b/entry/src/main/js/default/res/image/head_icon.png differ
diff --git a/entry/src/main/js/default/res/image/ic_appwidget_settings_brightness_off_holo.png b/entry/src/main/js/default/res/image/ic_appwidget_settings_brightness_off_holo.png
new file mode 100755
index 00000000..a9412652
Binary files /dev/null and b/entry/src/main/js/default/res/image/ic_appwidget_settings_brightness_off_holo.png differ
diff --git a/entry/src/main/js/default/res/image/ic_back.png b/entry/src/main/js/default/res/image/ic_back.png
new file mode 100755
index 00000000..2b4ef6f8
Binary files /dev/null and b/entry/src/main/js/default/res/image/ic_back.png differ
diff --git a/entry/src/main/js/default/res/image/ic_settings_about.png b/entry/src/main/js/default/res/image/ic_settings_about.png
new file mode 100755
index 00000000..af3d6258
Binary files /dev/null and b/entry/src/main/js/default/res/image/ic_settings_about.png differ
diff --git a/entry/src/main/js/default/res/image/ic_settings_advanced.png b/entry/src/main/js/default/res/image/ic_settings_advanced.png
new file mode 100755
index 00000000..d8b74dda
Binary files /dev/null and b/entry/src/main/js/default/res/image/ic_settings_advanced.png differ
diff --git a/entry/src/main/js/default/res/image/ic_settings_applications.png b/entry/src/main/js/default/res/image/ic_settings_applications.png
new file mode 100755
index 00000000..a968d9f2
Binary files /dev/null and b/entry/src/main/js/default/res/image/ic_settings_applications.png differ
diff --git a/entry/src/main/js/default/res/image/ic_settings_arrow.png b/entry/src/main/js/default/res/image/ic_settings_arrow.png
new file mode 100755
index 00000000..cdbb19a5
Binary files /dev/null and b/entry/src/main/js/default/res/image/ic_settings_arrow.png differ
diff --git a/entry/src/main/js/default/res/image/ic_settings_brightness_maximum.png b/entry/src/main/js/default/res/image/ic_settings_brightness_maximum.png
new file mode 100755
index 00000000..993ba714
Binary files /dev/null and b/entry/src/main/js/default/res/image/ic_settings_brightness_maximum.png differ
diff --git a/entry/src/main/js/default/res/image/ic_settings_brightness_minimum.png b/entry/src/main/js/default/res/image/ic_settings_brightness_minimum.png
new file mode 100755
index 00000000..33547162
Binary files /dev/null and b/entry/src/main/js/default/res/image/ic_settings_brightness_minimum.png differ
diff --git a/entry/src/main/js/default/res/image/ic_settings_display.png b/entry/src/main/js/default/res/image/ic_settings_display.png
new file mode 100755
index 00000000..dd1cae09
Binary files /dev/null and b/entry/src/main/js/default/res/image/ic_settings_display.png differ
diff --git a/entry/src/main/js/default/res/image/icon_brightness_after.png b/entry/src/main/js/default/res/image/icon_brightness_after.png
new file mode 100755
index 00000000..708750cf
Binary files /dev/null and b/entry/src/main/js/default/res/image/icon_brightness_after.png differ
diff --git a/entry/src/main/js/default/res/image/icon_brightness_before.png b/entry/src/main/js/default/res/image/icon_brightness_before.png
new file mode 100755
index 00000000..be8ce5ca
Binary files /dev/null and b/entry/src/main/js/default/res/image/icon_brightness_before.png differ
diff --git a/entry/src/main/resources/base/element/string.json b/entry/src/main/resources/base/element/string.json
new file mode 100755
index 00000000..d7f11524
--- /dev/null
+++ b/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,12 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "Settings"
+ },
+ {
+ "name": "mainability_description",
+ "value": "JS_Phone_Empty Feature Ability"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/entry/src/main/resources/base/media/icon.png b/entry/src/main/resources/base/media/icon.png
new file mode 100755
index 00000000..4e0152b5
Binary files /dev/null and b/entry/src/main/resources/base/media/icon.png differ
diff --git a/entry/src/main/resources/rawfile/aboutDevice.json b/entry/src/main/resources/rawfile/aboutDevice.json
new file mode 100755
index 00000000..2166366c
--- /dev/null
+++ b/entry/src/main/resources/rawfile/aboutDevice.json
@@ -0,0 +1,42 @@
+[
+ {
+ "settingIcon": "",
+ "settingType": 0,
+ "settingAlias": "systemName",
+ "settingTitle": "",
+ "settingValue": "OpenHarmony",
+ "settingShowDivider": true
+ },
+ {
+ "settingIcon": "",
+ "settingType": 0,
+ "settingAlias": "model",
+ "settingTitle": "",
+ "settingValue": "",
+ "settingShowDivider": true
+ },
+ {
+ "settingIcon": "",
+ "settingType": 0,
+ "settingAlias": "companyInfo",
+ "settingTitle": "",
+ "settingValue": "",
+ "settingShowDivider": true
+ },
+ {
+ "settingIcon": "",
+ "settingType": 0,
+ "settingAlias": "deviceId",
+ "settingTitle": "",
+ "settingValue": "00000000000000",
+ "settingShowDivider": true
+ },
+ {
+ "settingIcon": "",
+ "settingType": 0,
+ "settingAlias": "softwareVersion",
+ "settingTitle": "",
+ "settingValue": "",
+ "settingShowDivider": true
+ }
+]
\ No newline at end of file
diff --git a/entry/src/main/resources/rawfile/brightness.json b/entry/src/main/resources/rawfile/brightness.json
new file mode 100755
index 00000000..e6898a41
--- /dev/null
+++ b/entry/src/main/resources/rawfile/brightness.json
@@ -0,0 +1,12 @@
+[
+ {
+ "settingIcon": "",
+ "settingTitle": "",
+ "settingAlias": "brightnessMode",
+ "settingDefaultValue": false,
+ "settingSwitchValue": true,
+ "settingSwitchModeValue": 1,
+ "settingValue": "",
+ "settingType": 2
+ }
+]
\ No newline at end of file
diff --git a/entry/src/main/resources/rawfile/dateAndTime.json b/entry/src/main/resources/rawfile/dateAndTime.json
new file mode 100755
index 00000000..6f6f49f7
--- /dev/null
+++ b/entry/src/main/resources/rawfile/dateAndTime.json
@@ -0,0 +1,26 @@
+[
+ {
+ "settingIcon": "",
+ "settingAlias": "date",
+ "settingItemIsShow": true,
+ "settingTitle": "",
+ "settingSummary": "",
+ "settingValue": "",
+ "settingArrow": "/res/image/ic_settings_arrow.png",
+ "settingDefaultValue": false,
+ "settingShowDivider": true,
+ "settingType": 1
+ },
+ {
+ "settingIcon": "",
+ "settingAlias": "time",
+ "settingItemIsShow": true,
+ "settingTitle": "",
+ "settingSummary": "",
+ "settingValue": "",
+ "settingArrow": "/res/image/ic_settings_arrow.png",
+ "settingDefaultValue": false,
+ "settingShowDivider": true,
+ "settingType": 1
+ }
+]
\ No newline at end of file
diff --git a/entry/src/main/resources/rawfile/settinglist.json b/entry/src/main/resources/rawfile/settinglist.json
new file mode 100755
index 00000000..9c90f728
--- /dev/null
+++ b/entry/src/main/resources/rawfile/settinglist.json
@@ -0,0 +1,50 @@
+[
+ {
+ "settingIcon": "/res/image/ic_settings_display.png",
+ "settingTitle": "",
+ "settingAlias": "brightnessTab",
+ "settingValue": "",
+ "settingArrow": "/res/image/ic_settings_arrow.png",
+ "settingDefaultValue": false,
+ "settingSummary": "",
+ "settingShowDivider": true,
+ "settingType": 1,
+ "settingUri": "pages/brightness/brightnessSettings"
+ },
+ {
+ "settingIcon": "/res/image/ic_settings_applications.png",
+ "settingTitle": "",
+ "settingAlias": "applyTab",
+ "settingValue": "",
+ "settingArrow": "/res/image/ic_settings_arrow.png",
+ "settingDefaultValue": true,
+ "settingSummary": "",
+ "settingShowDivider": true,
+ "settingType": 1,
+ "settingUri": "pages/appManagement/appManagement"
+ },
+ {
+ "settingIcon": "/res/image/ic_settings_advanced.png",
+ "settingTitle": "",
+ "settingAlias": "dateAndTimeTab",
+ "settingValue": "",
+ "settingArrow": "/res/image/ic_settings_arrow.png",
+ "settingDefaultValue": true,
+ "settingSummary": "",
+ "settingShowDivider": true,
+ "settingType": 1,
+ "settingUri": "pages/dateAndTime/dateAndTime"
+ },
+ {
+ "settingIcon": "/res/image/ic_settings_about.png",
+ "settingTitle": "",
+ "settingAlias": "aboutTab",
+ "settingValue": "",
+ "settingArrow": "/res/image/ic_settings_arrow.png",
+ "settingDefaultValue": true,
+ "settingSummary": "",
+ "settingShowDivider": false,
+ "settingType": 1,
+ "settingUri": "pages/aboutDevice/aboutDevice"
+ }
+]
diff --git a/figures/en-us_image_0000001153225717.png b/figures/en-us_image_0000001153225717.png
new file mode 100644
index 00000000..845afa6c
Binary files /dev/null and b/figures/en-us_image_0000001153225717.png differ
diff --git a/figures/zh-cn_image_0000001153225717.png b/figures/zh-cn_image_0000001153225717.png
new file mode 100755
index 00000000..845afa6c
Binary files /dev/null and b/figures/zh-cn_image_0000001153225717.png differ
diff --git a/gradle.properties b/gradle.properties
new file mode 100755
index 00000000..b8c947d3
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+# Project-wide Gradle settings.
+# IDE (e.g. DevEco Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# If the Chinese output is garbled, please configure the following parameter.
+# org.gradle.jvmargs=-Dfile.encoding=GBK
diff --git a/gradlew b/gradlew
new file mode 100755
index 00000000..accc54f8
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,183 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# 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
+#
+# https://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.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=`expr $i + 1`
+ done
+ case $i in
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100755
index 00000000..9109989e
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,103 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/local.properties b/local.properties
new file mode 100755
index 00000000..c9544a70
--- /dev/null
+++ b/local.properties
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+## This file must *NOT* be checked into Version Control Systems,
+# as it contains information specific to your local configuration.
+#
+# Location of the SDK. This is only used by Gradle.
+# For customization when using a Version Control System, please read the
+# header note.
+#Tue Mar 02 14:17:16 CST 2021
+hwsdk.dir=XXX
+native.dir=XXX
+nodejs.dir=XXX
diff --git a/settings.gradle b/settings.gradle
new file mode 100755
index 00000000..70c6e4e6
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+include ':entry'
diff --git a/signature/settings.p7b b/signature/settings.p7b
new file mode 100755
index 00000000..353bedd0
Binary files /dev/null and b/signature/settings.p7b differ