/** * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { HiLog, sharedPreferencesUtils } from '../../../../../../common'; const TAG = 'SelectMultiNumDialog'; @CustomDialog export struct SelectMultiNumDialog { @Link builder: SelectNumDialogBuilder; private controller: CustomDialogController; private selectDefault: Boolean = false; aboutToAppear() { HiLog.i(TAG, JSON.stringify(this.builder)); sharedPreferencesUtils.init(globalThis.getContext()) } build() { Column() { Text(this.builder.title) .fontSize($r('sys.float.ohos_id_text_size_dialog_tittle')) .fontColor($r('sys.color.ohos_id_color_text_primary')) .fontWeight(FontWeight.Bold) .alignSelf(ItemAlign.Center) .width('100%') .height('48vp') .padding({ left: '16vp', }) List() { ForEach(this.builder.multiNumCardItems, (item, index) => { ListItem() { Row() { Image(item.img) .height('30vp') .width('30vp') .margin({ right: '8vp' }) .onError((event => { HiLog.e(TAG, 'Num:' + index + ' Image onError' + JSON.stringify(event)) })) Column() { Text(item.number) .fontSize($r('sys.float.ohos_id_text_size_body1')) .fontColor($r('sys.color.ohos_id_color_text_primary')) .fontWeight(FontWeight.Lighter) Text(item.numType) .fontSize($r('sys.float.ohos_id_text_size_body2')) .fontColor($r('sys.color.ohos_dialog_text_alert_transparent')) .fontWeight(FontWeight.Lighter) .margin({ top: '4vp' }) }.alignItems(HorizontalAlign.Start) }.width('100%') .height('56vp') .justifyContent(FlexAlign.Start) .padding({ left: '16vp', }) }.onClick(() => { this.confirm(item, this.builder.contactId); }) }) }.divider({ strokeWidth: 0.8, startMargin: 56, endMargin: $r('app.float.id_card_margin_max'), }) Row() { Checkbox({ name: 'checkbox2', group: 'checkboxGroup' }) .select(false) .selectedColor(0x39a2db) .onChange((value: boolean) => { this.selectDefault = value console.info(' msz Checkbox2 change is' + value) }) Column() { Text($r('app.string.set_default_values')) .fontSize($r('sys.float.ohos_id_text_size_body1')) .fontColor($r('sys.color.ohos_dialog_text_alert_transparent')) .fontWeight(FontWeight.Lighter) }.alignItems(HorizontalAlign.Start) }.width('100%') .height('56vp') .justifyContent(FlexAlign.Start) .padding({ left: '16vp', }) Text($r('app.string.cancel')) .alignSelf(ItemAlign.Center) .textAlign(TextAlign.Center) .fontWeight(FontWeight.Medium) .fontColor(0x39a2db) .fontSize($r('sys.float.ohos_id_text_size_body1')) .width('100%') .height('48vp') .onClick(() => { this.cancel() }); }.backgroundColor(Color.White) } confirm(item, contactId) { this.controller.close() if (this.selectDefault) { sharedPreferencesUtils.saveToPreferences(contactId + '', item.number); } if (this.builder.callback) { this.builder.callback(item); } } cancel() { this.controller.close() } } class MultiNumCardItems { number: String; numType: Resource; img: Resource; } interface Controller { close(); open(); } export class SelectNumDialogBuilder { title: string | Resource; contactId: String multiNumCardItems: Array; callback?: (item: MultiNumCardItems) => void; controller?: Controller; }