199da06d0Sopenharmony_ci/**
299da06d0Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
399da06d0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
499da06d0Sopenharmony_ci * you may not use this file except in compliance with the License.
599da06d0Sopenharmony_ci * You may obtain a copy of the License at
699da06d0Sopenharmony_ci *
799da06d0Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
899da06d0Sopenharmony_ci *
999da06d0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1099da06d0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1199da06d0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1299da06d0Sopenharmony_ci * See the License for the specific language governing permissions and
1399da06d0Sopenharmony_ci * limitations under the License.
1499da06d0Sopenharmony_ci */
1599da06d0Sopenharmony_ci
1699da06d0Sopenharmony_ci/**
1799da06d0Sopenharmony_ci * @file: bottom button component
1899da06d0Sopenharmony_ci */
1999da06d0Sopenharmony_ci
2099da06d0Sopenharmony_ciimport CallServiceProxy from '../../model/CallServiceProxy';
2199da06d0Sopenharmony_ciimport LogUtils from '../utils/LogUtils';
2299da06d0Sopenharmony_ciimport DefaultCallData from '../struct/TypeUtils';
2399da06d0Sopenharmony_ciimport CallListStruct from '../struct/CallListStruct'
2499da06d0Sopenharmony_ci
2599da06d0Sopenharmony_ciconst TAG = 'BottomBtn';
2699da06d0Sopenharmony_ci
2799da06d0Sopenharmony_ci@Component
2899da06d0Sopenharmony_ciexport default struct BottomBtn {
2999da06d0Sopenharmony_ci  onItemClick: Function = null;
3099da06d0Sopenharmony_ci  @Link callData: DefaultCallData;
3199da06d0Sopenharmony_ci  @Link callList: Array<CallListStruct>;
3299da06d0Sopenharmony_ci  @Link hangup: boolean;
3399da06d0Sopenharmony_ci  private mCallServiceProxy: CallServiceProxy;
3499da06d0Sopenharmony_ci  private imageList;
3599da06d0Sopenharmony_ci
3699da06d0Sopenharmony_ci  public aboutToAppear() {
3799da06d0Sopenharmony_ci    LogUtils.i(TAG, 'aboutToAppear :');
3899da06d0Sopenharmony_ci    this.getImageList();
3999da06d0Sopenharmony_ci    this.mCallServiceProxy = CallServiceProxy.getInstance();
4099da06d0Sopenharmony_ci  }
4199da06d0Sopenharmony_ci
4299da06d0Sopenharmony_ci  /**
4399da06d0Sopenharmony_ci   * get Image List
4499da06d0Sopenharmony_ci   */
4599da06d0Sopenharmony_ci  private getImageList() {
4699da06d0Sopenharmony_ci    this.imageList = [
4799da06d0Sopenharmony_ci      {
4899da06d0Sopenharmony_ci        type: 'keyboard',
4999da06d0Sopenharmony_ci        img: $r('app.media.ic_public_DTFS')
5099da06d0Sopenharmony_ci      },
5199da06d0Sopenharmony_ci      {
5299da06d0Sopenharmony_ci        type: 'hangUP',
5399da06d0Sopenharmony_ci        img: $r('app.media.ic_public_ring_off')
5499da06d0Sopenharmony_ci      },
5599da06d0Sopenharmony_ci      {
5699da06d0Sopenharmony_ci        type: 'speakerphone',
5799da06d0Sopenharmony_ci        img: $r('app.media.ic_public_sound_louder')
5899da06d0Sopenharmony_ci      },
5999da06d0Sopenharmony_ci    ]
6099da06d0Sopenharmony_ci  }
6199da06d0Sopenharmony_ci
6299da06d0Sopenharmony_ci  /**
6399da06d0Sopenharmony_ci   * this method is to call the hangup interface
6499da06d0Sopenharmony_ci   */
6599da06d0Sopenharmony_ci  onHangUp() {
6699da06d0Sopenharmony_ci    this.mCallServiceProxy.hangUpCall(this.callData.callId);
6799da06d0Sopenharmony_ci    if (this.callList.length === 1) {
6899da06d0Sopenharmony_ci      this.hangup = true;
6999da06d0Sopenharmony_ci      globalThis.calluiAbilityContext?.terminateSelf().then((data) => {
7099da06d0Sopenharmony_ci        LogUtils.i(TAG, 'onHangUp terminateSelfCallBack');
7199da06d0Sopenharmony_ci      });
7299da06d0Sopenharmony_ci    }
7399da06d0Sopenharmony_ci    LogUtils.i(TAG, 'onHangUp this.callData.callId : ' + this.callData.callId);
7499da06d0Sopenharmony_ci  }
7599da06d0Sopenharmony_ci
7699da06d0Sopenharmony_ci  /**
7799da06d0Sopenharmony_ci   * Image size
7899da06d0Sopenharmony_ci   */
7999da06d0Sopenharmony_ci  imgSizes(type) {
8099da06d0Sopenharmony_ci    if (type == 'keyboard') {
8199da06d0Sopenharmony_ci      return 30;
8299da06d0Sopenharmony_ci    }
8399da06d0Sopenharmony_ci    if (type == 'speakerphone') {
8499da06d0Sopenharmony_ci      return 30;
8599da06d0Sopenharmony_ci    }
8699da06d0Sopenharmony_ci    if (type == 'hangUP') {
8799da06d0Sopenharmony_ci      return 56;
8899da06d0Sopenharmony_ci    }
8999da06d0Sopenharmony_ci  }
9099da06d0Sopenharmony_ci
9199da06d0Sopenharmony_ci  /**
9299da06d0Sopenharmony_ci   * Button Event
9399da06d0Sopenharmony_ci   */
9499da06d0Sopenharmony_ci  onImgClick(type) {
9599da06d0Sopenharmony_ci    if (type == 'keyboard') {
9699da06d0Sopenharmony_ci      this.onItemClick();
9799da06d0Sopenharmony_ci    }
9899da06d0Sopenharmony_ci    if (type == 'hangUP') {
9999da06d0Sopenharmony_ci      this.onHangUp();
10099da06d0Sopenharmony_ci    }
10199da06d0Sopenharmony_ci    if (type == 'speakerphone') {
10299da06d0Sopenharmony_ci      this.onSpeakerButtonClicked();
10399da06d0Sopenharmony_ci    }
10499da06d0Sopenharmony_ci  }
10599da06d0Sopenharmony_ci
10699da06d0Sopenharmony_ci  onSpeakerButtonClicked() {
10799da06d0Sopenharmony_ci  }
10899da06d0Sopenharmony_ci  build() {
10999da06d0Sopenharmony_ci    GridRow({ columns: { sm: 4, md: 8, lg: 12 }, gutter: 24 }) {
11099da06d0Sopenharmony_ci      GridCol({ span: { sm: 4, md: 6, lg: 6 }, offset: { md: 1, lg: 3 } }) {
11199da06d0Sopenharmony_ci        Grid() {
11299da06d0Sopenharmony_ci          ForEach(this.imageList, (item,) => {
11399da06d0Sopenharmony_ci            GridItem() {
11499da06d0Sopenharmony_ci              Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
11599da06d0Sopenharmony_ci                Image(item.img)
11699da06d0Sopenharmony_ci                  .width(this.imgSizes(item.type))
11799da06d0Sopenharmony_ci                  .height(this.imgSizes(item.type))
11899da06d0Sopenharmony_ci              }
11999da06d0Sopenharmony_ci              .width(56)
12099da06d0Sopenharmony_ci              .height(56)
12199da06d0Sopenharmony_ci              .onClick(() => {
12299da06d0Sopenharmony_ci                this.onImgClick(item.type)
12399da06d0Sopenharmony_ci              })
12499da06d0Sopenharmony_ci            }
12599da06d0Sopenharmony_ci          })
12699da06d0Sopenharmony_ci        }
12799da06d0Sopenharmony_ci        .columnsGap(24)
12899da06d0Sopenharmony_ci        .height(56)
12999da06d0Sopenharmony_ci        .columnsTemplate('1fr 1fr 1fr')
13099da06d0Sopenharmony_ci        .rowsTemplate('1fr')
13199da06d0Sopenharmony_ci      }
13299da06d0Sopenharmony_ci    }
13399da06d0Sopenharmony_ci    .margin({ left: 24, right: 24 })
13499da06d0Sopenharmony_ci  }
13599da06d0Sopenharmony_ci}
136