• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 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 FormExtension from '@ohos.app.form.FormExtensionAbility';
17import { Log } from '@ohos/base/src/main/ets/utils/Log';
18import { FormControllerManager } from './controller/FormControllerManager';
19import { FormController } from './controller/FormController';
20import { Constants } from './common/Constants';
21import mediaModel from '@ohos/base/src/main/ets/model/MediaModel';
22
23export default class FormAbility extends FormExtension {
24    private TAG: string = 'FormAbility';
25    onAddForm(want) {
26        Log.info(this.TAG, `form onAddForm. want ${JSON.stringify(want)}`);
27        this.init();
28        let param = want.parameters;
29        let formId = param['ohos.extra.param.key.form_identity'];
30        Log.info(this.TAG, `form onAddForm formId: ${formId}`);
31        let formControllerManager: FormControllerManager = FormControllerManager.getInstance();
32        formControllerManager.initData(formId, Constants.PHOTOS_FORM_OPERATION_MODE_NONE).then(() => {
33            let formController: FormController = formControllerManager.getController(formId);
34            Log.info(this.TAG, `form onAddForm. formController ${formController}`);
35            formController = (formController == null) ? formControllerManager.createFormController(formId,
36                Constants.PHOTOS_FORM_OPERATION_MODE_NONE) : formController;
37            if (formController == null) {
38                 Log.error(this.TAG, `Get null controller. formId: ${formId}`);
39                return null;
40            }
41            return formController.bindFormData(formId);
42        }).catch((err) => {
43             Log.error(this.TAG, `init err ${err}`);
44        })
45        return null;
46    }
47
48    onCastToNormalForm(formId) {
49        Log.info(this.TAG, `onCastToNormalForm, formId: ${formId}`);
50    }
51
52    onUpdateForm(formId) {
53        Log.info(this.TAG, `onUpdateForm, formId: ${formId} context ${JSON.stringify(this.context)}`);
54        // 经常起来后可能直接走onUpdate, 所以要初始化一下
55        this.init();
56        let formControllerManager: FormControllerManager = FormControllerManager.getInstance();
57        formControllerManager.updateController(formId);
58    }
59
60    onChangeFormVisibility(newStatus) {
61        Log.info(this.TAG, `onChangeFormVisibility, newStatus: ${JSON.stringify(newStatus)}`);
62        // 经常起来后可能直接走onChangeFormVisibility, 所以要初始化一下
63        this.init();
64        let formControllerManager: FormControllerManager = FormControllerManager.getInstance();
65        for (let key in newStatus) {
66            Log.info(this.TAG, `onChangeFormVisibility, key:${key}  value ${newStatus[key]}`);
67            let formId = key;
68            formControllerManager.initData(formId, Constants.PHOTOS_FORM_OPERATION_MODE_NONE);
69        }
70    }
71
72    onFormEvent(formId, message) {
73        Log.info(this.TAG, `onFormEvent, formId: ${formId}, message: ${message}`);
74        // 经常起来后可能直接走onEvent, 所以要初始化一下
75        this.init();
76        let formControllerManager: FormControllerManager = FormControllerManager.getInstance();
77        formControllerManager.onEvent(formId, message);
78    }
79
80    onRemoveForm(formId) {
81        Log.info(this.TAG, `onRemoveForm, formId: ${formId}`);
82        // 经常起来后可能直接走onDestroy, 所以要初始化一下
83        this.init();
84        let formControllerManager: FormControllerManager = FormControllerManager.getInstance();
85        formControllerManager.destroyController(formId);
86    }
87
88    private init() {
89        mediaModel.onCreate(this.context);
90        globalThis.appContext = this.context;
91    }
92};