1/**
2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import Router from '@system.router';
17import AppManagementModel from '../model/appManagementImpl/AppManagementModel';
18import LogUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/LogUtil';
19import ConfigData from '../../../../../../common/utils/src/main/ets/default/baseUtil/ConfigData';
20import { BaseData } from '../../../../../../common/utils/src/main/ets/default/bean/BaseData';
21import HeadComponent from '../../../../../../common/component/src/main/ets/default/headComponent';
22import ResourceUtil from '../../../../../../common/search/src/main/ets/default/common/ResourceUtil';
23import DoubleLineComponent from '../../../../../../common/component/src/main/ets/default/doubleLineComponent';
24import ImageAnimatorComponent from '../../../../../../common/component/src/main/ets/default/imageAnimatorComponent';
25
26
27/**
28 * application list
29 */
30@Entry
31@Component
32struct AppManagement {
33  @StorageLink('appManagementList') appList: BaseData[] = [];
34  private whtl: string = '80vp';
35
36  build() {
37    Column() {
38      GridContainer({ gutter: ConfigData.GRID_CONTAINER_GUTTER_24, margin: ConfigData.GRID_CONTAINER_MARGIN_24 }) {
39        Column() {
40          HeadComponent({ headName: $r('app.string.appManagement'), isActive: true });
41
42          if (this.appList.length <= 0) {
43            ImageAnimatorComponent({
44              imageWidth: $r('app.float.wh_value_80'),
45              imageHeight: $r('app.float.wh_value_80'), whtl: this.whtl
46            })
47              .margin({ top: $r("app.float.distance_8") })
48              .zIndex(1)
49              .align(Alignment.Center)
50              .padding({ top: ConfigData.WH_35_100 })
51              .width(ConfigData.WH_100_100)
52              .height(ConfigData.WH_100_100);
53          }
54
55          Column() {
56            List() {
57              ForEach(this.appList, (item: BaseData) => {
58                ListItem() {
59                  DoubleLineComponent({
60                    settingIcon: item.settingIcon,
61                    settingTitle: item.settingTitle + '',
62                    settingSummary: item.settingSummary,
63                    settingValue: item.settingValue ? item.settingValue.toString() : '',
64                    settingArrow: item.settingArrow ? item.settingArrow.toString() : '',
65                    settingArrowStyle: '',
66                    settingUri: item.settingUri,
67                    fontSize: $r('sys.float.ohos_id_text_size_body1'),
68                    valueFontSize: $r('sys.float.ohos_id_text_size_body2')
69                  });
70                }
71                .onClick(() => {
72                  if (item.settingUri) {
73                    Router.push({ uri: item.settingUri, params: item });
74                  }
75                })
76                .height($r('app.float.wh_value_72'));
77              }, (item: BaseData) => JSON.stringify(item));
78            }
79            .borderRadius($r("app.float.radius_24"))
80            .divider({
81              strokeWidth: 1,
82              color: $r('app.color.color_E3E3E3_grey'),
83              startMargin: $r('app.float.wh_value_65'),
84              endMargin: $r('sys.float.ohos_id_card_margin_end')
85            })
86            .visibility(this.appList.length > 0 ? Visibility.Visible : Visibility.None)
87            .zIndex(0);
88          }
89          .layoutWeight(ConfigData.LAYOUT_WEIGHT_1)
90          .borderRadius($r("app.float.radius_24"))
91          .backgroundColor($r("app.color.white_bg_color"))
92          .padding($r('app.float.distance_4'))
93        }
94        .useSizeType({
95          sm: { span: 4, offset: 0 },
96          md: { span: 6, offset: 1 },
97          lg: { span: 8, offset: 2 }
98        })
99      }
100      .width(ConfigData.WH_100_100)
101      .height(ConfigData.WH_100_100)
102    }
103    .backgroundColor($r("sys.color.ohos_id_color_sub_background"))
104    .width(ConfigData.WH_100_100)
105    .height(ConfigData.WH_100_100)
106  }
107
108  aboutToAppear(): void {
109    LogUtil.info('settings AppManagement aboutToAppear in');
110
111    AppStorage.SetOrCreate('appManagementList', []);
112    AppManagementModel.setAppManagementListener();
113    ResourceUtil.getString($r('app.float.wh_value_80')).then(value => this.whtl = value);
114    LogUtil.info('settings AppManagement aboutToAppear  appList:' + JSON.stringify(this.appList));
115
116    LogUtil.info('settings AppManagement aboutToAppear out');
117  }
118
119  aboutToDisappear(): void {
120    LogUtil.info('settings AppManagement aboutToDisappear in');
121    AppStorage.Delete('appManagementList');
122    LogUtil.info('settings AppManagement aboutToDisappear out');
123  }
124}