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_ci/**
16048147e0Sopenharmony_ci * Message/MMS viewing page
17048147e0Sopenharmony_ci */
18048147e0Sopenharmony_ciimport router from '@system.router';
19048147e0Sopenharmony_ciimport emitter from '@ohos.events.emitter';
20048147e0Sopenharmony_ciimport ConversationController from './conversationController';
21048147e0Sopenharmony_ciimport { Receive } from '../../views/receive/receive';
22048147e0Sopenharmony_ciimport LooseObject from '../../data/LooseObject';
23048147e0Sopenharmony_ciimport { MoreMenu } from '../../views/MmsMenu';
24048147e0Sopenharmony_ciimport { MultiSimCardMenu } from '../../views/MultiSimCardMenu';
25048147e0Sopenharmony_ciimport WantUtil from '../../utils/WantUtil';
26048147e0Sopenharmony_ciimport { DelConversionDialog } from '../../views/MmsDialogs';
27048147e0Sopenharmony_ciimport MmsPreferences from '../../utils/MmsPreferences';
28048147e0Sopenharmony_ciimport common from '../../data/commonData';
29048147e0Sopenharmony_ciimport simCardService from '../../service/SimCardService'
30048147e0Sopenharmony_ci
31048147e0Sopenharmony_ci@Entry
32048147e0Sopenharmony_ci@Component
33048147e0Sopenharmony_ciexport struct Conversation {
34048147e0Sopenharmony_ci    @StorageLink('curBp') curBp: string = 'sm'
35048147e0Sopenharmony_ci    @State mConversationCtrl: ConversationController = ConversationController.getInstance();
36048147e0Sopenharmony_ci    @State slotId: number = MmsPreferences.getInstance().getSelectedSlotId();
37048147e0Sopenharmony_ci    @State cardImage: boolean = MmsPreferences.getInstance().haveMultiSimCardReady();
38048147e0Sopenharmony_ci    private gridColumns: GridRowColumnOption = { sm: 4, md: 8, lg: 12 };
39048147e0Sopenharmony_ci    private timeGirdSpan: GridColColumnOption = { sm: 4, md: 8, lg: 12 };
40048147e0Sopenharmony_ci    private messageGirdSpan: GridColColumnOption = { sm: 4, md: 6, lg: 8 };
41048147e0Sopenharmony_ci    private gridColOffset: GridColColumnOption = { sm: 0, md: 2, lg: 4 };
42048147e0Sopenharmony_ci    private gridGutter: string = '24vp';
43048147e0Sopenharmony_ci    private dialogGridCount: number = 4;
44048147e0Sopenharmony_ci    @Provide menuItems: Array<any> = [
45048147e0Sopenharmony_ci        {
46048147e0Sopenharmony_ci            value: $r('app.string.delete'),
47048147e0Sopenharmony_ci            action: () => {
48048147e0Sopenharmony_ci                this.mConversationCtrl.longPressMore(0);
49048147e0Sopenharmony_ci                if (this.mConversationCtrl.mmsList.length == 1) {
50048147e0Sopenharmony_ci                    this.delConversionController.open();
51048147e0Sopenharmony_ci                }
52048147e0Sopenharmony_ci            },
53048147e0Sopenharmony_ci            enabled: true
54048147e0Sopenharmony_ci        },
55048147e0Sopenharmony_ci        {
56048147e0Sopenharmony_ci            value: $r('app.string.msg_pre_call_editor'),
57048147e0Sopenharmony_ci            action: () => {
58048147e0Sopenharmony_ci                this.mConversationCtrl.longPressMore(3);
59048147e0Sopenharmony_ci            },
60048147e0Sopenharmony_ci            enabled: true
61048147e0Sopenharmony_ci        }
62048147e0Sopenharmony_ci    ];
63048147e0Sopenharmony_ci    /** Message details dialog box */
64048147e0Sopenharmony_ci    dialogController: CustomDialogController = new CustomDialogController({
65048147e0Sopenharmony_ci        builder: DetailsDialog({
66048147e0Sopenharmony_ci            item: this.mConversationCtrl.mmsList[this.mConversationCtrl.mmsIndex],
67048147e0Sopenharmony_ci            receiver: this.mConversationCtrl.strContactsName == ''
68048147e0Sopenharmony_ci                ? this.mConversationCtrl.strContactsNumber :
69048147e0Sopenharmony_ci            this.mConversationCtrl.strContactsName
70048147e0Sopenharmony_ci        }),
71048147e0Sopenharmony_ci        autoCancel: true,
72048147e0Sopenharmony_ci        alignment: DialogAlignment.Bottom,
73048147e0Sopenharmony_ci        offset: { dx: 0, dy: $r('app.float.dialog_bottom_margin') },
74048147e0Sopenharmony_ci        gridCount: this.dialogGridCount
75048147e0Sopenharmony_ci    })
76048147e0Sopenharmony_ci    delConversionController: CustomDialogController = new CustomDialogController({
77048147e0Sopenharmony_ci        builder: DelConversionDialog({
78048147e0Sopenharmony_ci            cancel: () => {
79048147e0Sopenharmony_ci                this.mConversationCtrl.deleteDialogCancel()
80048147e0Sopenharmony_ci            },
81048147e0Sopenharmony_ci            confirm: () => {
82048147e0Sopenharmony_ci                this.mConversationCtrl.deleteDialogConfirm()
83048147e0Sopenharmony_ci            },
84048147e0Sopenharmony_ci            msg: this.mConversationCtrl.strMsgDeleteDialogTip,
85048147e0Sopenharmony_ci        }),
86048147e0Sopenharmony_ci        autoCancel: false,
87048147e0Sopenharmony_ci        alignment: DialogAlignment.Bottom,
88048147e0Sopenharmony_ci        offset: { dx: 0, dy: $r('app.float.dialog_bottom_margin') },
89048147e0Sopenharmony_ci        gridCount: this.dialogGridCount
90048147e0Sopenharmony_ci    });
91048147e0Sopenharmony_ci
92048147e0Sopenharmony_ci    aboutToAppear() {
93048147e0Sopenharmony_ci        this.mConversationCtrl.onInit();
94048147e0Sopenharmony_ci        this.mConversationCtrl.onShow();
95048147e0Sopenharmony_ci        emitter.on(simCardService.SIM_STATE_CHANGE_EVENT, () => {
96048147e0Sopenharmony_ci            this.cardImage = MmsPreferences.getInstance().haveMultiSimCardReady();
97048147e0Sopenharmony_ci        });
98048147e0Sopenharmony_ci        emitter.on(simCardService.SLOTID_CHANGE_EVENT, () => {
99048147e0Sopenharmony_ci            this.slotId = MmsPreferences.getInstance().getSelectedSlotId();
100048147e0Sopenharmony_ci            console.log('receive SLOTID_CHANGE_EVENT, this.slotId: ' + this.slotId);
101048147e0Sopenharmony_ci        });
102048147e0Sopenharmony_ci    }
103048147e0Sopenharmony_ci
104048147e0Sopenharmony_ci    aboutToDisappear() {
105048147e0Sopenharmony_ci        emitter.off(common.int.EVENT_SIM_STATE_CHANGE);
106048147e0Sopenharmony_ci        emitter.off(common.int.EVENT_SLOTID_CHANGE);
107048147e0Sopenharmony_ci
108048147e0Sopenharmony_ci        this.dialogController = null;
109048147e0Sopenharmony_ci        this.delConversionController = null;
110048147e0Sopenharmony_ci    }
111048147e0Sopenharmony_ci
112048147e0Sopenharmony_ci    onPageShow() {
113048147e0Sopenharmony_ci        WantUtil.getWant();
114048147e0Sopenharmony_ci    }
115048147e0Sopenharmony_ci
116048147e0Sopenharmony_ci    onPageHide() {
117048147e0Sopenharmony_ci        this.mConversationCtrl.onHide()
118048147e0Sopenharmony_ci    }
119048147e0Sopenharmony_ci
120048147e0Sopenharmony_ci    onBackPress() {
121048147e0Sopenharmony_ci        return this.mConversationCtrl.onBackPress();
122048147e0Sopenharmony_ci    }
123048147e0Sopenharmony_ci
124048147e0Sopenharmony_ci    build() {
125048147e0Sopenharmony_ci        Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, justifyContent: FlexAlign.SpaceBetween }) {
126048147e0Sopenharmony_ci            Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, justifyContent: FlexAlign.Start }) {
127048147e0Sopenharmony_ci                // <!--Top titleBar-->
128048147e0Sopenharmony_ci                // New page
129048147e0Sopenharmony_ci                if (this.mConversationCtrl.isNewMsg) {
130048147e0Sopenharmony_ci                    Row() {
131048147e0Sopenharmony_ci                        Image($rawfile('icon/ic_message_back.svg'))
132048147e0Sopenharmony_ci                            .width('24vp')
133048147e0Sopenharmony_ci                            .height('24vp')
134048147e0Sopenharmony_ci                            .onClick(() => {
135048147e0Sopenharmony_ci                                // Click Return to restore the status of unselected SMs.
136048147e0Sopenharmony_ci                                if (!this.mConversationCtrl.onBackPress()) {
137048147e0Sopenharmony_ci                                    router.back();
138048147e0Sopenharmony_ci                                }
139048147e0Sopenharmony_ci                            })
140048147e0Sopenharmony_ci                        Row().width($r('app.float.space_16'))
141048147e0Sopenharmony_ci                        Text($r('app.string.new_message'))
142048147e0Sopenharmony_ci                            .fontSize(20)
143048147e0Sopenharmony_ci                            .lineHeight(28)
144048147e0Sopenharmony_ci                            .fontColor($r('sys.color.ohos_id_color_text_primary'))
145048147e0Sopenharmony_ci                            .fontWeight(FontWeight.Bold)
146048147e0Sopenharmony_ci                    }
147048147e0Sopenharmony_ci                    .width('100%')
148048147e0Sopenharmony_ci                    .height(56)
149048147e0Sopenharmony_ci                    .flexShrink(0)
150048147e0Sopenharmony_ci                    .padding({ left: '24vp', right: '24vp' })
151048147e0Sopenharmony_ci                    .zIndex(2)
152048147e0Sopenharmony_ci                    .expandSafeArea([SafeAreaType.KEYBOARD])
153048147e0Sopenharmony_ci                    .backgroundColor($r('sys.color.ohos_id_color_sub_background'))
154048147e0Sopenharmony_ci
155048147e0Sopenharmony_ci                }
156048147e0Sopenharmony_ci                // Page for viewing SMS details
157048147e0Sopenharmony_ci                else {
158048147e0Sopenharmony_ci                    Row() {
159048147e0Sopenharmony_ci                        // Select Status
160048147e0Sopenharmony_ci                        if (this.mConversationCtrl.isSelectStatus) {
161048147e0Sopenharmony_ci                            Row() {
162048147e0Sopenharmony_ci                                Image($rawfile('icon/ic_public_cancel.svg'))
163048147e0Sopenharmony_ci                                    .width(24)
164048147e0Sopenharmony_ci                                    .height(24)
165048147e0Sopenharmony_ci                                    .onClick(() => {
166048147e0Sopenharmony_ci                                        // Click Return to restore the status of unselected SMs.
167048147e0Sopenharmony_ci                                        this.mConversationCtrl.titleBarCancel()
168048147e0Sopenharmony_ci                                    })
169048147e0Sopenharmony_ci                                Text(this.mConversationCtrl.selectDeleteMsgCount == 0
170048147e0Sopenharmony_ci                                    ? $r('app.string.msg_unselected_tip')
171048147e0Sopenharmony_ci                                    : $r('app.string.msg_selected_tip', this.mConversationCtrl.selectDeleteMsgCount))
172048147e0Sopenharmony_ci                                    .margin({ left: 16 })
173048147e0Sopenharmony_ci                                    .fontSize(20)
174048147e0Sopenharmony_ci                                    .fontColor($r('sys.color.ohos_id_color_text_primary'))
175048147e0Sopenharmony_ci                                    .fontWeight(FontWeight.Bold)
176048147e0Sopenharmony_ci                            }
177048147e0Sopenharmony_ci                            .alignItems(VerticalAlign.Center)
178048147e0Sopenharmony_ci                            .width('100%')
179048147e0Sopenharmony_ci                        } else {
180048147e0Sopenharmony_ci                            // Non-Selected Status
181048147e0Sopenharmony_ci                            Row() {
182048147e0Sopenharmony_ci                                Flex({
183048147e0Sopenharmony_ci                                    alignItems: ItemAlign.Center,
184048147e0Sopenharmony_ci                                }) {
185048147e0Sopenharmony_ci                                    Row() {
186048147e0Sopenharmony_ci                                        Image($rawfile('icon/ic_message_back.svg'))
187048147e0Sopenharmony_ci                                            .width(24)
188048147e0Sopenharmony_ci                                            .height(24)
189048147e0Sopenharmony_ci                                            .margin({ right: 16 })
190048147e0Sopenharmony_ci                                            .onClick(() => {
191048147e0Sopenharmony_ci                                                if (!this.mConversationCtrl.onBackPress()) {
192048147e0Sopenharmony_ci                                                    router.back();
193048147e0Sopenharmony_ci                                                }
194048147e0Sopenharmony_ci                                            })
195048147e0Sopenharmony_ci
196048147e0Sopenharmony_ci                                        if (this.mConversationCtrl.strContactsName === '' ||
197048147e0Sopenharmony_ci                                            this.mConversationCtrl.photoFirstName === '-1') {
198048147e0Sopenharmony_ci                                            Image($rawfile('icon/ic_user_portrait.svg'))
199048147e0Sopenharmony_ci                                                .objectFit(ImageFit.Fill)
200048147e0Sopenharmony_ci                                                .width(40)
201048147e0Sopenharmony_ci                                                .height(40)
202048147e0Sopenharmony_ci                                                .clip(new Circle({ width: 40, height: 40 }))
203048147e0Sopenharmony_ci                                                .backgroundColor(this.mConversationCtrl.portraitColor)
204048147e0Sopenharmony_ci                                                .onClick(() => {
205048147e0Sopenharmony_ci                                                    this.mConversationCtrl.titleBarAvatar();
206048147e0Sopenharmony_ci                                                })
207048147e0Sopenharmony_ci                                        } else {
208048147e0Sopenharmony_ci                                            Text(this.mConversationCtrl.photoFirstName)
209048147e0Sopenharmony_ci                                                .fontSize($r('sys.float.ohos_id_text_size_headline8'))
210048147e0Sopenharmony_ci                                                .fontWeight(FontWeight.Medium)
211048147e0Sopenharmony_ci                                                .fontColor(Color.White)
212048147e0Sopenharmony_ci                                                .height('40vp')
213048147e0Sopenharmony_ci                                                .width('40vp')
214048147e0Sopenharmony_ci                                                .textAlign(TextAlign.Center)
215048147e0Sopenharmony_ci                                                .clip(new Circle({ width: '40vp', height: '40vp' }))
216048147e0Sopenharmony_ci                                                .backgroundColor(this.mConversationCtrl.portraitColor)
217048147e0Sopenharmony_ci                                                .onClick(() => {
218048147e0Sopenharmony_ci                                                    this.mConversationCtrl.titleBarAvatar();
219048147e0Sopenharmony_ci                                                })
220048147e0Sopenharmony_ci                                        }
221048147e0Sopenharmony_ci                                    }
222048147e0Sopenharmony_ci                                    .flexBasis(80)
223048147e0Sopenharmony_ci
224048147e0Sopenharmony_ci                                    Column() {
225048147e0Sopenharmony_ci                                        Flex({
226048147e0Sopenharmony_ci                                            direction: FlexDirection.Column,
227048147e0Sopenharmony_ci                                            justifyContent: FlexAlign.Center,
228048147e0Sopenharmony_ci                                            alignItems: ItemAlign.Start
229048147e0Sopenharmony_ci                                        }) {
230048147e0Sopenharmony_ci                                            if (this.mConversationCtrl.contactsNum > 1) {
231048147e0Sopenharmony_ci                                                Text(this.mConversationCtrl.strContactsName)
232048147e0Sopenharmony_ci                                                    .maxLines(1)
233048147e0Sopenharmony_ci                                                    .textOverflow({ overflow: TextOverflow.Ellipsis })
234048147e0Sopenharmony_ci                                                    .fontSize(20)
235048147e0Sopenharmony_ci                                                    .fontColor($r('sys.color.ohos_id_color_text_primary'))
236048147e0Sopenharmony_ci                                                    .fontWeight(FontWeight.Medium)
237048147e0Sopenharmony_ci                                                Text($r('app.string.members', this.mConversationCtrl.contactsNum))
238048147e0Sopenharmony_ci                                                    .maxLines(1)
239048147e0Sopenharmony_ci                                                    .textOverflow({ overflow: TextOverflow.Ellipsis })
240048147e0Sopenharmony_ci                                                    .fontSize(20)
241048147e0Sopenharmony_ci                                                    .fontColor($r('sys.color.ohos_id_color_text_tertiary'))
242048147e0Sopenharmony_ci                                                    .fontWeight(FontWeight.Medium)
243048147e0Sopenharmony_ci                                            } else if (this.mConversationCtrl.strContactsName == '' ||
244048147e0Sopenharmony_ci                                                this.mConversationCtrl.strContactsName == null) {
245048147e0Sopenharmony_ci                                                Text(this.mConversationCtrl.strContactsNumberFormat)
246048147e0Sopenharmony_ci                                                    .maxLines(1)
247048147e0Sopenharmony_ci                                                    .textOverflow({ overflow: TextOverflow.Ellipsis })
248048147e0Sopenharmony_ci                                                    .fontSize(20)
249048147e0Sopenharmony_ci                                                    .fontColor($r('sys.color.ohos_id_color_text_primary'))
250048147e0Sopenharmony_ci                                                    .fontWeight(FontWeight.Medium)
251048147e0Sopenharmony_ci                                            } else {
252048147e0Sopenharmony_ci                                                Text(this.mConversationCtrl.strContactsName.replace(/\s*/g, ''))
253048147e0Sopenharmony_ci                                                    .maxLines(1)
254048147e0Sopenharmony_ci                                                    .textOverflow({ overflow: TextOverflow.Ellipsis })
255048147e0Sopenharmony_ci                                                    .fontSize(20)
256048147e0Sopenharmony_ci                                                    .fontColor($r('sys.color.ohos_id_color_text_primary'))
257048147e0Sopenharmony_ci                                                    .fontWeight(FontWeight.Medium)
258048147e0Sopenharmony_ci                                                    .lineHeight(28)
259048147e0Sopenharmony_ci                                                if (this.mConversationCtrl.strContactsName.replace(/\s*/g, '') !==
260048147e0Sopenharmony_ci                                                this.mConversationCtrl.strContactsNumberFormat) {
261048147e0Sopenharmony_ci                                                    Text(this.mConversationCtrl.strContactsNumberFormat)
262048147e0Sopenharmony_ci                                                        .maxLines(1)
263048147e0Sopenharmony_ci                                                        .textOverflow({ overflow: TextOverflow.Ellipsis })
264048147e0Sopenharmony_ci                                                        .fontSize(20)
265048147e0Sopenharmony_ci                                                        .fontColor($r('sys.color.ohos_id_color_text_tertiary'))
266048147e0Sopenharmony_ci                                                        .lineHeight(19)
267048147e0Sopenharmony_ci                                                        .fontWeight(FontWeight.Medium)
268048147e0Sopenharmony_ci                                                }
269048147e0Sopenharmony_ci                                            }
270048147e0Sopenharmony_ci                                        }
271048147e0Sopenharmony_ci                                    }
272048147e0Sopenharmony_ci                                    .flexGrow(1)
273048147e0Sopenharmony_ci                                    .flexShrink(1)
274048147e0Sopenharmony_ci                                    .alignItems(HorizontalAlign.Start)
275048147e0Sopenharmony_ci                                    .padding({ left: 12, right: 16 })
276048147e0Sopenharmony_ci                                    .margin({
277048147e0Sopenharmony_ci                                        left: this.mConversationCtrl.strContactsNumberFormat.length > 17 ? 25 : 0
278048147e0Sopenharmony_ci                                    })
279048147e0Sopenharmony_ci
280048147e0Sopenharmony_ci                                    Row() {
281048147e0Sopenharmony_ci                                        Image($rawfile('icon/ic_message_phone.svg'))
282048147e0Sopenharmony_ci                                            .width(24)
283048147e0Sopenharmony_ci                                            .height(24)
284048147e0Sopenharmony_ci                                            .onClick(() => {
285048147e0Sopenharmony_ci                                                this.mConversationCtrl.clickCall();
286048147e0Sopenharmony_ci                                            })
287048147e0Sopenharmony_ci                                        Blank().width($r('app.float.space_16'))
288048147e0Sopenharmony_ci                                        Column() {
289048147e0Sopenharmony_ci                                            MoreMenu()
290048147e0Sopenharmony_ci                                        }
291048147e0Sopenharmony_ci                                    }
292048147e0Sopenharmony_ci                                    .flexShrink(0)
293048147e0Sopenharmony_ci                                }.height('100%')
294048147e0Sopenharmony_ci                            }
295048147e0Sopenharmony_ci                            .width('100%')
296048147e0Sopenharmony_ci                        }
297048147e0Sopenharmony_ci                    }
298048147e0Sopenharmony_ci                    .height(56)
299048147e0Sopenharmony_ci                    .constraintSize({ minHeight: 56 })
300048147e0Sopenharmony_ci                    .padding({ left: 24, right: 24 })
301048147e0Sopenharmony_ci                    .zIndex(2)
302048147e0Sopenharmony_ci                    .expandSafeArea([SafeAreaType.KEYBOARD])
303048147e0Sopenharmony_ci                    .backgroundColor($r('sys.color.ohos_id_color_sub_background'))
304048147e0Sopenharmony_ci                }
305048147e0Sopenharmony_ci                // <!--Middle Content Area-->
306048147e0Sopenharmony_ci                Row() {
307048147e0Sopenharmony_ci                    // New Message Content
308048147e0Sopenharmony_ci                    if (this.mConversationCtrl.isNewMsg) {
309048147e0Sopenharmony_ci                        Row() {
310048147e0Sopenharmony_ci                            Receive({ mConversationController: $mConversationCtrl })
311048147e0Sopenharmony_ci                        }
312048147e0Sopenharmony_ci                        .margin({ top: $r("app.float.new_message_margin_top") })
313048147e0Sopenharmony_ci                        .expandSafeArea([SafeAreaType.KEYBOARD])
314048147e0Sopenharmony_ci                        .backgroundColor($r("sys.color.ohos_id_color_sub_background"))
315048147e0Sopenharmony_ci                    }
316048147e0Sopenharmony_ci                    // SMS message content
317048147e0Sopenharmony_ci                    // <!--Information List-->
318048147e0Sopenharmony_ci                    if (!this.mConversationCtrl.isNewMsg) {
319048147e0Sopenharmony_ci                        List({
320048147e0Sopenharmony_ci                            space: 10,
321048147e0Sopenharmony_ci                            initialIndex: this.mConversationCtrl.mmsList.length - 1,
322048147e0Sopenharmony_ci                            scroller: this.mConversationCtrl.scroller
323048147e0Sopenharmony_ci                        }) {
324048147e0Sopenharmony_ci                            ForEach(this.mConversationCtrl.mmsList, (item, index) => {
325048147e0Sopenharmony_ci                                ListItem() {
326048147e0Sopenharmony_ci                                    Row() {
327048147e0Sopenharmony_ci                                        GridRow({ columns: this.gridColumns, gutter: this.gridGutter }) {
328048147e0Sopenharmony_ci                                            // <!--Information Sending Item-->
329048147e0Sopenharmony_ci                                            if (!item.isReceive && !item.isDraft) {
330048147e0Sopenharmony_ci                                                GridCol({ span: this.timeGirdSpan }) {
331048147e0Sopenharmony_ci                                                    Flex({
332048147e0Sopenharmony_ci                                                        direction: FlexDirection.Column,
333048147e0Sopenharmony_ci                                                        justifyContent: FlexAlign.Center,
334048147e0Sopenharmony_ci                                                        alignItems: ItemAlign.Center
335048147e0Sopenharmony_ci                                                    }) {
336048147e0Sopenharmony_ci                                                        // SMS/MMS
337048147e0Sopenharmony_ci                                                        if (index == 0) {
338048147e0Sopenharmony_ci                                                            Text($r('app.string.msg_note_mms'))
339048147e0Sopenharmony_ci                                                                .fontSize(12)
340048147e0Sopenharmony_ci                                                                .lineHeight(16)
341048147e0Sopenharmony_ci                                                                .fontColor($r('sys.color.ohos_id_color_text_secondary'))
342048147e0Sopenharmony_ci                                                                .margin({ bottom: 2 })
343048147e0Sopenharmony_ci                                                        }
344048147e0Sopenharmony_ci                                                        // Time
345048147e0Sopenharmony_ci                                                        if (item.dateShow) {
346048147e0Sopenharmony_ci                                                            Text() {
347048147e0Sopenharmony_ci                                                                Span(item.date)
348048147e0Sopenharmony_ci                                                                    .fontSize(12)
349048147e0Sopenharmony_ci                                                                    .fontColor($r('sys.color.ohos_id_color_text_secondary'))
350048147e0Sopenharmony_ci                                                                Span(item.week)
351048147e0Sopenharmony_ci                                                                    .fontSize(12)
352048147e0Sopenharmony_ci                                                                    .fontColor($r('sys.color.ohos_id_color_text_secondary'))
353048147e0Sopenharmony_ci                                                            }.lineHeight(16).margin({ bottom: 8 })
354048147e0Sopenharmony_ci                                                        }
355048147e0Sopenharmony_ci                                                    }.width('100%')
356048147e0Sopenharmony_ci                                                }
357048147e0Sopenharmony_ci
358048147e0Sopenharmony_ci                                                GridCol({ span: this.messageGirdSpan, offset: this.gridColOffset }) {
359048147e0Sopenharmony_ci                                                    Flex({
360048147e0Sopenharmony_ci                                                        direction: FlexDirection.Column,
361048147e0Sopenharmony_ci                                                        justifyContent: FlexAlign.Center,
362048147e0Sopenharmony_ci                                                        alignItems: ItemAlign.Center
363048147e0Sopenharmony_ci                                                    }) {
364048147e0Sopenharmony_ci                                                        Flex({
365048147e0Sopenharmony_ci                                                            justifyContent: FlexAlign.Center,
366048147e0Sopenharmony_ci                                                            alignItems: ItemAlign.Start
367048147e0Sopenharmony_ci                                                        }) {
368048147e0Sopenharmony_ci                                                            Column() {
369048147e0Sopenharmony_ci                                                                Flex({
370048147e0Sopenharmony_ci                                                                    justifyContent: FlexAlign.End,
371048147e0Sopenharmony_ci                                                                    alignItems: ItemAlign.End
372048147e0Sopenharmony_ci                                                                }) {
373048147e0Sopenharmony_ci                                                                    // <!--Text-->
374048147e0Sopenharmony_ci                                                                    Flex({
375048147e0Sopenharmony_ci                                                                        justifyContent: FlexAlign.End,
376048147e0Sopenharmony_ci                                                                        alignItems: ItemAlign.End
377048147e0Sopenharmony_ci                                                                    }) {
378048147e0Sopenharmony_ci                                                                        // <!--Sending failed icon-->
379048147e0Sopenharmony_ci                                                                        if (!item.isMsm &&
380048147e0Sopenharmony_ci                                                                            ((this.mConversationCtrl.contactsNum == 1 &&
381048147e0Sopenharmony_ci                                                                                item.sendStatus == 2) ||
382048147e0Sopenharmony_ci                                                                                (this.mConversationCtrl.contactsNum > 1 &&
383048147e0Sopenharmony_ci                                                                                    item.failuresNumber > 0 &&
384048147e0Sopenharmony_ci                                                                                    item.completeNumber ==
385048147e0Sopenharmony_ci                                                                                    this.mConversationCtrl.contactsNum))) {
386048147e0Sopenharmony_ci                                                                            Row() {
387048147e0Sopenharmony_ci                                                                                Image($rawfile('icon/ic_send_fail.svg'))
388048147e0Sopenharmony_ci                                                                                    .width(20)
389048147e0Sopenharmony_ci                                                                                    .height(20)
390048147e0Sopenharmony_ci                                                                                    .objectFit(ImageFit.Fill)
391048147e0Sopenharmony_ci                                                                            }
392048147e0Sopenharmony_ci                                                                            .margin({ right: 8 })
393048147e0Sopenharmony_ci                                                                            .padding({ top: 9 })
394048147e0Sopenharmony_ci                                                                        }
395048147e0Sopenharmony_ci                                                                        // Message Bubble
396048147e0Sopenharmony_ci                                                                        bubbleText({
397048147e0Sopenharmony_ci                                                                            conversationCtrl: $mConversationCtrl,
398048147e0Sopenharmony_ci                                                                            bubbleTextBorderRadius: [4, 24],
399048147e0Sopenharmony_ci                                                                            bubbleTextDirection: 'right',
400048147e0Sopenharmony_ci                                                                            content: item.content,
401048147e0Sopenharmony_ci                                                                            bubbleTextBackgroundColor: $r('app.color.sender_bubble'),
402048147e0Sopenharmony_ci                                                                            isShowMsgLongMenu: item.isShowMsgLongMenu,
403048147e0Sopenharmony_ci                                                                            itemIndex: index,
404048147e0Sopenharmony_ci                                                                            delConversionController: this.delConversionController
405048147e0Sopenharmony_ci                                                                        })
406048147e0Sopenharmony_ci                                                                            .constraintSize({ maxWidth: 284 })
407048147e0Sopenharmony_ci                                                                    }
408048147e0Sopenharmony_ci                                                                }
409048147e0Sopenharmony_ci
410048147e0Sopenharmony_ci                                                                // <!--Sending time and sending status-->
411048147e0Sopenharmony_ci                                                                Flex({
412048147e0Sopenharmony_ci                                                                    alignItems: ItemAlign.Center,
413048147e0Sopenharmony_ci                                                                    justifyContent: FlexAlign.End
414048147e0Sopenharmony_ci                                                                }) {
415048147e0Sopenharmony_ci                                                                    if (this.mConversationCtrl.contactsNum == 1 &&
416048147e0Sopenharmony_ci                                                                        item.sendStatus != 1) {
417048147e0Sopenharmony_ci                                                                        Text(item.time)
418048147e0Sopenharmony_ci                                                                            .textAlign(TextAlign.Start)
419048147e0Sopenharmony_ci                                                                            .fontSize(10)
420048147e0Sopenharmony_ci                                                                            .lineHeight(13)
421048147e0Sopenharmony_ci                                                                            .fontColor($r('sys.color.ohos_id_color_text_secondary'))
422048147e0Sopenharmony_ci                                                                            .margin({ top: 8, right: 5 })
423048147e0Sopenharmony_ci                                                                    }
424048147e0Sopenharmony_ci                                                                    // Card 1 or Card 2
425048147e0Sopenharmony_ci                                                                    if (this.cardImage) {
426048147e0Sopenharmony_ci                                                                        Image(item.subId == 0 ?
427048147e0Sopenharmony_ci                                                                        $rawfile('icon/icon_mms_sim_1.svg') :
428048147e0Sopenharmony_ci                                                                        $rawfile('icon/icon_mms_sim_2.svg'))
429048147e0Sopenharmony_ci                                                                            .width(10)
430048147e0Sopenharmony_ci                                                                            .height(10)
431048147e0Sopenharmony_ci                                                                            .margin({ top: 8, right: 5 })
432048147e0Sopenharmony_ci                                                                    }
433048147e0Sopenharmony_ci                                                                    // Locked
434048147e0Sopenharmony_ci                                                                    if (item.isLock) {
435048147e0Sopenharmony_ci                                                                        Image($rawfile('icon/msg_lock.svg'))
436048147e0Sopenharmony_ci                                                                            .width(10)
437048147e0Sopenharmony_ci                                                                            .height(10)
438048147e0Sopenharmony_ci                                                                            .margin({ top: 8, right: 5 })
439048147e0Sopenharmony_ci                                                                    }
440048147e0Sopenharmony_ci                                                                    Text($r('app.string.messageSendFailed'))
441048147e0Sopenharmony_ci                                                                        .textAlign(TextAlign.Start)
442048147e0Sopenharmony_ci                                                                        .fontSize(10)
443048147e0Sopenharmony_ci                                                                        .lineHeight(13)
444048147e0Sopenharmony_ci                                                                        .margin({ top: 8 })
445048147e0Sopenharmony_ci                                                                        .fontColor($r('sys.color.ohos_id_color_warning'))
446048147e0Sopenharmony_ci                                                                        .visibility(item.sendStatus == 2 ?
447048147e0Sopenharmony_ci                                                                        Visibility.Visible : Visibility.None)
448048147e0Sopenharmony_ci                                                                    Text($r('app.string.messageSending'))
449048147e0Sopenharmony_ci                                                                        .textAlign(TextAlign.Start)
450048147e0Sopenharmony_ci                                                                        .fontSize(10)
451048147e0Sopenharmony_ci                                                                        .fontColor($r('sys.color.ohos_id_color_text_secondary'))
452048147e0Sopenharmony_ci                                                                        .lineHeight(13)
453048147e0Sopenharmony_ci                                                                        .margin({ top: 8 })
454048147e0Sopenharmony_ci                                                                        .visibility(item.sendStatus == 1 ?
455048147e0Sopenharmony_ci                                                                        Visibility.Visible : Visibility.None)
456048147e0Sopenharmony_ci                                                                    Text($r('app.string.messageDeliver'))
457048147e0Sopenharmony_ci                                                                        .textAlign(TextAlign.Start)
458048147e0Sopenharmony_ci                                                                        .fontSize(10)
459048147e0Sopenharmony_ci                                                                        .fontColor($r('sys.color.ohos_id_color_text_secondary'))
460048147e0Sopenharmony_ci                                                                        .lineHeight(13)
461048147e0Sopenharmony_ci                                                                        .margin({ top: 8 })
462048147e0Sopenharmony_ci                                                                        .visibility(item.sendStatus == 0 ?
463048147e0Sopenharmony_ci                                                                        Visibility.Visible : Visibility.None)
464048147e0Sopenharmony_ci                                                                }.width('100%').margin({ right: 12 })
465048147e0Sopenharmony_ci                                                            }
466048147e0Sopenharmony_ci                                                            .width('100%')
467048147e0Sopenharmony_ci                                                            .alignItems(HorizontalAlign.End)
468048147e0Sopenharmony_ci
469048147e0Sopenharmony_ci                                                            // Sender's avatar, which is available only for group messages.
470048147e0Sopenharmony_ci                                                            Flex({ direction: FlexDirection.Column,
471048147e0Sopenharmony_ci                                                                justifyContent: FlexAlign.Start,
472048147e0Sopenharmony_ci                                                                alignItems: ItemAlign.Center }) {
473048147e0Sopenharmony_ci                                                                Image($rawfile('icon/user_avatar_full_fill.svg'))
474048147e0Sopenharmony_ci                                                                    .width(30)
475048147e0Sopenharmony_ci                                                                    .height(30)
476048147e0Sopenharmony_ci                                                            }
477048147e0Sopenharmony_ci                                                            .width(50)
478048147e0Sopenharmony_ci                                                            .height(30)
479048147e0Sopenharmony_ci                                                            .visibility(this.mConversationCtrl.contactsNum > 1 ?
480048147e0Sopenharmony_ci                                                            Visibility.Visible : Visibility.None)
481048147e0Sopenharmony_ci                                                        }
482048147e0Sopenharmony_ci                                                    }
483048147e0Sopenharmony_ci                                                    .width('100%')
484048147e0Sopenharmony_ci                                                }
485048147e0Sopenharmony_ci                                            }
486048147e0Sopenharmony_ci                                            // <!--Information receiving item-->
487048147e0Sopenharmony_ci                                            else if (item.isReceive) {
488048147e0Sopenharmony_ci                                                GridCol({ span: this.timeGirdSpan }) {
489048147e0Sopenharmony_ci                                                    // <!--Information receiving item-->
490048147e0Sopenharmony_ci                                                    Flex({
491048147e0Sopenharmony_ci                                                        direction: FlexDirection.Column,
492048147e0Sopenharmony_ci                                                        justifyContent: FlexAlign.Center,
493048147e0Sopenharmony_ci                                                        alignItems: ItemAlign.Center
494048147e0Sopenharmony_ci                                                    }) {
495048147e0Sopenharmony_ci                                                        // SMS/MMS
496048147e0Sopenharmony_ci                                                        if (index == 0) {
497048147e0Sopenharmony_ci                                                            Text($r('app.string.msg_note_mms'))
498048147e0Sopenharmony_ci                                                                .fontSize(12)
499048147e0Sopenharmony_ci                                                                .lineHeight(16)
500048147e0Sopenharmony_ci                                                                .fontColor($r('sys.color.ohos_id_color_text_secondary'))
501048147e0Sopenharmony_ci                                                                .margin({ bottom: 2 })
502048147e0Sopenharmony_ci                                                        }
503048147e0Sopenharmony_ci                                                        // Time
504048147e0Sopenharmony_ci                                                        if (item.dateShow) {
505048147e0Sopenharmony_ci                                                            Text() {
506048147e0Sopenharmony_ci                                                                Span(item.date)
507048147e0Sopenharmony_ci                                                                    .fontSize(12)
508048147e0Sopenharmony_ci                                                                    .fontColor($r('sys.color.ohos_id_color_text_secondary'))
509048147e0Sopenharmony_ci                                                                Span(item.week)
510048147e0Sopenharmony_ci                                                                    .fontSize(12)
511048147e0Sopenharmony_ci                                                                    .fontColor($r('sys.color.ohos_id_color_text_secondary'))
512048147e0Sopenharmony_ci                                                            }.lineHeight(16).margin({ bottom: 8 })
513048147e0Sopenharmony_ci                                                        }
514048147e0Sopenharmony_ci                                                    }.width('100%')
515048147e0Sopenharmony_ci                                                }
516048147e0Sopenharmony_ci
517048147e0Sopenharmony_ci                                                GridCol({ span: this.messageGirdSpan }) {
518048147e0Sopenharmony_ci                                                    Flex({
519048147e0Sopenharmony_ci                                                        direction: FlexDirection.Column,
520048147e0Sopenharmony_ci                                                        justifyContent: FlexAlign.Center,
521048147e0Sopenharmony_ci                                                        alignItems: ItemAlign.Center
522048147e0Sopenharmony_ci                                                    }) {
523048147e0Sopenharmony_ci                                                        Flex({
524048147e0Sopenharmony_ci                                                            justifyContent: FlexAlign.Center,
525048147e0Sopenharmony_ci                                                            alignItems: ItemAlign.Start
526048147e0Sopenharmony_ci                                                        }) {
527048147e0Sopenharmony_ci                                                            Column() {
528048147e0Sopenharmony_ci                                                                Flex({
529048147e0Sopenharmony_ci                                                                    alignItems: ItemAlign.Start,
530048147e0Sopenharmony_ci                                                                    justifyContent: FlexAlign.Start
531048147e0Sopenharmony_ci                                                                }) {
532048147e0Sopenharmony_ci                                                                    // Message Bubble
533048147e0Sopenharmony_ci                                                                    bubbleText({
534048147e0Sopenharmony_ci                                                                        conversationCtrl: $mConversationCtrl,
535048147e0Sopenharmony_ci                                                                        bubbleTextBorderRadius: [4, 24],
536048147e0Sopenharmony_ci                                                                        bubbleTextDirection: 'left',
537048147e0Sopenharmony_ci                                                                        content: item.content,
538048147e0Sopenharmony_ci                                                                        bubbleTextBackgroundColor: $r('sys.color.ohos_id_color_card_bg'),
539048147e0Sopenharmony_ci                                                                        isShowMsgLongMenu: item.isShowMsgLongMenu,
540048147e0Sopenharmony_ci                                                                        itemIndex: index,
541048147e0Sopenharmony_ci                                                                        delConversionController: this.delConversionController
542048147e0Sopenharmony_ci                                                                    })
543048147e0Sopenharmony_ci                                                                        .constraintSize({ maxWidth: 284 })
544048147e0Sopenharmony_ci                                                                }
545048147e0Sopenharmony_ci
546048147e0Sopenharmony_ci                                                                // <!--Sending time and sending status-->
547048147e0Sopenharmony_ci                                                                Flex({
548048147e0Sopenharmony_ci                                                                    alignItems: ItemAlign.Center,
549048147e0Sopenharmony_ci                                                                    justifyContent: FlexAlign.Start
550048147e0Sopenharmony_ci                                                                }) {
551048147e0Sopenharmony_ci                                                                    Text(item.time)
552048147e0Sopenharmony_ci                                                                        .textAlign(TextAlign.Start)
553048147e0Sopenharmony_ci                                                                        .fontSize(10)
554048147e0Sopenharmony_ci                                                                        .lineHeight(13)
555048147e0Sopenharmony_ci                                                                        .fontColor($r('sys.color.ohos_id_color_text_secondary'))
556048147e0Sopenharmony_ci                                                                        .margin({ top: 8, right: 5 })
557048147e0Sopenharmony_ci                                                                    // Card 1 or Card 2
558048147e0Sopenharmony_ci                                                                    if (this.cardImage) {
559048147e0Sopenharmony_ci                                                                        Image(item.subId == 0 ?
560048147e0Sopenharmony_ci                                                                        $rawfile('icon/icon_mms_sim_1.svg') :
561048147e0Sopenharmony_ci                                                                        $rawfile('icon/icon_mms_sim_2.svg'))
562048147e0Sopenharmony_ci                                                                            .width(10)
563048147e0Sopenharmony_ci                                                                            .height(10)
564048147e0Sopenharmony_ci                                                                            .margin({ top: 8, left: 5 })
565048147e0Sopenharmony_ci                                                                    }
566048147e0Sopenharmony_ci                                                                    // Locked
567048147e0Sopenharmony_ci                                                                    if (item.isLock) {
568048147e0Sopenharmony_ci                                                                        Image($rawfile('icon/msg_lock.svg'))
569048147e0Sopenharmony_ci                                                                            .width(10)
570048147e0Sopenharmony_ci                                                                            .height(10)
571048147e0Sopenharmony_ci                                                                            .margin({ top: 8, left: 5 })
572048147e0Sopenharmony_ci                                                                    }
573048147e0Sopenharmony_ci                                                                }.width('70%').margin({ left: 12 })
574048147e0Sopenharmony_ci                                                            }
575048147e0Sopenharmony_ci                                                            .width('100%')
576048147e0Sopenharmony_ci                                                            .alignItems(HorizontalAlign.Start)
577048147e0Sopenharmony_ci                                                        }
578048147e0Sopenharmony_ci                                                    }.width('100%')
579048147e0Sopenharmony_ci                                                }
580048147e0Sopenharmony_ci                                            }
581048147e0Sopenharmony_ci                                        }.layoutWeight(1)
582048147e0Sopenharmony_ci
583048147e0Sopenharmony_ci                                        if (this.mConversationCtrl.isSelectStatus) {
584048147e0Sopenharmony_ci                                            Row() {
585048147e0Sopenharmony_ci                                                Toggle({
586048147e0Sopenharmony_ci                                                    type: ToggleType.Checkbox,
587048147e0Sopenharmony_ci                                                    isOn: item.isCbChecked
588048147e0Sopenharmony_ci                                                })
589048147e0Sopenharmony_ci                                                    .selectedColor($r('sys.color.ohos_id_color_activated'))
590048147e0Sopenharmony_ci                                                    .width(24)
591048147e0Sopenharmony_ci                                                    .height(24)
592048147e0Sopenharmony_ci                                                    .onChange(((isOn: boolean) => {
593048147e0Sopenharmony_ci                                                        this.mConversationCtrl.listCheckBoxChange(index, isOn)
594048147e0Sopenharmony_ci                                                    }))
595048147e0Sopenharmony_ci                                            }
596048147e0Sopenharmony_ci                                            .margin({ left: 4 })
597048147e0Sopenharmony_ci                                            .width(48)
598048147e0Sopenharmony_ci                                            .height(48)
599048147e0Sopenharmony_ci                                        }
600048147e0Sopenharmony_ci                                    }
601048147e0Sopenharmony_ci                                    .padding(this.curBp === 'sm' ? { left: 16, right: 16 } : { left: 24, right: 24 })
602048147e0Sopenharmony_ci                                    .width('100%')
603048147e0Sopenharmony_ci                                    .alignItems(VerticalAlign.Center)
604048147e0Sopenharmony_ci                                }.onClick(() => {
605048147e0Sopenharmony_ci                                    if (this.mConversationCtrl.isSelectStatus) {
606048147e0Sopenharmony_ci                                        this.mConversationCtrl.listCheckBoxChange(index,!item.isCbChecked)
607048147e0Sopenharmony_ci                                    }
608048147e0Sopenharmony_ci                                })
609048147e0Sopenharmony_ci                                .padding(index == this.mConversationCtrl.mmsList.length - 1 ? { bottom: 20 } : null)
610048147e0Sopenharmony_ci                            }, item => JSON.stringify(item))
611048147e0Sopenharmony_ci                        }
612048147e0Sopenharmony_ci                        .listDirection(Axis.Vertical) // Arrange Direction
613048147e0Sopenharmony_ci                        .edgeEffect(EdgeEffect.Spring) // Sliding to the edge has no effect
614048147e0Sopenharmony_ci                        .width('100%')
615048147e0Sopenharmony_ci                        .margin({ top: 16 })
616048147e0Sopenharmony_ci                    }
617048147e0Sopenharmony_ci                }
618048147e0Sopenharmony_ci                .width('100%')
619048147e0Sopenharmony_ci                .flexBasis('auto')
620048147e0Sopenharmony_ci                .flexShrink(1)
621048147e0Sopenharmony_ci            }
622048147e0Sopenharmony_ci            .width('100%')
623048147e0Sopenharmony_ci
624048147e0Sopenharmony_ci            // Input box at the bottom
625048147e0Sopenharmony_ci            Flex({ direction: FlexDirection.Row, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Start }) {
626048147e0Sopenharmony_ci                // More options at the bottom
627048147e0Sopenharmony_ci                if (this.mConversationCtrl.isSelectStatus && !this.mConversationCtrl.hasDetailDelete) {
628048147e0Sopenharmony_ci                    /** The Info button is checked at the bottom. */
629048147e0Sopenharmony_ci                    Flex({
630048147e0Sopenharmony_ci                        direction: FlexDirection.Row,
631048147e0Sopenharmony_ci                        alignItems: ItemAlign.Center,
632048147e0Sopenharmony_ci                        justifyContent: FlexAlign.SpaceBetween
633048147e0Sopenharmony_ci                    }) {
634048147e0Sopenharmony_ci                        /** Delete */
635048147e0Sopenharmony_ci                        Column() {
636048147e0Sopenharmony_ci                            Image($rawfile('icon/ic_public_delete.svg'))
637048147e0Sopenharmony_ci                                .width(24)
638048147e0Sopenharmony_ci                                .height(24)
639048147e0Sopenharmony_ci                            Text($r('app.string.delete'))
640048147e0Sopenharmony_ci                                .fontSize(10)
641048147e0Sopenharmony_ci                                .margin({ top: 3 })
642048147e0Sopenharmony_ci                                .lineHeight(14)
643048147e0Sopenharmony_ci                                .fontWeight(FontWeight.Medium)
644048147e0Sopenharmony_ci                                .fontColor($r('sys.color.ohos_id_color_text_primary'))
645048147e0Sopenharmony_ci                        }.width('25%').opacity(this.mConversationCtrl.selectDeleteMsgCount == 0 ? 0.4 : 1)
646048147e0Sopenharmony_ci                        .onClick(() => {
647048147e0Sopenharmony_ci                            if (this.mConversationCtrl.selectDeleteMsgCount != 0) {
648048147e0Sopenharmony_ci                                this.mConversationCtrl.clickGroupDelete();
649048147e0Sopenharmony_ci                                this.delConversionController.open();
650048147e0Sopenharmony_ci                            }
651048147e0Sopenharmony_ci                        })
652048147e0Sopenharmony_ci
653048147e0Sopenharmony_ci                        Column() {
654048147e0Sopenharmony_ci                            Image(this.mConversationCtrl.isMessageCheckAll ? $rawfile('icon/ic_select_all_filled.svg')
655048147e0Sopenharmony_ci                                : $rawfile('icon/ic_select_all.svg'))
656048147e0Sopenharmony_ci                                .width(24)
657048147e0Sopenharmony_ci                                .height(24)
658048147e0Sopenharmony_ci                            Text(this.mConversationCtrl.isMessageCheckAll ? $r('app.string.msg_deselect_all')
659048147e0Sopenharmony_ci                                : $r('app.string.msg_select_all')) {
660048147e0Sopenharmony_ci                            }
661048147e0Sopenharmony_ci                            .fontSize(10)
662048147e0Sopenharmony_ci                            .margin({ top: 3 })
663048147e0Sopenharmony_ci                            .lineHeight(14)
664048147e0Sopenharmony_ci                            .fontWeight(FontWeight.Medium)
665048147e0Sopenharmony_ci                            .fontColor(this.mConversationCtrl.isMessageCheckAll ?
666048147e0Sopenharmony_ci                            $r('sys.color.ohos_id_color_subtab_text_on') : $r('sys.color.ohos_id_color_text_primary'))
667048147e0Sopenharmony_ci                        }.width('25%')
668048147e0Sopenharmony_ci                        .onClick(() => {
669048147e0Sopenharmony_ci                            this.mConversationCtrl.clickGroupCheckAll()
670048147e0Sopenharmony_ci                        })
671048147e0Sopenharmony_ci
672048147e0Sopenharmony_ci                        /** more */
673048147e0Sopenharmony_ci                        Column() {
674048147e0Sopenharmony_ci                            Image($rawfile('icon/ic_message_more1.svg'))
675048147e0Sopenharmony_ci                                .width(24)
676048147e0Sopenharmony_ci                                .height(24)
677048147e0Sopenharmony_ci                            Text($r('app.string.more')) {
678048147e0Sopenharmony_ci                            }
679048147e0Sopenharmony_ci                            .fontSize(10)
680048147e0Sopenharmony_ci                            .margin({ top: 3 })
681048147e0Sopenharmony_ci                            .lineHeight(14)
682048147e0Sopenharmony_ci                            .fontWeight(FontWeight.Medium)
683048147e0Sopenharmony_ci                            .fontColor($r('sys.color.ohos_id_color_text_primary'))
684048147e0Sopenharmony_ci                        }
685048147e0Sopenharmony_ci                        .width('25%')
686048147e0Sopenharmony_ci                        .enabled(this.mConversationCtrl.selectDeleteMsgCount == 1 ? true : false)
687048147e0Sopenharmony_ci                        // @ts-ignore
688048147e0Sopenharmony_ci                        .bindMenu(this.MenuBuilder)
689048147e0Sopenharmony_ci                    }
690048147e0Sopenharmony_ci                    .width('100%')
691048147e0Sopenharmony_ci                    .height(56)
692048147e0Sopenharmony_ci                }
693048147e0Sopenharmony_ci                // <!--Bottom Send Bar-->
694048147e0Sopenharmony_ci                if (!this.mConversationCtrl.isSelectStatus) {
695048147e0Sopenharmony_ci                    Flex({ alignItems: ItemAlign.End, justifyContent: FlexAlign.Center }) {
696048147e0Sopenharmony_ci                        // <!--Left More and Full Screen Display-->
697048147e0Sopenharmony_ci                        Row() {
698048147e0Sopenharmony_ci                            Image($rawfile('icon/msg_add.svg'))
699048147e0Sopenharmony_ci                                .onClick(() => {
700048147e0Sopenharmony_ci
701048147e0Sopenharmony_ci                                })
702048147e0Sopenharmony_ci                                .width(24)
703048147e0Sopenharmony_ci                                .height(24)
704048147e0Sopenharmony_ci                                .visibility(Visibility.Visible)
705048147e0Sopenharmony_ci                                .opacity(0.3)
706048147e0Sopenharmony_ci                            Blank().width(16)
707048147e0Sopenharmony_ci                            Row() {
708048147e0Sopenharmony_ci                                if (this.cardImage) {
709048147e0Sopenharmony_ci                                    MultiSimCardMenu({
710048147e0Sopenharmony_ci                                        slotId: this.slotId
711048147e0Sopenharmony_ci                                    })
712048147e0Sopenharmony_ci                                }
713048147e0Sopenharmony_ci                                Row() {
714048147e0Sopenharmony_ci                                    TextArea({
715048147e0Sopenharmony_ci                                        placeholder: $r('app.string.msg_note_mms'),
716048147e0Sopenharmony_ci                                        text: this.mConversationCtrl.textValue
717048147e0Sopenharmony_ci                                    })
718048147e0Sopenharmony_ci                                        .placeholderColor($r('sys.color.ohos_id_color_text_hint'))
719048147e0Sopenharmony_ci                                        .caretColor($r('sys.color.ohos_id_color_focused_outline'))
720048147e0Sopenharmony_ci                                        .backgroundColor($r('sys.color.ohos_id_color_background_transparent'))
721048147e0Sopenharmony_ci                                        .onChange(value => {
722048147e0Sopenharmony_ci                                            this.mConversationCtrl.changeValue(value);
723048147e0Sopenharmony_ci                                        })
724048147e0Sopenharmony_ci                                        .padding({ left: 0, right: this.cardImage ? 42 : 0 })
725048147e0Sopenharmony_ci                                        .borderRadius(0)
726048147e0Sopenharmony_ci                                        .fontSize(16)
727048147e0Sopenharmony_ci                                }.constraintSize({ minHeight: 40 })
728048147e0Sopenharmony_ci                            }
729048147e0Sopenharmony_ci                            .backgroundColor($r('sys.color.ohos_id_color_text_field_sub_bg'))
730048147e0Sopenharmony_ci                            .padding({ left: 8, right: 8 })
731048147e0Sopenharmony_ci                            .borderRadius(20)
732048147e0Sopenharmony_ci                            .width('100%')
733048147e0Sopenharmony_ci                            .layoutWeight(1)
734048147e0Sopenharmony_ci
735048147e0Sopenharmony_ci                            Image($rawfile('icon/ic_message_emoji.svg'))
736048147e0Sopenharmony_ci                                .width(24)
737048147e0Sopenharmony_ci                                .height(24)
738048147e0Sopenharmony_ci                                .margin({ left: 16 })
739048147e0Sopenharmony_ci                                .visibility(Visibility.Visible)
740048147e0Sopenharmony_ci                                .opacity(0.3)
741048147e0Sopenharmony_ci                            // <!--send-->
742048147e0Sopenharmony_ci                            Image(this.mConversationCtrl.canSendMessage ? $rawfile('icon/ic_message_send_filled.svg')
743048147e0Sopenharmony_ci                                : $rawfile('icon/ic_message_send.svg'))
744048147e0Sopenharmony_ci                                .onClick(() => {
745048147e0Sopenharmony_ci                                    //  Click Send.
746048147e0Sopenharmony_ci                                    this.mConversationCtrl.send();
747048147e0Sopenharmony_ci                                })
748048147e0Sopenharmony_ci                                .width(24)
749048147e0Sopenharmony_ci                                .height(24)
750048147e0Sopenharmony_ci                                .margin({ left: 16 })
751048147e0Sopenharmony_ci                        }.width('100%')
752048147e0Sopenharmony_ci                    }
753048147e0Sopenharmony_ci                    .constraintSize({ minHeight: 56 })
754048147e0Sopenharmony_ci                    .width('100%').padding({ bottom: 8, top: 8 })
755048147e0Sopenharmony_ci                }
756048147e0Sopenharmony_ci            }
757048147e0Sopenharmony_ci            .width('100%')
758048147e0Sopenharmony_ci            .padding({
759048147e0Sopenharmony_ci                left: this.mConversationCtrl.isSelectStatus && !this.mConversationCtrl.hasDetailDelete ? 0 :
760048147e0Sopenharmony_ci                $r('app.float.space_24'),
761048147e0Sopenharmony_ci                right: this.mConversationCtrl.isSelectStatus && !this.mConversationCtrl.hasDetailDelete ? 0 :
762048147e0Sopenharmony_ci                $r('app.float.bottom_send_bar_padding_right')
763048147e0Sopenharmony_ci            })
764048147e0Sopenharmony_ci            .clip(new Rect({
765048147e0Sopenharmony_ci                width: '100%',
766048147e0Sopenharmony_ci                height: '100%',
767048147e0Sopenharmony_ci                radius: this.mConversationCtrl.isSelectStatus ? [] : [[20, 20], [20, 20], [0, 0], [0, 0]]
768048147e0Sopenharmony_ci            }))
769048147e0Sopenharmony_ci            .backgroundColor(this.mConversationCtrl.isSelectStatus && !this.mConversationCtrl.hasDetailDelete ?
770048147e0Sopenharmony_ci                null : $r('sys.color.ohos_id_color_toolbar_bg'))
771048147e0Sopenharmony_ci        }
772048147e0Sopenharmony_ci        .backgroundColor($r('sys.color.ohos_id_color_sub_background'))
773048147e0Sopenharmony_ci        .width('100%')
774048147e0Sopenharmony_ci        .height('100%')
775048147e0Sopenharmony_ci    }
776048147e0Sopenharmony_ci
777048147e0Sopenharmony_ci    @Builder
778048147e0Sopenharmony_ci    MenuBuilder() {
779048147e0Sopenharmony_ci        Column() {
780048147e0Sopenharmony_ci            Row() {
781048147e0Sopenharmony_ci                Text($r('app.string.query_details'))
782048147e0Sopenharmony_ci                    .lineHeight(22)
783048147e0Sopenharmony_ci                    .fontSize(16)
784048147e0Sopenharmony_ci                    .fontColor($r('sys.color.ohos_id_color_text_primary'))
785048147e0Sopenharmony_ci                    .margin({ left: 16, top: 13, bottom: 13 })
786048147e0Sopenharmony_ci            }
787048147e0Sopenharmony_ci            .width('100%')
788048147e0Sopenharmony_ci            .height(48)
789048147e0Sopenharmony_ci            .onClick(() => {
790048147e0Sopenharmony_ci                this.dialogController.open()
791048147e0Sopenharmony_ci                this.mConversationCtrl.isSelectStatus = !this.mConversationCtrl.isSelectStatus
792048147e0Sopenharmony_ci                this.mConversationCtrl.isMessageCheckAll = false
793048147e0Sopenharmony_ci                this.mConversationCtrl.cancelCheckedAll()
794048147e0Sopenharmony_ci            })
795048147e0Sopenharmony_ci
796048147e0Sopenharmony_ci            if (this.mConversationCtrl.hasReport) {
797048147e0Sopenharmony_ci                Divider()
798048147e0Sopenharmony_ci                    .margin({ left: 16, right: 16 })
799048147e0Sopenharmony_ci                    .strokeWidth(0.5)
800048147e0Sopenharmony_ci                    .color($r('sys.color.ohos_id_color_list_separator'))
801048147e0Sopenharmony_ci
802048147e0Sopenharmony_ci                Row() {
803048147e0Sopenharmony_ci                    Text($r('app.string.query_report'))
804048147e0Sopenharmony_ci                        .lineHeight(22)
805048147e0Sopenharmony_ci                        .fontSize(16)
806048147e0Sopenharmony_ci                        .fontColor($r('sys.color.ohos_id_color_text_primary'))
807048147e0Sopenharmony_ci                        .margin({ left: 16, top: 13, bottom: 13 })
808048147e0Sopenharmony_ci                }.height(48)
809048147e0Sopenharmony_ci                .onClick(() => {
810048147e0Sopenharmony_ci                    this.mConversationCtrl.moreSelected(6)
811048147e0Sopenharmony_ci                })
812048147e0Sopenharmony_ci            }
813048147e0Sopenharmony_ci        }.borderRadius(24)
814048147e0Sopenharmony_ci        .width(145)
815048147e0Sopenharmony_ci        .alignItems(HorizontalAlign.Start)
816048147e0Sopenharmony_ci    }
817048147e0Sopenharmony_ci}
818048147e0Sopenharmony_ci
819048147e0Sopenharmony_ci@CustomDialog
820048147e0Sopenharmony_cistruct DetailsDialog {
821048147e0Sopenharmony_ci    controller: CustomDialogController
822048147e0Sopenharmony_ci    item: LooseObject
823048147e0Sopenharmony_ci    receiver: string
824048147e0Sopenharmony_ci
825048147e0Sopenharmony_ci    build() {
826048147e0Sopenharmony_ci        Column() {
827048147e0Sopenharmony_ci            Text($r('app.string.msgDetails'))
828048147e0Sopenharmony_ci                .fontSize(20)
829048147e0Sopenharmony_ci                .lineHeight(28)
830048147e0Sopenharmony_ci                .fontColor($r('sys.color.ohos_id_color_text_primary'))
831048147e0Sopenharmony_ci                .fontWeight(FontWeight.Bold)
832048147e0Sopenharmony_ci                .fontFamily('HarmonyHeiTi')
833048147e0Sopenharmony_ci                .margin({ top: 14, bottom: 14 })
834048147e0Sopenharmony_ci            Text() {
835048147e0Sopenharmony_ci                Span($r('app.string.type')).fontSize(16)
836048147e0Sopenharmony_ci                Span($r('app.string.sms')).fontSize(16)
837048147e0Sopenharmony_ci            }
838048147e0Sopenharmony_ci            .fontSize(16)
839048147e0Sopenharmony_ci            .fontColor($r('sys.color.ohos_id_color_text_primary'))
840048147e0Sopenharmony_ci            .margin({ bottom: 4 })
841048147e0Sopenharmony_ci            .fontFamily('HarmonyHeiTi')
842048147e0Sopenharmony_ci
843048147e0Sopenharmony_ci            Text() {
844048147e0Sopenharmony_ci                Span(this.item.isReceive ? $r('app.string.sender') : $r('app.string.putAddresser')).fontSize(16)
845048147e0Sopenharmony_ci                Span(this.receiver).fontSize(16)
846048147e0Sopenharmony_ci            }
847048147e0Sopenharmony_ci            .fontSize(16)
848048147e0Sopenharmony_ci            .fontColor($r('sys.color.ohos_id_color_text_primary'))
849048147e0Sopenharmony_ci            .margin({ bottom: 4 })
850048147e0Sopenharmony_ci            .fontFamily('HarmonyHeiTi')
851048147e0Sopenharmony_ci
852048147e0Sopenharmony_ci            Text() {
853048147e0Sopenharmony_ci                Span($r('app.string.sendTime')).fontSize(16)
854048147e0Sopenharmony_ci                Span(this.item.fullDate).fontSize(16)
855048147e0Sopenharmony_ci                Span(this.item.timeOfSms).fontSize(16)
856048147e0Sopenharmony_ci            }
857048147e0Sopenharmony_ci            .fontSize(16)
858048147e0Sopenharmony_ci            .fontColor($r('sys.color.ohos_id_color_text_primary'))
859048147e0Sopenharmony_ci            .margin({ bottom: 8 })
860048147e0Sopenharmony_ci            .fontFamily('HarmonyHeiTi')
861048147e0Sopenharmony_ci
862048147e0Sopenharmony_ci            Flex({ justifyContent: FlexAlign.Center }) {
863048147e0Sopenharmony_ci                Button() {
864048147e0Sopenharmony_ci                    Text($r('app.string.msg_know'))
865048147e0Sopenharmony_ci                        .fontFamily('HarmonyHeiTi')
866048147e0Sopenharmony_ci                        .fontWeight(FontWeight.Medium)
867048147e0Sopenharmony_ci                        .fontSize(16)
868048147e0Sopenharmony_ci                        .fontColor($r('sys.color.ohos_id_color_floating_button_bg_normal'))
869048147e0Sopenharmony_ci                }
870048147e0Sopenharmony_ci                .width(200)
871048147e0Sopenharmony_ci                .backgroundColor(Color.Transparent)
872048147e0Sopenharmony_ci                .margin({ top: 5 })
873048147e0Sopenharmony_ci                .onClick(() => {
874048147e0Sopenharmony_ci                    this.controller.close()
875048147e0Sopenharmony_ci                })
876048147e0Sopenharmony_ci            }.height(40)
877048147e0Sopenharmony_ci        }
878048147e0Sopenharmony_ci        .borderRadius(24)
879048147e0Sopenharmony_ci        .padding({ left: 24, right: 24, bottom: 16 })
880048147e0Sopenharmony_ci        .alignItems(HorizontalAlign.Start)
881048147e0Sopenharmony_ci    }
882048147e0Sopenharmony_ci}
883048147e0Sopenharmony_ci
884048147e0Sopenharmony_ci// Custom Chat Bubble
885048147e0Sopenharmony_ci@Component
886048147e0Sopenharmony_cistruct bubbleText {
887048147e0Sopenharmony_ci    @Link conversationCtrl: ConversationController;
888048147e0Sopenharmony_ci    private delConversionController: any;
889048147e0Sopenharmony_ci    private bubbleTextBorderRadius: Array<number>; // Fillet size, two parameters in total
890048147e0Sopenharmony_ci    private bubbleTextDirection: string; // left: upper left corner right: upper right corner
891048147e0Sopenharmony_ci    private content: string; // Bubble Display Content
892048147e0Sopenharmony_ci    private bubbleTextBackgroundColor: Resource | string; // Bubble background color
893048147e0Sopenharmony_ci    private isShowMsgLongMenu: boolean;
894048147e0Sopenharmony_ci    private itemIndex: number;
895048147e0Sopenharmony_ci    @State showMenu: boolean = false
896048147e0Sopenharmony_ci
897048147e0Sopenharmony_ci    aboutToAppear() {
898048147e0Sopenharmony_ci        this.showMenu = this.isShowMsgLongMenu
899048147e0Sopenharmony_ci    }
900048147e0Sopenharmony_ci
901048147e0Sopenharmony_ci    @Builder
902048147e0Sopenharmony_ci    MenuBuilder() {
903048147e0Sopenharmony_ci        Row() {
904048147e0Sopenharmony_ci            Button($r('app.string.msg_transmit'))
905048147e0Sopenharmony_ci                .fontSize(14)
906048147e0Sopenharmony_ci                .fontColor($r('sys.color.ohos_id_color_text_primary'))
907048147e0Sopenharmony_ci                .backgroundColor($r('sys.color.ohos_id_color_dialog_bg'))
908048147e0Sopenharmony_ci                .onClick(() => {
909048147e0Sopenharmony_ci                    this.conversationCtrl.longPressSelected(1)
910048147e0Sopenharmony_ci                    this.showMenu = false
911048147e0Sopenharmony_ci                })
912048147e0Sopenharmony_ci            Button($r('app.string.delete'))
913048147e0Sopenharmony_ci                .fontSize(14)
914048147e0Sopenharmony_ci                .fontColor($r('sys.color.ohos_id_color_text_primary'))
915048147e0Sopenharmony_ci                .backgroundColor($r('sys.color.ohos_id_color_dialog_bg'))
916048147e0Sopenharmony_ci                .onClick(() => {
917048147e0Sopenharmony_ci                    this.conversationCtrl.longPressSelected(2)
918048147e0Sopenharmony_ci                    this.showMenu = false
919048147e0Sopenharmony_ci                    this.delConversionController.open();
920048147e0Sopenharmony_ci                })
921048147e0Sopenharmony_ci            Button($r('app.string.more'))
922048147e0Sopenharmony_ci                .fontSize(14)
923048147e0Sopenharmony_ci                .fontColor($r('sys.color.ohos_id_color_text_primary'))
924048147e0Sopenharmony_ci                .backgroundColor($r('sys.color.ohos_id_color_dialog_bg'))
925048147e0Sopenharmony_ci                .onClick(() => {
926048147e0Sopenharmony_ci                    this.conversationCtrl.longPressSelected(4)
927048147e0Sopenharmony_ci                    this.showMenu = false
928048147e0Sopenharmony_ci                })
929048147e0Sopenharmony_ci        }
930048147e0Sopenharmony_ci        .height(40)
931048147e0Sopenharmony_ci        .borderRadius(20)
932048147e0Sopenharmony_ci        .backgroundColor($r('sys.color.ohos_id_color_dialog_bg'))
933048147e0Sopenharmony_ci    }
934048147e0Sopenharmony_ci
935048147e0Sopenharmony_ci    build() {
936048147e0Sopenharmony_ci        Row() {
937048147e0Sopenharmony_ci            Text(this.content)
938048147e0Sopenharmony_ci                .fontSize(16)
939048147e0Sopenharmony_ci                .lineHeight(21)
940048147e0Sopenharmony_ci                .padding({ left: 12, right: 12, top: 8, bottom: 8 })
941048147e0Sopenharmony_ci                .fontColor($r('sys.color.ohos_id_color_text_primary'))
942048147e0Sopenharmony_ci        }
943048147e0Sopenharmony_ci        .backgroundColor(this.bubbleTextBackgroundColor)
944048147e0Sopenharmony_ci        .borderRadius(this.bubbleTextDirection == 'right' ?
945048147e0Sopenharmony_ci            { topLeft: this.bubbleTextBorderRadius[1], topRight: this.bubbleTextBorderRadius[0],
946048147e0Sopenharmony_ci                bottomLeft: this.bubbleTextBorderRadius[1], bottomRight: this.bubbleTextBorderRadius[1] } :
947048147e0Sopenharmony_ci            { topLeft: this.bubbleTextBorderRadius[0], topRight: this.bubbleTextBorderRadius[1],
948048147e0Sopenharmony_ci                bottomLeft: this.bubbleTextBorderRadius[1], bottomRight: this.bubbleTextBorderRadius[1] })
949048147e0Sopenharmony_ci        .flexBasis('auto')
950048147e0Sopenharmony_ci        .gesture(
951048147e0Sopenharmony_ci            LongPressGesture({
952048147e0Sopenharmony_ci                repeat: false,
953048147e0Sopenharmony_ci                duration: 500
954048147e0Sopenharmony_ci            })//Touch and hold the action will be triggered continuously.
955048147e0Sopenharmony_ci                .onAction(() => {
956048147e0Sopenharmony_ci                    if (!this.conversationCtrl.isSelectStatus) {
957048147e0Sopenharmony_ci                        this.conversationCtrl.mmsListLongPress(this.itemIndex)
958048147e0Sopenharmony_ci                        this.showMenu = true
959048147e0Sopenharmony_ci                    }
960048147e0Sopenharmony_ci                })
961048147e0Sopenharmony_ci        )
962048147e0Sopenharmony_ci        .bindPopup(this.showMenu, {
963048147e0Sopenharmony_ci            builder: this.MenuBuilder,
964048147e0Sopenharmony_ci            placement: this.bubbleTextDirection == 'left' ? Placement.TopRight : Placement.TopLeft,
965048147e0Sopenharmony_ci            maskColor: $r('sys.color.ohos_id_color_mask_thin'),
966048147e0Sopenharmony_ci            popupColor: $r('sys.color.ohos_id_color_background_transparent'),
967048147e0Sopenharmony_ci            enableArrow: false,
968048147e0Sopenharmony_ci            onStateChange: (e) => {
969048147e0Sopenharmony_ci                if (!e.isVisible) {
970048147e0Sopenharmony_ci                    this.showMenu = false
971048147e0Sopenharmony_ci                }
972048147e0Sopenharmony_ci            }
973048147e0Sopenharmony_ci        })
974048147e0Sopenharmony_ci    }
975048147e0Sopenharmony_ci}