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}