1048147e0Sopenharmony_ci/** 2048147e0Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3048147e0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4048147e0Sopenharmony_ci * you may not use this file except in compliance with the License. 5048147e0Sopenharmony_ci * You may obtain a copy of the License at 6048147e0Sopenharmony_ci * 7048147e0Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8048147e0Sopenharmony_ci * 9048147e0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10048147e0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11048147e0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12048147e0Sopenharmony_ci * See the License for the specific language governing permissions and 13048147e0Sopenharmony_ci * limitations under the License. 14048147e0Sopenharmony_ci */ 15048147e0Sopenharmony_ciimport ReceiveController from './receiveController' 16048147e0Sopenharmony_ciimport ConversationController from '../../pages/conversation/conversationController' 17048147e0Sopenharmony_ciimport HiLog from '../../utils/HiLog'; 18048147e0Sopenharmony_ci 19048147e0Sopenharmony_ciconst TAG = 'Receive'; 20048147e0Sopenharmony_ci 21048147e0Sopenharmony_ci@Component 22048147e0Sopenharmony_ciexport struct Receive { 23048147e0Sopenharmony_ci @State mReceiveController: ReceiveController = ReceiveController.getInstance(); 24048147e0Sopenharmony_ci @Link mConversationController: ConversationController; 25048147e0Sopenharmony_ci 26048147e0Sopenharmony_ci aboutToAppear() { 27048147e0Sopenharmony_ci this.mReceiveController.onInit((receiverData) => { 28048147e0Sopenharmony_ci this.mConversationController.setReceiveContactValue(receiverData); 29048147e0Sopenharmony_ci }) 30048147e0Sopenharmony_ci } 31048147e0Sopenharmony_ci 32048147e0Sopenharmony_ci aboutToDisappear() { 33048147e0Sopenharmony_ci HiLog.i(TAG,'aboutToDisappear'); 34048147e0Sopenharmony_ci this.mReceiveController.onBackPress(); 35048147e0Sopenharmony_ci } 36048147e0Sopenharmony_ci 37048147e0Sopenharmony_ci build() { 38048147e0Sopenharmony_ci Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Start }) { 39048147e0Sopenharmony_ci Flex({ alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { 40048147e0Sopenharmony_ci Flex({ alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { 41048147e0Sopenharmony_ci Text($r('app.string.putAddresser')) 42048147e0Sopenharmony_ci .maxLines(1) 43048147e0Sopenharmony_ci .lineHeight($r('app.float.addressee_line_height')) 44048147e0Sopenharmony_ci .fontSize($r('app.float.addressee_font_size')) 45048147e0Sopenharmony_ci .fontColor($r('sys.color.ohos_id_color_text_secondary')) 46048147e0Sopenharmony_ci .fontWeight(FontWeight.Regular) 47048147e0Sopenharmony_ci .fontFamily('HarmonyHeiTi') 48048147e0Sopenharmony_ci .flexShrink(0) 49048147e0Sopenharmony_ci Flex({ wrap: FlexWrap.NoWrap, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Start }) { 50048147e0Sopenharmony_ci // If a contact is selected 51048147e0Sopenharmony_ci if (this.mReceiveController.isInputStatus) { 52048147e0Sopenharmony_ci if (this.mReceiveController.selectContacts.length > 0) { 53048147e0Sopenharmony_ci ForEach(this.mReceiveController.selectContacts, (item, index) => { 54048147e0Sopenharmony_ci Row() { 55048147e0Sopenharmony_ci if (item.contactName == '' || item.contactName == null) { 56048147e0Sopenharmony_ci Text(item.telephoneFormat) 57048147e0Sopenharmony_ci .textAlign(TextAlign.Center) 58048147e0Sopenharmony_ci .maxLines(1) 59048147e0Sopenharmony_ci .textOverflow({ overflow: TextOverflow.Ellipsis }) 60048147e0Sopenharmony_ci .fontSize(12) 61048147e0Sopenharmony_ci .flexShrink(1) 62048147e0Sopenharmony_ci } 63048147e0Sopenharmony_ci if (item.contactName != '' && item.contactName != null) { 64048147e0Sopenharmony_ci Text(item.contactName) 65048147e0Sopenharmony_ci .textAlign(TextAlign.Center) 66048147e0Sopenharmony_ci .maxLines(1) 67048147e0Sopenharmony_ci .textOverflow({ overflow: TextOverflow.Ellipsis }) 68048147e0Sopenharmony_ci .fontSize(12) 69048147e0Sopenharmony_ci .flexShrink(1) 70048147e0Sopenharmony_ci } 71048147e0Sopenharmony_ci if (item.select) { 72048147e0Sopenharmony_ci Image($rawfile('icon/ic_public_cancel.svg')) 73048147e0Sopenharmony_ci .width(16) 74048147e0Sopenharmony_ci .height(16) 75048147e0Sopenharmony_ci .flexShrink(1) 76048147e0Sopenharmony_ci } 77048147e0Sopenharmony_ci } 78048147e0Sopenharmony_ci .padding({ left: 8, right: 8 }) 79048147e0Sopenharmony_ci .margin(8) 80048147e0Sopenharmony_ci .backgroundColor($r('sys.color.ohos_id_color_component_normal')) 81048147e0Sopenharmony_ci .borderRadius(24) 82048147e0Sopenharmony_ci .height(28) 83048147e0Sopenharmony_ci .alignItems(VerticalAlign.Center) 84048147e0Sopenharmony_ci .constraintSize({ maxWidth: item.select ? 244 : 228 ,minWidth: 68}) 85048147e0Sopenharmony_ci .onClick(() => { 86048147e0Sopenharmony_ci this.mReceiveController.nameClick(index, (receiverData) => { 87048147e0Sopenharmony_ci this.mConversationController.setReceiveContactValue(receiverData); 88048147e0Sopenharmony_ci }) 89048147e0Sopenharmony_ci }) 90048147e0Sopenharmony_ci }, item => JSON.stringify(item)) 91048147e0Sopenharmony_ci } 92048147e0Sopenharmony_ci Flex() { 93048147e0Sopenharmony_ci TextArea({ text: this.mReceiveController.myText }) 94048147e0Sopenharmony_ci .caretColor($r('sys.color.ohos_id_color_focused_outline')) 95048147e0Sopenharmony_ci .placeholderColor($r('sys.color.ohos_id_color_text_hint')) 96048147e0Sopenharmony_ci .backgroundColor($r('sys.color.ohos_id_color_background_transparent')) 97048147e0Sopenharmony_ci .focusable(true) 98048147e0Sopenharmony_ci .flexShrink(1) 99048147e0Sopenharmony_ci .onChange((value) => { 100048147e0Sopenharmony_ci this.mReceiveController.searchChange(value, (receiverData) => { 101048147e0Sopenharmony_ci this.mConversationController.setReceiveContactValue(receiverData); 102048147e0Sopenharmony_ci }); 103048147e0Sopenharmony_ci }) 104048147e0Sopenharmony_ci .onBlur(() => { 105048147e0Sopenharmony_ci this.mReceiveController.checkReceive((receiverData) => { 106048147e0Sopenharmony_ci this.mConversationController.setReceiveContactValue(receiverData); 107048147e0Sopenharmony_ci }); 108048147e0Sopenharmony_ci }) 109048147e0Sopenharmony_ci .onFocus(() => { 110048147e0Sopenharmony_ci this.mReceiveController.myContactFocus(); 111048147e0Sopenharmony_ci }) 112048147e0Sopenharmony_ci } 113048147e0Sopenharmony_ci .flexShrink(1) 114048147e0Sopenharmony_ci .constraintSize({ maxHeight: 120 }) 115048147e0Sopenharmony_ci } 116048147e0Sopenharmony_ci else { 117048147e0Sopenharmony_ci Text(this.mReceiveController.strSelectContact) 118048147e0Sopenharmony_ci .fontColor($r('sys.color.ohos_id_color_text_primary_activated')) 119048147e0Sopenharmony_ci .textAlign(TextAlign.Center) 120048147e0Sopenharmony_ci .fontSize(16) 121048147e0Sopenharmony_ci .lineHeight(22) 122048147e0Sopenharmony_ci .maxLines(1) 123048147e0Sopenharmony_ci .textAlign(TextAlign.Start) 124048147e0Sopenharmony_ci .textOverflow({ overflow: TextOverflow.Ellipsis }) 125048147e0Sopenharmony_ci .width('100%') 126048147e0Sopenharmony_ci .padding({ top: 12, bottom: 12 }) 127048147e0Sopenharmony_ci .onClick(() => { 128048147e0Sopenharmony_ci this.mReceiveController.myContactClick(); 129048147e0Sopenharmony_ci }) 130048147e0Sopenharmony_ci } 131048147e0Sopenharmony_ci } 132048147e0Sopenharmony_ci .flexShrink(1) 133048147e0Sopenharmony_ci } 134048147e0Sopenharmony_ci .flexBasis('auto') 135048147e0Sopenharmony_ci .flexShrink(1) 136048147e0Sopenharmony_ci 137048147e0Sopenharmony_ci // Contact icon on the right 138048147e0Sopenharmony_ci Image($rawfile('icon/ic_about.svg')) 139048147e0Sopenharmony_ci .width(24) 140048147e0Sopenharmony_ci .height(24) 141048147e0Sopenharmony_ci .onClick(() => { 142048147e0Sopenharmony_ci // The page for selecting a contact is displayed. 143048147e0Sopenharmony_ci this.mReceiveController.clickToContacts(receiverData => { 144048147e0Sopenharmony_ci this.mConversationController.setReceiveContactValue(receiverData); 145048147e0Sopenharmony_ci }) 146048147e0Sopenharmony_ci }) 147048147e0Sopenharmony_ci 148048147e0Sopenharmony_ci } 149048147e0Sopenharmony_ci .constraintSize({ minHeight: 56, maxHeight:200 }) 150048147e0Sopenharmony_ci .backgroundColor($r('sys.color.ohos_id_color_background')) 151048147e0Sopenharmony_ci .borderRadius($r('app.float.settings_items_radius')) 152048147e0Sopenharmony_ci .padding({ left: 12, right: 12 }) 153048147e0Sopenharmony_ci 154048147e0Sopenharmony_ci Column() { 155048147e0Sopenharmony_ci // Indicates whether to display the recent contact list. 156048147e0Sopenharmony_ci if (this.mReceiveController.isShowSearch && this.mReceiveController.contacts.length > 0 && false) { 157048147e0Sopenharmony_ci // List area 158048147e0Sopenharmony_ci List({ space: 0, initialIndex: 0 }) { 159048147e0Sopenharmony_ci ForEach(this.mReceiveController.contacts, (item, index) => { 160048147e0Sopenharmony_ci ListItem() { 161048147e0Sopenharmony_ci Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) { 162048147e0Sopenharmony_ci Image($rawfile('icon/ic_user_portrait.svg')) 163048147e0Sopenharmony_ci .objectFit(ImageFit.Fill) 164048147e0Sopenharmony_ci .width('40vp') 165048147e0Sopenharmony_ci .height('40vp') 166048147e0Sopenharmony_ci .clip(new Circle({ width: '40vp', height: '40vp' })) 167048147e0Sopenharmony_ci .backgroundColor($r('app.color.ic_user_head_color')) 168048147e0Sopenharmony_ci .onClick(() => { 169048147e0Sopenharmony_ci this.mReceiveController.titleBarAvatar(index) 170048147e0Sopenharmony_ci }) 171048147e0Sopenharmony_ci 172048147e0Sopenharmony_ci Flex({ 173048147e0Sopenharmony_ci direction: FlexDirection.Column, 174048147e0Sopenharmony_ci justifyContent: FlexAlign.Center, 175048147e0Sopenharmony_ci alignItems: ItemAlign.Start 176048147e0Sopenharmony_ci }) { 177048147e0Sopenharmony_ci if (item.contactName != '' || item.contactName != null) { 178048147e0Sopenharmony_ci Text(item.contactName) 179048147e0Sopenharmony_ci .fontSize(16) 180048147e0Sopenharmony_ci .fontColor($r('sys.color.ohos_id_color_text_primary')) 181048147e0Sopenharmony_ci .maxLines(1) 182048147e0Sopenharmony_ci .fontWeight(FontWeight.Medium) 183048147e0Sopenharmony_ci .textOverflow({ overflow: TextOverflow.Ellipsis }) 184048147e0Sopenharmony_ci } 185048147e0Sopenharmony_ci Text(item.telephoneFormat) 186048147e0Sopenharmony_ci .fontColor($r('sys.color.ohos_id_color_text_tertiary')) 187048147e0Sopenharmony_ci .fontSize(14) 188048147e0Sopenharmony_ci .maxLines(1) 189048147e0Sopenharmony_ci .margin({ top: 4 }) 190048147e0Sopenharmony_ci .textOverflow({ overflow: TextOverflow.Ellipsis }) 191048147e0Sopenharmony_ci } 192048147e0Sopenharmony_ci .layoutWeight(1) 193048147e0Sopenharmony_ci .margin({ left: 12 }) 194048147e0Sopenharmony_ci .onClick(() => { 195048147e0Sopenharmony_ci this.mReceiveController.addContact(index, (receiverData) => { 196048147e0Sopenharmony_ci this.mConversationController.setReceiveContactValue(receiverData); 197048147e0Sopenharmony_ci }) 198048147e0Sopenharmony_ci }) 199048147e0Sopenharmony_ci } 200048147e0Sopenharmony_ci .width('100%') 201048147e0Sopenharmony_ci .height(64) 202048147e0Sopenharmony_ci } 203048147e0Sopenharmony_ci }, item => JSON.stringify(item)) 204048147e0Sopenharmony_ci } 205048147e0Sopenharmony_ci .listDirection(Axis.Vertical) // Arrange Direction 206048147e0Sopenharmony_ci .edgeEffect(EdgeEffect.Spring) // Sliding to the edge has no effect 207048147e0Sopenharmony_ci .divider({ 208048147e0Sopenharmony_ci strokeWidth: 1, 209048147e0Sopenharmony_ci color: $r('sys.color.ohos_id_color_list_separator'), 210048147e0Sopenharmony_ci startMargin: 52, 211048147e0Sopenharmony_ci endMargin: 0 212048147e0Sopenharmony_ci }) // Demarcation line between each row 213048147e0Sopenharmony_ci } 214048147e0Sopenharmony_ci }.padding({ left: 12, right: 12, bottom: 56 }) 215048147e0Sopenharmony_ci } 216048147e0Sopenharmony_ci .width('100%') 217048147e0Sopenharmony_ci .padding({ left: 12, right: 12 }) 218048147e0Sopenharmony_ci } 219048147e0Sopenharmony_ci}