18779efd5Sopenharmony_ci/**
28779efd5Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
38779efd5Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
48779efd5Sopenharmony_ci * you may not use this file except in compliance with the License.
58779efd5Sopenharmony_ci * You may obtain a copy of the License at
68779efd5Sopenharmony_ci *
78779efd5Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
88779efd5Sopenharmony_ci *
98779efd5Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
108779efd5Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
118779efd5Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
128779efd5Sopenharmony_ci * See the License for the specific language governing permissions and
138779efd5Sopenharmony_ci * limitations under the License.
148779efd5Sopenharmony_ci */
158779efd5Sopenharmony_ci
168779efd5Sopenharmony_ciimport EnvironmentProp from '../../feature/EnvironmentProp';
178779efd5Sopenharmony_ciimport DialerPresenter from '../../presenter/dialer/DialerPresenter';
188779efd5Sopenharmony_ciimport { MutiDialerButtonView } from '../mutisim/MutiDialerButtonView'
198779efd5Sopenharmony_ciimport { PhoneNumber } from '../../../../../../feature/phonenumber';
208779efd5Sopenharmony_ciimport { HiLog } from '../../../../../../common/src/main/ets/util/HiLog';
218779efd5Sopenharmony_ciimport promptAction from '@ohos.promptAction'
228779efd5Sopenharmony_ci
238779efd5Sopenharmony_ciconst TAG = 'DialerButtonView';
248779efd5Sopenharmony_ci@Component
258779efd5Sopenharmony_ciexport struct DialerButtonView {
268779efd5Sopenharmony_ci  emergencyNum: string;
278779efd5Sopenharmony_ci  @Link mPresenter: DialerPresenter;
288779efd5Sopenharmony_ci  @StorageLink('tele_number') tele_number: string = '';
298779efd5Sopenharmony_ci  @StorageLink('haveSimCard') haveSimCard: boolean = false;
308779efd5Sopenharmony_ci  @StorageLink('haveMultiSimCard') haveMultiSimCard: boolean = false;
318779efd5Sopenharmony_ci  @StorageLink('haveVoLteReg') haveVoLteReg: boolean = false;
328779efd5Sopenharmony_ci
338779efd5Sopenharmony_ci  dialClick() {
348779efd5Sopenharmony_ci    this.mPresenter.callBtnClick = true;
358779efd5Sopenharmony_ci    if (!this.haveSimCard) {
368779efd5Sopenharmony_ci      HiLog.i(TAG, 'No SIM card!');
378779efd5Sopenharmony_ci      this.emergencyNum = this.mPresenter.all_number;
388779efd5Sopenharmony_ci      //TODO Pop-up window for dialing without a SIM card
398779efd5Sopenharmony_ci      PhoneNumber.fromString(this.mPresenter.all_number).isDialEmergencyNum().then((res) => {
408779efd5Sopenharmony_ci        this.mPresenter.isEmergencyNum = res;
418779efd5Sopenharmony_ci        if (!this.mPresenter.isEmergencyNum) {
428779efd5Sopenharmony_ci          HiLog.i(TAG, 'Is not Emergency Phone Number!');
438779efd5Sopenharmony_ci          promptAction.showToast({
448779efd5Sopenharmony_ci            message: $r('app.string.no_simCardDailog'),
458779efd5Sopenharmony_ci            duration: 2000,
468779efd5Sopenharmony_ci            bottom:'60%'
478779efd5Sopenharmony_ci          });
488779efd5Sopenharmony_ci          return;
498779efd5Sopenharmony_ci        } else {
508779efd5Sopenharmony_ci          this.mPresenter.dialing(this.emergencyNum);
518779efd5Sopenharmony_ci        }
528779efd5Sopenharmony_ci      })
538779efd5Sopenharmony_ci    } else {
548779efd5Sopenharmony_ci      if (this.tele_number.length > 0) {
558779efd5Sopenharmony_ci        this.mPresenter.dialing(this.mPresenter.all_number);
568779efd5Sopenharmony_ci      }
578779efd5Sopenharmony_ci    }
588779efd5Sopenharmony_ci    AppStorage.SetOrCreate('tele_number', '');
598779efd5Sopenharmony_ci    this.mPresenter.all_number = '';
608779efd5Sopenharmony_ci    this.mPresenter.callBtnClick = false;
618779efd5Sopenharmony_ci  }
628779efd5Sopenharmony_ci
638779efd5Sopenharmony_ci  build() {
648779efd5Sopenharmony_ci    Row() {
658779efd5Sopenharmony_ci      if (!this.haveMultiSimCard) {
668779efd5Sopenharmony_ci        if (this.haveSimCard && this.haveVoLteReg) {
678779efd5Sopenharmony_ci          Button() {
688779efd5Sopenharmony_ci            Image($r('app.media.dial_single_button_hd'))
698779efd5Sopenharmony_ci              .width($r('app.float.id_item_height_large'))
708779efd5Sopenharmony_ci              .height($r('app.float.id_item_height_large'))
718779efd5Sopenharmony_ci          }
728779efd5Sopenharmony_ci          .width(this.mPresenter.dialerButtonHeight)
738779efd5Sopenharmony_ci          .height(this.mPresenter.dialerButtonHeight)
748779efd5Sopenharmony_ci          .backgroundColor($r('sys.color.ohos_id_color_connected'))
758779efd5Sopenharmony_ci          .opacity(!EnvironmentProp.isTablet() || this.mPresenter.btnShow || this.haveSimCard
768779efd5Sopenharmony_ci            ? 1 : $r('sys.float.ohos_id_alpha_disabled'))
778779efd5Sopenharmony_ci          .onClick(() => {
788779efd5Sopenharmony_ci            this.dialClick();
798779efd5Sopenharmony_ci          })
808779efd5Sopenharmony_ci        } else {
818779efd5Sopenharmony_ci          Button() {
828779efd5Sopenharmony_ci            Image($r('app.media.ic_public_phone_filled_white'))
838779efd5Sopenharmony_ci              .width($r('app.float.id_card_margin_xxxxl'))
848779efd5Sopenharmony_ci              .height($r('app.float.id_card_margin_xxxxl'))
858779efd5Sopenharmony_ci          }
868779efd5Sopenharmony_ci          .width(this.mPresenter.dialerButtonHeight)
878779efd5Sopenharmony_ci          .height(this.mPresenter.dialerButtonHeight)
888779efd5Sopenharmony_ci          .backgroundColor($r('sys.color.ohos_id_color_connected'))
898779efd5Sopenharmony_ci          .opacity(!EnvironmentProp.isTablet() || this.mPresenter.btnShow || this.haveSimCard
908779efd5Sopenharmony_ci            ? 1 : $r('sys.float.ohos_id_alpha_disabled'))
918779efd5Sopenharmony_ci          .onClick(() => {
928779efd5Sopenharmony_ci            this.dialClick();
938779efd5Sopenharmony_ci          })
948779efd5Sopenharmony_ci        }
958779efd5Sopenharmony_ci      } else {
968779efd5Sopenharmony_ci        MutiDialerButtonView({
978779efd5Sopenharmony_ci          mPresenter: $mPresenter,
988779efd5Sopenharmony_ci        }).height(this.mPresenter.dialerButtonHeight)
998779efd5Sopenharmony_ci      }
1008779efd5Sopenharmony_ci    }.width(this.mPresenter.dialerButtonWidth)
1018779efd5Sopenharmony_ci    .height(this.mPresenter.dialerButtonHeight)
1028779efd5Sopenharmony_ci    .justifyContent(FlexAlign.Center)
1038779efd5Sopenharmony_ci  }
1048779efd5Sopenharmony_ci}