1/* 2 * Copyright (c) Huawei Technologies Co., Ltd. 2021-2022. All rights reserved. 3 */ 4 5import UIExtensionContentSession from '@ohos.app.ability.UIExtensionContentSession'; 6import common from '@ohos.app.ability.common'; 7import Want from '@ohos.app.ability.Want'; 8 9import { Logger } from '../../common/util/HiLogger' 10import { MusicApp } from '../../common/global/globalmodel/GlobalModel'; 11import { createOrGet, globalKeys } from '../../common/global/GlobalThisHelper' 12import { AudioPickerView } from './AudioPickerView'; 13 14let storage = LocalStorage.getShared() 15const app: MusicApp = createOrGet(MusicApp, globalKeys.app); 16const logger: Logger = new Logger('AudioPickerExtension') 17 18/** 19 * [扩展Ability入口页面文件extension] 20 */ 21@Entry(storage) 22@Component 23struct AudioPickerExtension { 24 @State isShow: boolean = false 25 private session: UIExtensionContentSession | undefined = storage.get<UIExtensionContentSession>('session'); 26 private want: Want | undefined = storage.get<Want>('want'); 27 private context = getContext(this) as common.UIAbilityContext; 28 29 aboutToAppear(): void { 30 logger.info('aboutToAppear') 31 app.abilityContext = this.context 32 this.isShow = true 33 } 34 35 aboutToDisappear(): void { 36 storage.clear() 37 } 38 39 /** 40 * 半模态框标题 41 */ 42 @Builder 43 titleStyle() { 44 Text($r('app.string.select_audio')) 45 .height(56) 46 .fontSize(20) 47 .fontColor($r('sys.color.ohos_id_color_text_primary')) 48 .fontWeight(FontWeight.Bold) 49 } 50 51 @Builder 52 //装饰器 53 myBuilder() { 54 Column() { 55 AudioPickerView({ 56 isShow: $isShow, 57 session: this.session, 58 want: this.want 59 }); 60 } 61 } 62 63 64 build() { 65 Row() { 66 } 67 .width('100%') 68 .height('100%') 69 .bindSheet( 70 this.isShow, //是否显示半模态页面 71 this.myBuilder(), //builder:配置半模态页面内容 72 { 73 title: this.titleStyle, 74 height: SheetSize.FIT_CONTENT, 75 dragBar: false, //是否显示控制条,默认显示 76 preferType: SheetType.CENTER, 77 onAppear: () => { 78 logger.info('BindSheet onAppear.') //半模态页面显示回调函数 79 }, 80 onDisappear: () => { 81 if (this.session !== undefined) { 82 this.session.sendData({ 'isShowUIExtension': false }) 83 this.session.terminateSelf() 84 } 85 logger.info('BindSheet onDisappear.') //半模态页面回退回调函数 86 } 87 }) 88 } 89}