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}