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