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_ciimport CallServiceProxy from '../../model/CallServiceProxy';
1799da06d0Sopenharmony_ciimport LogUtils from '../utils/LogUtils';
1899da06d0Sopenharmony_ciimport DefaultCallData from '../struct/TypeUtils';
1999da06d0Sopenharmony_ci
2099da06d0Sopenharmony_ciconst TAG = 'DtmfBtn';
2199da06d0Sopenharmony_ci
2299da06d0Sopenharmony_ciclass DataListStruct {
2399da06d0Sopenharmony_ci  public value: string
2499da06d0Sopenharmony_ci  public sign: string
2599da06d0Sopenharmony_ci}
2699da06d0Sopenharmony_ci
2799da06d0Sopenharmony_ci@Component
2899da06d0Sopenharmony_ciexport default struct DtmfBtn {
2999da06d0Sopenharmony_ci  @State color: string = 'rgba(255, 255, 255, 0)';
3099da06d0Sopenharmony_ci  @State subStr:string = '';
3199da06d0Sopenharmony_ci  @Link dataList: Array<DataListStruct>;
3299da06d0Sopenharmony_ci  @Link textInput: string;
3399da06d0Sopenharmony_ci  @Link textInputValue: string;
3499da06d0Sopenharmony_ci  private item: DataListStruct;
3599da06d0Sopenharmony_ci  private mCallServiceProxy;
3699da06d0Sopenharmony_ci  callData: DefaultCallData;
3799da06d0Sopenharmony_ci
3899da06d0Sopenharmony_ci  public aboutToAppear(): void {
3999da06d0Sopenharmony_ci    this.mCallServiceProxy = new CallServiceProxy();
4099da06d0Sopenharmony_ci  }
4199da06d0Sopenharmony_ci
4299da06d0Sopenharmony_ci  /**
4399da06d0Sopenharmony_ci   * Call and press the DTMF interface
4499da06d0Sopenharmony_ci   *
4599da06d0Sopenharmony_ci   * @param {Object} obj - Object
4699da06d0Sopenharmony_ci   */
4799da06d0Sopenharmony_ci  onBtnTouchStart(obj) {
4899da06d0Sopenharmony_ci    this.mCallServiceProxy.startDTMF(this.callData.callId, String(obj.value));
4999da06d0Sopenharmony_ci    LogUtils.i(TAG, 'onBtnTouchStart :');
5099da06d0Sopenharmony_ci  }
5199da06d0Sopenharmony_ci
5299da06d0Sopenharmony_ci  /**
5399da06d0Sopenharmony_ci   * Call release and send DTMF interface
5499da06d0Sopenharmony_ci   *
5599da06d0Sopenharmony_ci   * @param {Object} obj - Incoming value
5699da06d0Sopenharmony_ci   */
5799da06d0Sopenharmony_ci  onBtnTouchEnd() {
5899da06d0Sopenharmony_ci    this.mCallServiceProxy.stopDTMF(this.callData.callId);
5999da06d0Sopenharmony_ci    LogUtils.i(TAG, 'onBtnTouchEnd :');
6099da06d0Sopenharmony_ci  }
6199da06d0Sopenharmony_ci
6299da06d0Sopenharmony_ci  build() {
6399da06d0Sopenharmony_ci    Row() {
6499da06d0Sopenharmony_ci      Column() {
6599da06d0Sopenharmony_ci        if (this.item.value == '*') {
6699da06d0Sopenharmony_ci          Image($r('app.media.ic_star'))
6799da06d0Sopenharmony_ci            .width(24)
6899da06d0Sopenharmony_ci            .height(30)
6999da06d0Sopenharmony_ci            .margin({ bottom:10 })
7099da06d0Sopenharmony_ci            .padding({ top: 8 })
7199da06d0Sopenharmony_ci        } else if (this.item.value == '#') {
7299da06d0Sopenharmony_ci          Image($r('app.media.ic_pound'))
7399da06d0Sopenharmony_ci            .width(24)
7499da06d0Sopenharmony_ci            .height(30)
7599da06d0Sopenharmony_ci            .margin({ bottom:10 })
7699da06d0Sopenharmony_ci            .padding({ top: 8 })
7799da06d0Sopenharmony_ci        } else {
7899da06d0Sopenharmony_ci          Text(this.item.value)
7999da06d0Sopenharmony_ci            .fontSize(30)
8099da06d0Sopenharmony_ci            .height(40)
8199da06d0Sopenharmony_ci            .lineHeight(40)
8299da06d0Sopenharmony_ci            .fontWeight(FontWeight.Medium)
8399da06d0Sopenharmony_ci            .fontColor('#FFFFFF')
8499da06d0Sopenharmony_ci            .margin(0.5)
8599da06d0Sopenharmony_ci        }
8699da06d0Sopenharmony_ci
8799da06d0Sopenharmony_ci        if (this.item.sign == '+') {
8899da06d0Sopenharmony_ci          Text(this.item.sign)
8999da06d0Sopenharmony_ci            .fontSize(20)
9099da06d0Sopenharmony_ci            .height(24)
9199da06d0Sopenharmony_ci            .lineHeight(16)
9299da06d0Sopenharmony_ci            .opacity(0.6)
9399da06d0Sopenharmony_ci            .fontWeight(FontWeight.Regular)
9499da06d0Sopenharmony_ci            .fontColor('#FFFFFF')
9599da06d0Sopenharmony_ci        } else {
9699da06d0Sopenharmony_ci          Text(this.item.sign)
9799da06d0Sopenharmony_ci            .fontSize(12)
9899da06d0Sopenharmony_ci            .height(16)
9999da06d0Sopenharmony_ci            .lineHeight(16)
10099da06d0Sopenharmony_ci            .opacity(0.6)
10199da06d0Sopenharmony_ci            .fontWeight(FontWeight.Regular)
10299da06d0Sopenharmony_ci            .fontColor('#FFFFFF')
10399da06d0Sopenharmony_ci        }
10499da06d0Sopenharmony_ci      }
10599da06d0Sopenharmony_ci      .width(56.5)
10699da06d0Sopenharmony_ci      .height(56.5)
10799da06d0Sopenharmony_ci      .backgroundColor(this.color)
10899da06d0Sopenharmony_ci      .borderRadius(28.25)
10999da06d0Sopenharmony_ci      .onTouch((event: TouchEvent) => {
11099da06d0Sopenharmony_ci        if (event.type === TouchType.Down) {
11199da06d0Sopenharmony_ci          this.color = 'rgba(255, 255, 255, 0.4)';
11299da06d0Sopenharmony_ci          this.textInput = this.textInput + this.item.value;
11399da06d0Sopenharmony_ci          if (this.textInput.length > 19) {
11499da06d0Sopenharmony_ci            this.subStr = this.textInput.substr(this.textInput.length - 19, this.textInput.length - 1);
11599da06d0Sopenharmony_ci            this.textInputValue = this.subStr;
11699da06d0Sopenharmony_ci          } else {
11799da06d0Sopenharmony_ci            this.textInputValue = this.textInput;
11899da06d0Sopenharmony_ci          }
11999da06d0Sopenharmony_ci          AppStorage.SetOrCreate('TextInputValue', this.textInputValue);
12099da06d0Sopenharmony_ci          AppStorage.SetOrCreate('TextInput', this.textInput);
12199da06d0Sopenharmony_ci          LogUtils.i(TAG, 'textInputValue + TextInput : %s' + JSON.stringify(AppStorage.Get('TextInputValue')) +
12299da06d0Sopenharmony_ci            JSON.stringify(AppStorage.Get('TextInput')));
12399da06d0Sopenharmony_ci          this.onBtnTouchStart(this.item);
12499da06d0Sopenharmony_ci        }
12599da06d0Sopenharmony_ci        if (event.type === TouchType.Up) {
12699da06d0Sopenharmony_ci          this.color = 'rgba(255, 255, 255, 0)';
12799da06d0Sopenharmony_ci          this.onBtnTouchEnd();
12899da06d0Sopenharmony_ci        }
12999da06d0Sopenharmony_ci      })
13099da06d0Sopenharmony_ci    }
13199da06d0Sopenharmony_ci  }
13299da06d0Sopenharmony_ci}
133