1/** 2 * Copyright (c) 2022-2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import { HiLog, sharedPreferencesUtils } from '../../../../../../common'; 17 18const TAG = "SelectMultiNumDialog"; 19 20@CustomDialog 21export struct SelectMultiNumDialog { 22 @Link builder: SelectNumDialogBuilder; 23 private controller: CustomDialogController; 24 private selectDefault: Boolean = false; 25 26 aboutToAppear() { 27 HiLog.i(TAG, JSON.stringify(this.builder)); 28 sharedPreferencesUtils.init(globalThis.getContext()) 29 } 30 31 build() { 32 Column() { 33 Text(this.builder.title) 34 .fontSize($r("sys.float.ohos_id_text_size_dialog_tittle")) 35 .fontColor($r("sys.color.ohos_id_color_text_primary")) 36 .fontWeight(FontWeight.Bold) 37 .alignSelf(ItemAlign.Center) 38 .width("100%") 39 .height("48vp") 40 .padding({ left: "16vp", }) 41 List() { 42 ForEach(this.builder.multiNumCardItems, (item, index) => { 43 ListItem() { 44 Row() { 45 Image(item.img) 46 .height("30vp") 47 .width("30vp") 48 .margin({ right: "8vp" }) 49 .onError((event => { 50 HiLog.e(TAG, "Num:" + index + " Image onError" + JSON.stringify(event)) 51 })) 52 Column() { 53 Text(item.number) 54 .fontSize($r("sys.float.ohos_id_text_size_body1")) 55 .fontColor($r("sys.color.ohos_id_color_text_primary")) 56 .fontWeight(FontWeight.Lighter) 57 Text(item.numType) 58 .fontSize($r("sys.float.ohos_id_text_size_body2")) 59 .fontColor($r('sys.color.ohos_dialog_text_alert_transparent')) 60 .fontWeight(FontWeight.Lighter) 61 .margin({ top: "4vp" }) 62 }.alignItems(HorizontalAlign.Start) 63 }.width('100%') 64 .height("56vp") 65 .justifyContent(FlexAlign.Start) 66 .padding({ left: "16vp", }) 67 }.onClick(() => { 68 this.confirm(item, this.builder.contactId); 69 }) 70 }) 71 }.divider({ 72 strokeWidth: 0.8, 73 startMargin: 56, 74 endMargin: $r("app.float.id_card_margin_max"), 75 }) 76 77 Row() { 78 Checkbox({ name: 'checkbox2', group: 'checkboxGroup' }) 79 .select(false) 80 .selectedColor(0x39a2db) 81 .onChange((value: boolean) => { 82 this.selectDefault = value 83 console.info(' msz Checkbox2 change is' + value) 84 }) 85 Column() { 86 Text($r("app.string.set_default_values")) 87 .fontSize($r("sys.float.ohos_id_text_size_body1")) 88 .fontColor($r('sys.color.ohos_dialog_text_alert_transparent')) 89 .fontWeight(FontWeight.Lighter) 90 }.alignItems(HorizontalAlign.Start) 91 }.width('100%') 92 .height("56vp") 93 .justifyContent(FlexAlign.Start) 94 .padding({ left: "16vp", }) 95 96 Text($r("app.string.cancel")) 97 .alignSelf(ItemAlign.Center) 98 .textAlign(TextAlign.Center) 99 .fontWeight(FontWeight.Medium) 100 .fontColor(0x39a2db) 101 .fontSize($r("sys.float.ohos_id_text_size_body1")) 102 .width("100%") 103 .height("48vp") 104 .onClick(() => { 105 this.cancel() 106 }); 107 }.backgroundColor(Color.White) 108 } 109 110 confirm(item, contactId) { 111 this.controller.close() 112 if (this.selectDefault) { 113 sharedPreferencesUtils.saveToPreferences(contactId + '', item.number); 114 } 115 if (this.builder.callback) { 116 this.builder.callback(item); 117 } 118 } 119 120 cancel() { 121 this.controller.close() 122 } 123} 124 125class MultiNumCardItems { 126 number: String; 127 numType: Resource; 128 img: Resource; 129} 130 131interface Controller { 132 close(); 133 134 open(); 135} 136 137export class SelectNumDialogBuilder { 138 title: string | Resource; 139 contactId: String 140 multiNumCardItems: Array<MultiNumCardItems>; 141 callback?: (item: MultiNumCardItems) => void; 142 controller?: Controller; 143} 144