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 Method from '../utils/Method';
1799da06d0Sopenharmony_ciimport LogUtils from '../utils/LogUtils';
1899da06d0Sopenharmony_ci
1999da06d0Sopenharmony_ciconst TAG = 'FuncBtn';
2099da06d0Sopenharmony_ci
2199da06d0Sopenharmony_ci@Component
2299da06d0Sopenharmony_ciexport default struct FuncBtn {
2399da06d0Sopenharmony_ci  @State btnType: string = '';
2499da06d0Sopenharmony_ci  @State iconDisableUrl: string = '';
2599da06d0Sopenharmony_ci  @State iconDefaultUrl: string = '';
2699da06d0Sopenharmony_ci  @State iconActiveUrl: string = '';
2799da06d0Sopenharmony_ci  @State @Watch('iconClassName') isActive: boolean = false;
2899da06d0Sopenharmony_ci  @State @Watch('iconClassName') isDisable: boolean = false;
2999da06d0Sopenharmony_ci  @State iconText: string = '';
3099da06d0Sopenharmony_ci  @State textColor: string = 'rgb(255, 255, 255)';
3199da06d0Sopenharmony_ci  btnClick: Function = null;
3299da06d0Sopenharmony_ci
3399da06d0Sopenharmony_ci  /**
3499da06d0Sopenharmony_ci   * Button group picture change control
3599da06d0Sopenharmony_ci   *
3699da06d0Sopenharmony_ci   * @return {string} - return iconUrl
3799da06d0Sopenharmony_ci   */
3899da06d0Sopenharmony_ci  iconUrl() {
3999da06d0Sopenharmony_ci    if (this.isDisable && this.iconDisableUrl) {
4099da06d0Sopenharmony_ci      LogUtils.i(TAG, 'iconUrl this.isDisable : ' + this.isDisable);
4199da06d0Sopenharmony_ci      return this.iconDisableUrl;
4299da06d0Sopenharmony_ci    }
4399da06d0Sopenharmony_ci    return this.isActive && this.iconDefaultUrl ? this.iconActiveUrl : this.iconDefaultUrl;
4499da06d0Sopenharmony_ci  }
4599da06d0Sopenharmony_ci
4699da06d0Sopenharmony_ci  /**
4799da06d0Sopenharmony_ci   * Button group  change picture
4899da06d0Sopenharmony_ci   */
4999da06d0Sopenharmony_ci  changeBtn(type) {
5099da06d0Sopenharmony_ci    LogUtils.i(TAG, 'changeBtn type : ' + type);
5199da06d0Sopenharmony_ci    const btnName = ['record', 'video', 'mute'];
5299da06d0Sopenharmony_ci    if (Method.includes(btnName, type)) {
5399da06d0Sopenharmony_ci      this.isActive = !this.isActive;
5499da06d0Sopenharmony_ci    }
5599da06d0Sopenharmony_ci  }
5699da06d0Sopenharmony_ci
5799da06d0Sopenharmony_ci  /**
5899da06d0Sopenharmony_ci   * Button group style display
5999da06d0Sopenharmony_ci   *
6099da06d0Sopenharmony_ci   * @return {string} - Button group style display
6199da06d0Sopenharmony_ci   */
6299da06d0Sopenharmony_ci  iconClassName() {
6399da06d0Sopenharmony_ci    if (this.isDisable) {
6499da06d0Sopenharmony_ci      this.textColor = '#8c8c8c';
6599da06d0Sopenharmony_ci      return 'disable';
6699da06d0Sopenharmony_ci    }
6799da06d0Sopenharmony_ci    if (this.isActive) {
6899da06d0Sopenharmony_ci      this.textColor = '#007DFF';
6999da06d0Sopenharmony_ci      return 'enable';
7099da06d0Sopenharmony_ci    }
7199da06d0Sopenharmony_ci    if (this.btnType == 'msg') {
7299da06d0Sopenharmony_ci      this.textColor = '#8c8c8c';
7399da06d0Sopenharmony_ci      return '';
7499da06d0Sopenharmony_ci    }
7599da06d0Sopenharmony_ci    this.textColor = 'rgb(255, 255, 255)';
7699da06d0Sopenharmony_ci    LogUtils.i(TAG, 'iconClassName this.isDisable :');
7799da06d0Sopenharmony_ci    return 'default';
7899da06d0Sopenharmony_ci  }
7999da06d0Sopenharmony_ci
8099da06d0Sopenharmony_ci  aboutToAppear() {
8199da06d0Sopenharmony_ci    LogUtils.i(TAG, 'aboutToAppear');
8299da06d0Sopenharmony_ci    this.iconClassName();
8399da06d0Sopenharmony_ci  }
8499da06d0Sopenharmony_ci
8599da06d0Sopenharmony_ci  build() {
8699da06d0Sopenharmony_ci    Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
8799da06d0Sopenharmony_ci      Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
8899da06d0Sopenharmony_ci        Column() {
8999da06d0Sopenharmony_ci          Column() {
9099da06d0Sopenharmony_ci            Image(this.iconUrl())
9199da06d0Sopenharmony_ci          }
9299da06d0Sopenharmony_ci          .width(30)
9399da06d0Sopenharmony_ci          .height(30)
9499da06d0Sopenharmony_ci
9599da06d0Sopenharmony_ci          Column() {
9699da06d0Sopenharmony_ci            Text(this.iconText)
9799da06d0Sopenharmony_ci              .fontColor(this.textColor)
9899da06d0Sopenharmony_ci              .fontSize(14)
9999da06d0Sopenharmony_ci              .height(19.5)
10099da06d0Sopenharmony_ci              .lineHeight(19.5)
10199da06d0Sopenharmony_ci          }
10299da06d0Sopenharmony_ci          .margin({ top: 2 })
10399da06d0Sopenharmony_ci        }
10499da06d0Sopenharmony_ci        .enabled(!this.isDisable)
10599da06d0Sopenharmony_ci        .onClick(() => {
10699da06d0Sopenharmony_ci          this.changeBtn(this.btnType)
10799da06d0Sopenharmony_ci          this.btnClick(this.btnType);
10899da06d0Sopenharmony_ci        })
10999da06d0Sopenharmony_ci      }
11099da06d0Sopenharmony_ci    }
11199da06d0Sopenharmony_ci  }
11299da06d0Sopenharmony_ci}