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};