1d5a52cc2Sopenharmony_ci/*
2d5a52cc2Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3d5a52cc2Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4d5a52cc2Sopenharmony_ci * you may not use this file except in compliance with the License.
5d5a52cc2Sopenharmony_ci * You may obtain a copy of the License at
6d5a52cc2Sopenharmony_ci *
7d5a52cc2Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8d5a52cc2Sopenharmony_ci *
9d5a52cc2Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10d5a52cc2Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11d5a52cc2Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12d5a52cc2Sopenharmony_ci * See the License for the specific language governing permissions and
13d5a52cc2Sopenharmony_ci * limitations under the License.
14d5a52cc2Sopenharmony_ci */
15d5a52cc2Sopenharmony_ci
16d5a52cc2Sopenharmony_ciimport DateUtil from '@ohos/utils/src/main/ets/default/baseUtil/DateUtil'
17d5a52cc2Sopenharmony_ciimport RdbStoreUtil from '@ohos/utils/src/main/ets/default/baseUtil/RdbStoreUtil'
18d5a52cc2Sopenharmony_ciimport FolderData from '@ohos/utils/src/main/ets/default/model/databaseModel/FolderData'
19d5a52cc2Sopenharmony_ciimport NoteData from '@ohos/utils/src/main/ets/default/model/databaseModel/NoteData'
20d5a52cc2Sopenharmony_ciimport util from '@ohos.util'
21d5a52cc2Sopenharmony_ciimport {
22d5a52cc2Sopenharmony_ci  TableName,
23d5a52cc2Sopenharmony_ci  NoteTableColumn,
24d5a52cc2Sopenharmony_ci  SysDefFolderUuid,
25d5a52cc2Sopenharmony_ci  Favorite,
26d5a52cc2Sopenharmony_ci  Delete
27d5a52cc2Sopenharmony_ci} from '@ohos/utils/src/main/ets/default/model/databaseModel/EnumData'
28d5a52cc2Sopenharmony_ciimport StyleConstants from '@ohos/utils/src/main/ets/default/constants/StyleConstants'
29d5a52cc2Sopenharmony_ciimport { EditContentDialog, EditTitleDialog } from './CusDialogComp'
30d5a52cc2Sopenharmony_ciimport FolderUtil from '@ohos/utils/src/main/ets/default/baseUtil/FolderUtil'
31d5a52cc2Sopenharmony_ciimport NoteUtil from '@ohos/utils/src/main/ets/default/baseUtil/NoteUtil'
32d5a52cc2Sopenharmony_ciimport { LogUtil } from '@ohos/utils/src/main/ets/default/baseUtil/LogUtil'
33d5a52cc2Sopenharmony_ciimport OperationUtils from '@ohos/utils/src/main/ets/default/baseUtil/OperationUtils'
34d5a52cc2Sopenharmony_ciimport router from '@system.router';
35d5a52cc2Sopenharmony_ciimport inputMethod from '@ohos.inputMethod';
36d5a52cc2Sopenharmony_ciimport { folderTextMap } from '@ohos/utils/src/main/ets/default/model/NoteBaseData'
37d5a52cc2Sopenharmony_ciimport webview from '@ohos.web.webview';
38d5a52cc2Sopenharmony_ci
39d5a52cc2Sopenharmony_ciconst TAG = "NoteContent"
40d5a52cc2Sopenharmony_ci
41d5a52cc2Sopenharmony_civar timeID: number
42d5a52cc2Sopenharmony_ci
43d5a52cc2Sopenharmony_ci@Component
44d5a52cc2Sopenharmony_ciexport struct NoteContent {
45d5a52cc2Sopenharmony_ci  @Provide('SelectedNoteData') selectedNoteData: NoteData = AppStorage.Get('NewNote')
46d5a52cc2Sopenharmony_ci  @StorageLink('AllNoteArray') AllNoteArray: NoteData[] = AppStorage.Link('AllNoteArray')
47d5a52cc2Sopenharmony_ci  @Provide('Issave') issave: number = 0
48d5a52cc2Sopenharmony_ci  @Provide('EditModel') editModel: boolean = false
49d5a52cc2Sopenharmony_ci  @StorageLink('dpi') dpi: number = 240
50d5a52cc2Sopenharmony_ci  controllerShow: webview.WebviewController = new webview.WebviewController();
51d5a52cc2Sopenharmony_ci  private editContentFlag = false
52d5a52cc2Sopenharmony_ci  @StorageLink('ScrollTopPercent') scrollTopPercent: number = 0.0
53d5a52cc2Sopenharmony_ci
54d5a52cc2Sopenharmony_ci  storeScrollTop(scrollTop: number) {
55d5a52cc2Sopenharmony_ci    if (scrollTop < 0) {
56d5a52cc2Sopenharmony_ci      return
57d5a52cc2Sopenharmony_ci    }
58d5a52cc2Sopenharmony_ci    AppStorage.SetOrCreate<number>('ScrollTopPercent', scrollTop / this.controllerShow.getPageHeight())
59d5a52cc2Sopenharmony_ci  }
60d5a52cc2Sopenharmony_ci
61d5a52cc2Sopenharmony_ci  restoreScrollTop() {
62d5a52cc2Sopenharmony_ci    if (!AppStorage.Has('remoteScrollTopPercent')) {
63d5a52cc2Sopenharmony_ci      return
64d5a52cc2Sopenharmony_ci    }
65d5a52cc2Sopenharmony_ci    var scrollTopPercent = AppStorage.Get<number>('remoteScrollTopPercent')
66d5a52cc2Sopenharmony_ci    if (scrollTopPercent < 0) {
67d5a52cc2Sopenharmony_ci      return
68d5a52cc2Sopenharmony_ci    }
69d5a52cc2Sopenharmony_ci    this.controllerShow.runJavaScript(
70d5a52cc2Sopenharmony_ci      'document.documentElement.scrollTop = ' + this.controllerShow.getPageHeight() * scrollTopPercent
71d5a52cc2Sopenharmony_ci    )
72d5a52cc2Sopenharmony_ci    AppStorage.Delete('remoteScrollTopPercent')
73d5a52cc2Sopenharmony_ci  }
74d5a52cc2Sopenharmony_ci
75d5a52cc2Sopenharmony_ci  restoreFocus() {
76d5a52cc2Sopenharmony_ci    if (!AppStorage.Has('isRemoteFocusOnSearch')) {
77d5a52cc2Sopenharmony_ci      return
78d5a52cc2Sopenharmony_ci    }
79d5a52cc2Sopenharmony_ci    let isRemoteFocusOnSearch = AppStorage.Get<boolean>('isRemoteFocusOnSearch')
80d5a52cc2Sopenharmony_ci    if (isRemoteFocusOnSearch) {
81d5a52cc2Sopenharmony_ci      focusControl.requestFocus('searchInput')
82d5a52cc2Sopenharmony_ci    }
83d5a52cc2Sopenharmony_ci    AppStorage.Delete('isRemoteFocusOnSearch')
84d5a52cc2Sopenharmony_ci  }
85d5a52cc2Sopenharmony_ci
86d5a52cc2Sopenharmony_ci  noteContent = {
87d5a52cc2Sopenharmony_ci    callbackhtml: (html) => {
88d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, 'note uuid is:' + this.selectedNoteData.uuid)
89d5a52cc2Sopenharmony_ci      this.selectedNoteData.content_text = NoteUtil.contrastInitType(this.selectedNoteData.content_text);
90d5a52cc2Sopenharmony_ci      if (this.selectedNoteData.content_text === html ) {
91d5a52cc2Sopenharmony_ci        return;
92d5a52cc2Sopenharmony_ci      };
93d5a52cc2Sopenharmony_ci      this.selectedNoteData.content_text = html
94d5a52cc2Sopenharmony_ci      this.selectedNoteData.modified_time = new Date().getTime()
95d5a52cc2Sopenharmony_ci      let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
96d5a52cc2Sopenharmony_ci      predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
97d5a52cc2Sopenharmony_ci      RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
98d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, 'update note success:' + this.selectedNoteData.uuid)
99d5a52cc2Sopenharmony_ci      AppStorage.SetOrCreate<NoteData>('NewNote', this.selectedNoteData)
100d5a52cc2Sopenharmony_ci      AppStorage.SetOrCreate<boolean>('needRefresh', true)
101d5a52cc2Sopenharmony_ci      // save continue data
102d5a52cc2Sopenharmony_ci      let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
103d5a52cc2Sopenharmony_ci      AppStorage.SetOrCreate<string>('ContinueNote', continueNote)
104d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, "callbackhtml, set continue note success")
105d5a52cc2Sopenharmony_ci    },
106d5a52cc2Sopenharmony_ci    callbackImagePath: (imgName) => {
107d5a52cc2Sopenharmony_ci      // updata note image
108d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, 'note imgPath is:' + imgName)
109d5a52cc2Sopenharmony_ci      this.selectedNoteData.content_img = imgName
110d5a52cc2Sopenharmony_ci    },
111d5a52cc2Sopenharmony_ci
112d5a52cc2Sopenharmony_ci    callbackScheduledSave: (html) => {
113d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, 'callbackScheduledSave')
114d5a52cc2Sopenharmony_ci      if (this.selectedNoteData.content_text == html) {
115d5a52cc2Sopenharmony_ci        LogUtil.info(TAG, 'callbackScheduledSave the same value return')
116d5a52cc2Sopenharmony_ci        return;
117d5a52cc2Sopenharmony_ci      }
118d5a52cc2Sopenharmony_ci      this.selectedNoteData.content_text = html
119d5a52cc2Sopenharmony_ci      this.selectedNoteData.modified_time = new Date().getTime()
120d5a52cc2Sopenharmony_ci      let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
121d5a52cc2Sopenharmony_ci      predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
122d5a52cc2Sopenharmony_ci      RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
123d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, 'callbackScheduledSave, update note success:' + this.selectedNoteData.uuid)
124d5a52cc2Sopenharmony_ci      // save continue data
125d5a52cc2Sopenharmony_ci      let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
126d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, 'continueNote content', continueNote)
127d5a52cc2Sopenharmony_ci      AppStorage.SetOrCreate<string>('ContinueNote', continueNote)
128d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, 'callbackScheduledSave, set continue note success')
129d5a52cc2Sopenharmony_ci    },
130d5a52cc2Sopenharmony_ci    callbackPasteImage: (html) => {
131d5a52cc2Sopenharmony_ci      if (html) {
132d5a52cc2Sopenharmony_ci        LogUtil.info(TAG, 'paste info' + html)
133d5a52cc2Sopenharmony_ci        let realHtml = ""
134d5a52cc2Sopenharmony_ci        let base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/
135d5a52cc2Sopenharmony_ci        if (html && html.indexOf("base64") > 0) {
136d5a52cc2Sopenharmony_ci          LogUtil.info(TAG, " getSrcFromHtml, src[1] : " + html)
137d5a52cc2Sopenharmony_ci          let imgData = html.split(',')[1];
138d5a52cc2Sopenharmony_ci          let imgType = 'png'
139d5a52cc2Sopenharmony_ci          if (html.indexOf("jpeg") > 0) {
140d5a52cc2Sopenharmony_ci            imgType = 'jpg'
141d5a52cc2Sopenharmony_ci          } else if (html.indexOf("gif") > 0) {
142d5a52cc2Sopenharmony_ci            imgType = 'gif'
143d5a52cc2Sopenharmony_ci          }
144d5a52cc2Sopenharmony_ci          let filePath = ""
145d5a52cc2Sopenharmony_ci          if (base64regex.test(imgData)) {
146d5a52cc2Sopenharmony_ci            let base64 = new util.Base64()
147d5a52cc2Sopenharmony_ci            let decodeArr = base64.decodeSync(imgData)
148d5a52cc2Sopenharmony_ci            filePath = OperationUtils.saveImageData(decodeArr, imgType)
149d5a52cc2Sopenharmony_ci          } else {
150d5a52cc2Sopenharmony_ci            filePath = OperationUtils.saveImage(imgData, imgType)
151d5a52cc2Sopenharmony_ci          }
152d5a52cc2Sopenharmony_ci          realHtml = "file://" + filePath
153d5a52cc2Sopenharmony_ci        }
154d5a52cc2Sopenharmony_ci        LogUtil.info(TAG, 'paste info11' + realHtml)
155d5a52cc2Sopenharmony_ci        this.controllerShow.runJavaScript("javascript:RICH_EDITOR.insertImageHtml('" + realHtml + "')")
156d5a52cc2Sopenharmony_ci      } else {
157d5a52cc2Sopenharmony_ci        LogUtil.info(TAG, 'paste info22223')
158d5a52cc2Sopenharmony_ci      }
159d5a52cc2Sopenharmony_ci    },
160d5a52cc2Sopenharmony_ci    callbackGetSize: (fontSize) => {
161d5a52cc2Sopenharmony_ci      if (fontSize === 16) {
162d5a52cc2Sopenharmony_ci        this.selectedNoteData.slider_value = 0
163d5a52cc2Sopenharmony_ci      } else if (fontSize === 18) {
164d5a52cc2Sopenharmony_ci        this.selectedNoteData.slider_value = 4
165d5a52cc2Sopenharmony_ci      } else if (fontSize === 24) {
166d5a52cc2Sopenharmony_ci        this.selectedNoteData.slider_value = 8
167d5a52cc2Sopenharmony_ci      } else if (fontSize === 32) {
168d5a52cc2Sopenharmony_ci        this.selectedNoteData.slider_value = 12
169d5a52cc2Sopenharmony_ci      } else if (fontSize === 48) {
170d5a52cc2Sopenharmony_ci        this.selectedNoteData.slider_value = 16
171d5a52cc2Sopenharmony_ci      }
172d5a52cc2Sopenharmony_ci    }
173d5a52cc2Sopenharmony_ci  }
174d5a52cc2Sopenharmony_ci
175d5a52cc2Sopenharmony_ci  build() {
176d5a52cc2Sopenharmony_ci    Stack({ alignContent: Alignment.Bottom }) {
177d5a52cc2Sopenharmony_ci      Flex({ direction: FlexDirection.Column, wrap: FlexWrap.NoWrap,
178d5a52cc2Sopenharmony_ci        alignItems: ItemAlign.Start, alignContent: FlexAlign.SpaceAround }) {
179d5a52cc2Sopenharmony_ci        Column() {
180d5a52cc2Sopenharmony_ci          ToolBarComp({ controllerShow: this.controllerShow })
181d5a52cc2Sopenharmony_ci        }.margin({ left: 24, right: 24 })
182d5a52cc2Sopenharmony_ci
183d5a52cc2Sopenharmony_ci        Column() {
184d5a52cc2Sopenharmony_ci          NoteContentOverViewComp()
185d5a52cc2Sopenharmony_ci
186d5a52cc2Sopenharmony_ci          Web({ src: $rawfile('editor.html'), controller: this.controllerShow })
187d5a52cc2Sopenharmony_ci            .javaScriptAccess(true)
188d5a52cc2Sopenharmony_ci            .javaScriptProxy({
189d5a52cc2Sopenharmony_ci              object: this.noteContent,
190d5a52cc2Sopenharmony_ci              name: "callBackToApp", // html-->  name.method
191d5a52cc2Sopenharmony_ci              methodList: ["callbackhtml", "callbackScheduledSave", "callbackPasteImage", "callbackImagePath", "callbackGetSize"],
192d5a52cc2Sopenharmony_ci              controller: this.controllerShow
193d5a52cc2Sopenharmony_ci            })
194d5a52cc2Sopenharmony_ci            .onPageEnd((e) => {
195d5a52cc2Sopenharmony_ci              if (this.dpi <= 240) {
196d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript("changeSizeToRk()")
197d5a52cc2Sopenharmony_ci              } else if (this.dpi <= 320 && this.dpi > 240) {
198d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript("changeSizeToPhone()")
199d5a52cc2Sopenharmony_ci              } else {
200d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript("changeSizeToTablet()")
201d5a52cc2Sopenharmony_ci              }
202d5a52cc2Sopenharmony_ci              if (AppStorage.Get('breakPoint') !== 'sm') {
203d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript("hiddenButton()")
204d5a52cc2Sopenharmony_ci              }
205d5a52cc2Sopenharmony_ci              LogUtil.info(TAG, "finish loadurl")
206d5a52cc2Sopenharmony_ci              if (this.selectedNoteData) {
207d5a52cc2Sopenharmony_ci                let self = this
208d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript(
209d5a52cc2Sopenharmony_ci                  "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')",
210d5a52cc2Sopenharmony_ci                  () => {
211d5a52cc2Sopenharmony_ci                    // wait for the image in the note to load
212d5a52cc2Sopenharmony_ci                    setTimeout(function () {
213d5a52cc2Sopenharmony_ci                      self.restoreScrollTop()
214d5a52cc2Sopenharmony_ci                      self.restoreFocus()
215d5a52cc2Sopenharmony_ci                    }, 100)
216d5a52cc2Sopenharmony_ci                  }
217d5a52cc2Sopenharmony_ci                )
218d5a52cc2Sopenharmony_ci              }
219d5a52cc2Sopenharmony_ci            })
220d5a52cc2Sopenharmony_ci            .zoomAccess(false)
221d5a52cc2Sopenharmony_ci            .imageAccess(true)
222d5a52cc2Sopenharmony_ci            .onlineImageAccess(true)
223d5a52cc2Sopenharmony_ci            .fileAccess(true)
224d5a52cc2Sopenharmony_ci            .domStorageAccess(true)
225d5a52cc2Sopenharmony_ci            .height('88%')
226d5a52cc2Sopenharmony_ci            .width('100%')
227d5a52cc2Sopenharmony_ci            .onScroll((event) => {
228d5a52cc2Sopenharmony_ci              this.storeScrollTop(event.yOffset)
229d5a52cc2Sopenharmony_ci            })
230d5a52cc2Sopenharmony_ci            .onClick(() => {
231d5a52cc2Sopenharmony_ci              // 添加定时器:3s自动保存
232d5a52cc2Sopenharmony_ci              if (timeID) {
233d5a52cc2Sopenharmony_ci                clearInterval(timeID)
234d5a52cc2Sopenharmony_ci              }
235d5a52cc2Sopenharmony_ci              timeID = setInterval(() => {
236d5a52cc2Sopenharmony_ci                try {
237d5a52cc2Sopenharmony_ci                  this.controllerShow.runJavaScript("scheduledSaveContent()");
238d5a52cc2Sopenharmony_ci                  LogUtil.info(TAG, `runJavaScript scheduledSaveContent success.`);
239d5a52cc2Sopenharmony_ci                } catch (error) {
240d5a52cc2Sopenharmony_ci                  LogUtil.info(TAG, `runJavaScript scheduledSaveContent failed.code:${JSON.stringify(error.code)},
241d5a52cc2Sopenharmony_ci                    message:${JSON.stringify(error.message)}`);
242d5a52cc2Sopenharmony_ci                }
243d5a52cc2Sopenharmony_ci              }, 3000)
244d5a52cc2Sopenharmony_ci              LogUtil.info(TAG, "setInterval timeID : " + timeID)
245d5a52cc2Sopenharmony_ci              this.issave = 0
246d5a52cc2Sopenharmony_ci              this.editModel = true
247d5a52cc2Sopenharmony_ci            })
248d5a52cc2Sopenharmony_ci        }
249d5a52cc2Sopenharmony_ci        .margin({ left: 12, right: 24, top: 16 })
250d5a52cc2Sopenharmony_ci      }
251d5a52cc2Sopenharmony_ci      .height(StyleConstants.PERCENTAGE_100)
252d5a52cc2Sopenharmony_ci    }
253d5a52cc2Sopenharmony_ci    .height(StyleConstants.PERCENTAGE_100)
254d5a52cc2Sopenharmony_ci    .width(StyleConstants.PERCENTAGE_100)
255d5a52cc2Sopenharmony_ci  }
256d5a52cc2Sopenharmony_ci
257d5a52cc2Sopenharmony_ci  aboutToAppear(): void {
258d5a52cc2Sopenharmony_ci    LogUtil.info(TAG, "aboutToAppear")
259d5a52cc2Sopenharmony_ci  }
260d5a52cc2Sopenharmony_ci
261d5a52cc2Sopenharmony_ci  aboutToDisappear(): void {
262d5a52cc2Sopenharmony_ci    AppStorage.Set("refreshCurrentNote", true)
263d5a52cc2Sopenharmony_ci    NoteUtil.refreshAll()
264d5a52cc2Sopenharmony_ci    clearInterval(timeID)
265d5a52cc2Sopenharmony_ci    LogUtil.info(TAG, "aboutToDisappear")
266d5a52cc2Sopenharmony_ci  }
267d5a52cc2Sopenharmony_ci}
268d5a52cc2Sopenharmony_ci
269d5a52cc2Sopenharmony_ci@Component
270d5a52cc2Sopenharmony_ciexport struct ToolBarComp {
271d5a52cc2Sopenharmony_ci  @Consume('SelectedNoteData') selectedNoteData: NoteData
272d5a52cc2Sopenharmony_ci  @StorageLink('AllNoteArray') AllNoteArray: NoteData[] = AppStorage.Link('AllNoteArray')
273d5a52cc2Sopenharmony_ci  @Consume('Issave') issave: number
274d5a52cc2Sopenharmony_ci  @Consume('EditModel') editModel: boolean
275d5a52cc2Sopenharmony_ci  controllerShow: WebviewController
276d5a52cc2Sopenharmony_ci  editContentDialogCtl: CustomDialogController = new CustomDialogController({
277d5a52cc2Sopenharmony_ci    builder: EditContentDialog({ confirm: this.confirm.bind(this) }),
278d5a52cc2Sopenharmony_ci    alignment: DialogAlignment.Bottom,
279d5a52cc2Sopenharmony_ci    autoCancel: true,
280d5a52cc2Sopenharmony_ci    customStyle: true,
281d5a52cc2Sopenharmony_ci  })
282d5a52cc2Sopenharmony_ci
283d5a52cc2Sopenharmony_ci  aboutToDisappear() {
284d5a52cc2Sopenharmony_ci    this.editContentDialogCtl = null
285d5a52cc2Sopenharmony_ci  }
286d5a52cc2Sopenharmony_ci
287d5a52cc2Sopenharmony_ci  confirm(excuteJs: string) {
288d5a52cc2Sopenharmony_ci    this.controllerShow.runJavaScript(excuteJs)
289d5a52cc2Sopenharmony_ci  }
290d5a52cc2Sopenharmony_ci
291d5a52cc2Sopenharmony_ci  build() {
292d5a52cc2Sopenharmony_ci    Flex({ direction: FlexDirection.Row, wrap: FlexWrap.NoWrap,
293d5a52cc2Sopenharmony_ci      justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) {
294d5a52cc2Sopenharmony_ci      Image($r('app.media.narrow'))
295d5a52cc2Sopenharmony_ci        .height(24)
296d5a52cc2Sopenharmony_ci        .width(24)
297d5a52cc2Sopenharmony_ci        .onClick(() => {
298d5a52cc2Sopenharmony_ci          try {
299d5a52cc2Sopenharmony_ci            this.controllerShow.runJavaScript("RICH_EDITOR.setInputEnabled(false)");
300d5a52cc2Sopenharmony_ci            this.controllerShow.runJavaScript("getHtmlContent()");
301d5a52cc2Sopenharmony_ci            LogUtil.info(TAG, `runJavaScript setInputEnabled and getHtmlContent success.`);
302d5a52cc2Sopenharmony_ci          } catch (error) {
303d5a52cc2Sopenharmony_ci            LogUtil.info(TAG, `runJavaScript setInputEnabled and getHtmlContent fail.code:${JSON.stringify(error.code)},
304d5a52cc2Sopenharmony_ci              message:${JSON.stringify(error.message)}`);
305d5a52cc2Sopenharmony_ci          }
306d5a52cc2Sopenharmony_ci
307d5a52cc2Sopenharmony_ci          // 清除定时器
308d5a52cc2Sopenharmony_ci          if (timeID != undefined) {
309d5a52cc2Sopenharmony_ci            LogUtil.info(TAG, "zoom, clearInterval timeID : " + timeID)
310d5a52cc2Sopenharmony_ci            clearInterval(timeID)
311d5a52cc2Sopenharmony_ci          }
312d5a52cc2Sopenharmony_ci          AppStorage.Set("refreshCurrentNote", true)
313d5a52cc2Sopenharmony_ci          router.back()
314d5a52cc2Sopenharmony_ci          NoteUtil.refreshAll()
315d5a52cc2Sopenharmony_ci        })
316d5a52cc2Sopenharmony_ci        .visibility(this.selectedNoteData.is_deleted == Delete.Yes ? Visibility.None : Visibility.Visible)
317d5a52cc2Sopenharmony_ci
318d5a52cc2Sopenharmony_ci      if (this.editModel == false) {
319d5a52cc2Sopenharmony_ci        Row({ space: StyleConstants.SPACE_24 }) {
320d5a52cc2Sopenharmony_ci          Image(this.selectedNoteData.is_favorite == Favorite.Yes ? $r('app.media.favorite') : $r('app.media.favorite_cancel'))
321d5a52cc2Sopenharmony_ci            .height(24).width(24)
322d5a52cc2Sopenharmony_ci            .onClick(() => {
323d5a52cc2Sopenharmony_ci              try {
324d5a52cc2Sopenharmony_ci                this.selectedNoteData.is_favorite = (this.selectedNoteData.is_favorite == Favorite.Yes ? Favorite.No : Favorite.Yes)
325d5a52cc2Sopenharmony_ci                // update note to db
326d5a52cc2Sopenharmony_ci                let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
327d5a52cc2Sopenharmony_ci                predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
328d5a52cc2Sopenharmony_ci                RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
329d5a52cc2Sopenharmony_ci                // save continue data
330d5a52cc2Sopenharmony_ci                let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
331d5a52cc2Sopenharmony_ci                AppStorage.SetOrCreate<string>('ContinueNote', continueNote)
332d5a52cc2Sopenharmony_ci                LogUtil.info(TAG, 'ToolBarComp, set continue note success')
333d5a52cc2Sopenharmony_ci                NoteUtil.refreshAll()
334d5a52cc2Sopenharmony_ci              } catch (error) {
335d5a52cc2Sopenharmony_ci                LogUtil.error(TAG, 'favorite error: ' + JSON.stringify(error));
336d5a52cc2Sopenharmony_ci              }
337d5a52cc2Sopenharmony_ci            })
338d5a52cc2Sopenharmony_ci        }.width(36)
339d5a52cc2Sopenharmony_ci        .visibility(this.selectedNoteData.is_deleted == Delete.Yes ? Visibility.None : Visibility.Visible)
340d5a52cc2Sopenharmony_ci      } else {
341d5a52cc2Sopenharmony_ci        Row({ space: StyleConstants.SPACE_6 }) {
342d5a52cc2Sopenharmony_ci          Button({ type: ButtonType.Normal, stateEffect: true }) {
343d5a52cc2Sopenharmony_ci            Image($r('app.media.circle_tick1'))
344d5a52cc2Sopenharmony_ci              .height(24)
345d5a52cc2Sopenharmony_ci              .width(24)
346d5a52cc2Sopenharmony_ci              .onClick(() => {
347d5a52cc2Sopenharmony_ci                // 退出键盘
348d5a52cc2Sopenharmony_ci                // @ts-ignore
349d5a52cc2Sopenharmony_ci                inputMethod.getController().stopInputSession();
350d5a52cc2Sopenharmony_ci                // 清单
351d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript("javascript:RICH_EDITOR.setTodo()")
352d5a52cc2Sopenharmony_ci              })
353d5a52cc2Sopenharmony_ci          }.width(42)
354d5a52cc2Sopenharmony_ci          .height(42)
355d5a52cc2Sopenharmony_ci          .borderRadius(8)
356d5a52cc2Sopenharmony_ci          .backgroundColor($r('app.color.color_fffffB'))
357d5a52cc2Sopenharmony_ci
358d5a52cc2Sopenharmony_ci          Button({ type: ButtonType.Normal, stateEffect: true }) {
359d5a52cc2Sopenharmony_ci            Image($r('app.media.font_style'))
360d5a52cc2Sopenharmony_ci              .height(24)
361d5a52cc2Sopenharmony_ci              .width(24)
362d5a52cc2Sopenharmony_ci              .onClick(() => {
363d5a52cc2Sopenharmony_ci                // 退出键盘
364d5a52cc2Sopenharmony_ci                // @ts-ignore
365d5a52cc2Sopenharmony_ci                inputMethod.getController().stopInputSession();
366d5a52cc2Sopenharmony_ci                LogUtil.info(TAG, 'editContentDialogCtl start')
367d5a52cc2Sopenharmony_ci                this.editContentDialogCtl.open()
368d5a52cc2Sopenharmony_ci              })
369d5a52cc2Sopenharmony_ci          }.width(42)
370d5a52cc2Sopenharmony_ci          .height(42)
371d5a52cc2Sopenharmony_ci          .borderRadius(8)
372d5a52cc2Sopenharmony_ci          .backgroundColor($r('app.color.color_fffffB'))
373d5a52cc2Sopenharmony_ci
374d5a52cc2Sopenharmony_ci          Button({ type: ButtonType.Normal, stateEffect: true }) {
375d5a52cc2Sopenharmony_ci            Image($r('app.media.picture_white')).height(24).width(24)
376d5a52cc2Sopenharmony_ci              .onClick(async () => {
377d5a52cc2Sopenharmony_ci                // 退出键盘
378d5a52cc2Sopenharmony_ci                // @ts-ignore
379d5a52cc2Sopenharmony_ci                inputMethod.getController().stopInputSession();
380d5a52cc2Sopenharmony_ci                LogUtil.info(TAG, 'startAbility start')
381d5a52cc2Sopenharmony_ci                await globalThis.noteContext.startAbilityForResult({
382d5a52cc2Sopenharmony_ci                  parameters: { uri: "singleselect" },
383d5a52cc2Sopenharmony_ci                  bundleName: "com.ohos.photos",
384d5a52cc2Sopenharmony_ci                  abilityName: "com.ohos.photos.MainAbility",
385d5a52cc2Sopenharmony_ci                })
386d5a52cc2Sopenharmony_ci                  .then(v => {
387d5a52cc2Sopenharmony_ci                    let want = v['want'];
388d5a52cc2Sopenharmony_ci                    if (want != null && want != undefined) {
389d5a52cc2Sopenharmony_ci                      let param = want['parameters'];
390d5a52cc2Sopenharmony_ci                      let imageUri = ""
391d5a52cc2Sopenharmony_ci                      if (param != null && param != undefined) {
392d5a52cc2Sopenharmony_ci                        let uri = param['select-item-list'];
393d5a52cc2Sopenharmony_ci                        imageUri = uri[0];
394d5a52cc2Sopenharmony_ci                      }
395d5a52cc2Sopenharmony_ci                      // 拷贝
396d5a52cc2Sopenharmony_ci                      if (imageUri != null && imageUri != "") {
397d5a52cc2Sopenharmony_ci                        OperationUtils.copy(imageUri).then((uriPath) => {
398d5a52cc2Sopenharmony_ci                          var path = "file://" + uriPath
399d5a52cc2Sopenharmony_ci                          LogUtil.info(TAG, 'image uri is:' + path)
400d5a52cc2Sopenharmony_ci                          this.controllerShow.runJavaScript(
401d5a52cc2Sopenharmony_ci                            "javascript:RICH_EDITOR.insertImage('" + path + "')"
402d5a52cc2Sopenharmony_ci                          )
403d5a52cc2Sopenharmony_ci                          this.issave = 1
404d5a52cc2Sopenharmony_ci                          // 保存笔记信息到数据库
405d5a52cc2Sopenharmony_ci                          this.controllerShow.runJavaScript("getHtmlContent()")
406d5a52cc2Sopenharmony_ci                        })
407d5a52cc2Sopenharmony_ci                      }
408d5a52cc2Sopenharmony_ci                    }
409d5a52cc2Sopenharmony_ci                  });
410d5a52cc2Sopenharmony_ci              })
411d5a52cc2Sopenharmony_ci          }.width(42)
412d5a52cc2Sopenharmony_ci          .height(42)
413d5a52cc2Sopenharmony_ci          .borderRadius(8)
414d5a52cc2Sopenharmony_ci          .backgroundColor($r('app.color.color_fffffB'))
415d5a52cc2Sopenharmony_ci
416d5a52cc2Sopenharmony_ci          Button({ type: ButtonType.Normal, stateEffect: true }) {
417d5a52cc2Sopenharmony_ci            Image($r('app.media.undo'))
418d5a52cc2Sopenharmony_ci              .height(24)
419d5a52cc2Sopenharmony_ci              .width(24)
420d5a52cc2Sopenharmony_ci              .onClick(() => {
421d5a52cc2Sopenharmony_ci                // 退出键盘
422d5a52cc2Sopenharmony_ci                // @ts-ignore
423d5a52cc2Sopenharmony_ci                inputMethod.getController().stopInputSession();
424d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript("RICH_EDITOR.undo()")
425d5a52cc2Sopenharmony_ci              })
426d5a52cc2Sopenharmony_ci          }.width(42)
427d5a52cc2Sopenharmony_ci          .height(42)
428d5a52cc2Sopenharmony_ci          .borderRadius(8)
429d5a52cc2Sopenharmony_ci          .backgroundColor($r('app.color.color_fffffB'))
430d5a52cc2Sopenharmony_ci
431d5a52cc2Sopenharmony_ci          Button({ type: ButtonType.Normal, stateEffect: true }) {
432d5a52cc2Sopenharmony_ci            Image($r('app.media.todo'))
433d5a52cc2Sopenharmony_ci              .height(24)
434d5a52cc2Sopenharmony_ci              .width(24)
435d5a52cc2Sopenharmony_ci              .onClick(() => {
436d5a52cc2Sopenharmony_ci                // 退出键盘
437d5a52cc2Sopenharmony_ci                // @ts-ignore
438d5a52cc2Sopenharmony_ci                inputMethod.getController().stopInputSession();
439d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript("RICH_EDITOR.redo()")
440d5a52cc2Sopenharmony_ci              })
441d5a52cc2Sopenharmony_ci          }.width(42)
442d5a52cc2Sopenharmony_ci          .height(42)
443d5a52cc2Sopenharmony_ci          .borderRadius(8)
444d5a52cc2Sopenharmony_ci          .backgroundColor($r('app.color.color_fffffB'))
445d5a52cc2Sopenharmony_ci
446d5a52cc2Sopenharmony_ci
447d5a52cc2Sopenharmony_ci          Button({ type: ButtonType.Normal, stateEffect: true }) {
448d5a52cc2Sopenharmony_ci            Image($r('app.media.tick_thick'))
449d5a52cc2Sopenharmony_ci              .height(24)
450d5a52cc2Sopenharmony_ci              .width(24)
451d5a52cc2Sopenharmony_ci              .fillColor(this.issave == 0 ? Color.Black : Color.Grey)
452d5a52cc2Sopenharmony_ci              .onClick(() => {
453d5a52cc2Sopenharmony_ci                this.issave = 1
454d5a52cc2Sopenharmony_ci                // 保存笔记信息到数据库
455d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript("getHtmlContent()")
456d5a52cc2Sopenharmony_ci              })
457d5a52cc2Sopenharmony_ci          }.width(42)
458d5a52cc2Sopenharmony_ci          .height(42)
459d5a52cc2Sopenharmony_ci          .borderRadius(8)
460d5a52cc2Sopenharmony_ci          .backgroundColor($r('app.color.color_fffffB'))
461d5a52cc2Sopenharmony_ci        }.width(274)
462d5a52cc2Sopenharmony_ci      }
463d5a52cc2Sopenharmony_ci    }
464d5a52cc2Sopenharmony_ci    .width(StyleConstants.PERCENTAGE_100)
465d5a52cc2Sopenharmony_ci    .height(80)
466d5a52cc2Sopenharmony_ci  }
467d5a52cc2Sopenharmony_ci}
468d5a52cc2Sopenharmony_ci
469d5a52cc2Sopenharmony_ci@Component
470d5a52cc2Sopenharmony_ciexport struct NoteContentOverViewComp {
471d5a52cc2Sopenharmony_ci  @Consume('SelectedNoteData') selectedNoteData: NoteData
472d5a52cc2Sopenharmony_ci  @StorageLink('AllFolderArray') AllFolderArray: FolderData[] = []
473d5a52cc2Sopenharmony_ci  @StorageLink('CheckedNoteArray') CheckedNoteArray: NoteData[] = []
474d5a52cc2Sopenharmony_ci  @StorageLink('isUpdate') isUpdate: boolean = false
475d5a52cc2Sopenharmony_ci  editTitleDialogCtl: CustomDialogController = new CustomDialogController({
476d5a52cc2Sopenharmony_ci    builder: EditTitleDialog({ confirm: this.confirm.bind(this) }),
477d5a52cc2Sopenharmony_ci    alignment: DialogAlignment.Center,
478d5a52cc2Sopenharmony_ci    autoCancel: false,
479d5a52cc2Sopenharmony_ci    customStyle: true,
480d5a52cc2Sopenharmony_ci  })
481d5a52cc2Sopenharmony_ci
482d5a52cc2Sopenharmony_ci  aboutToDisappear() {
483d5a52cc2Sopenharmony_ci    this.editTitleDialogCtl = null
484d5a52cc2Sopenharmony_ci  }
485d5a52cc2Sopenharmony_ci
486d5a52cc2Sopenharmony_ci  confirm(newTitle: string) {
487d5a52cc2Sopenharmony_ci    this.selectedNoteData.title = newTitle
488d5a52cc2Sopenharmony_ci    this.selectedNoteData.modified_time = new Date().getTime()
489d5a52cc2Sopenharmony_ci    let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
490d5a52cc2Sopenharmony_ci    predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
491d5a52cc2Sopenharmony_ci    RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
492d5a52cc2Sopenharmony_ci    // save continue data
493d5a52cc2Sopenharmony_ci    let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
494d5a52cc2Sopenharmony_ci    AppStorage.SetOrCreate<string>('ContinueNote', continueNote)
495d5a52cc2Sopenharmony_ci    LogUtil.info(TAG, "NoteContentOverViewComp confirm, set continue note success")
496d5a52cc2Sopenharmony_ci    NoteUtil.refreshAll()
497d5a52cc2Sopenharmony_ci  }
498d5a52cc2Sopenharmony_ci
499d5a52cc2Sopenharmony_ci  @Builder MenuBuilder() {
500d5a52cc2Sopenharmony_ci    Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
501d5a52cc2Sopenharmony_ci      List() {
502d5a52cc2Sopenharmony_ci        ForEach(this.AllFolderArray, (item) => {
503d5a52cc2Sopenharmony_ci          ListItem() {
504d5a52cc2Sopenharmony_ci            NoteDataMoveItemComp({ folderItem: item })
505d5a52cc2Sopenharmony_ci          }
506d5a52cc2Sopenharmony_ci          .onClick(() => {
507d5a52cc2Sopenharmony_ci            this.selectedNoteData.folder_uuid = item.uuid
508d5a52cc2Sopenharmony_ci            let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
509d5a52cc2Sopenharmony_ci            predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
510d5a52cc2Sopenharmony_ci            RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
511d5a52cc2Sopenharmony_ci            // save continue data
512d5a52cc2Sopenharmony_ci            let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
513d5a52cc2Sopenharmony_ci            AppStorage.SetOrCreate<string>('ContinueNote', continueNote)
514d5a52cc2Sopenharmony_ci            LogUtil.info(TAG, "NoteContentOverViewComp MenuBuilder, set continue note success")
515d5a52cc2Sopenharmony_ci            NoteUtil.refreshAll()
516d5a52cc2Sopenharmony_ci          })
517d5a52cc2Sopenharmony_ci        }, noteItem => JSON.stringify(noteItem))
518d5a52cc2Sopenharmony_ci      }.listDirection(Axis.Vertical)
519d5a52cc2Sopenharmony_ci      .edgeEffect(EdgeEffect.Spring)
520d5a52cc2Sopenharmony_ci      .height(this.AllFolderArray.length > 12 ? 504 : (this.AllFolderArray.length - 3) * 56)
521d5a52cc2Sopenharmony_ci    }
522d5a52cc2Sopenharmony_ci    .width(148)
523d5a52cc2Sopenharmony_ci    .backgroundColor($r("app.color.color_fffffB"))
524d5a52cc2Sopenharmony_ci    .padding({ left: 24, right: 24 })
525d5a52cc2Sopenharmony_ci  }
526d5a52cc2Sopenharmony_ci
527d5a52cc2Sopenharmony_ci  build() {
528d5a52cc2Sopenharmony_ci    if (this.selectedNoteData) {
529d5a52cc2Sopenharmony_ci      Flex({ direction: FlexDirection.Column, wrap: FlexWrap.NoWrap,
530d5a52cc2Sopenharmony_ci        justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) {
531d5a52cc2Sopenharmony_ci        Row() {
532d5a52cc2Sopenharmony_ci          Text(this.selectedNoteData.title)
533d5a52cc2Sopenharmony_ci            .id(this.isUpdate + '')
534d5a52cc2Sopenharmony_ci            .fontSize(30)
535d5a52cc2Sopenharmony_ci            .margin({ left: 12, right: 24 })
536d5a52cc2Sopenharmony_ci            .onClick(() => {
537d5a52cc2Sopenharmony_ci              clearInterval(timeID)
538d5a52cc2Sopenharmony_ci              this.editTitleDialogCtl.open()
539d5a52cc2Sopenharmony_ci            })
540d5a52cc2Sopenharmony_ci        }.height(40)
541d5a52cc2Sopenharmony_ci        .width(StyleConstants.PERCENTAGE_100)
542d5a52cc2Sopenharmony_ci
543d5a52cc2Sopenharmony_ci        Row() {
544d5a52cc2Sopenharmony_ci          Text(DateUtil.formateDateForNoteContent(new Date(this.selectedNoteData.modified_time)))
545d5a52cc2Sopenharmony_ci            .id(this.isUpdate + '')
546d5a52cc2Sopenharmony_ci            .fontSize(12)
547d5a52cc2Sopenharmony_ci            .padding({ top: 4, bottom: 4 })
548d5a52cc2Sopenharmony_ci            .fontColor($r("app.color.modified_time_font_color"))
549d5a52cc2Sopenharmony_ci            .margin({ left: 12 })
550d5a52cc2Sopenharmony_ci          Row() {
551d5a52cc2Sopenharmony_ci            Text(FolderUtil.getFolderText(FolderUtil.getFolderData(AppStorage.Get('AllFolderArray'), this.selectedNoteData.folder_uuid)) ==
552d5a52cc2Sopenharmony_ci                 folderTextMap["sys_def_myFavorites_uuid"] ? folderTextMap["sys_def_unClassified_uuid"] :
553d5a52cc2Sopenharmony_ci            FolderUtil.getFolderText(FolderUtil.getFolderData(AppStorage.Get('AllFolderArray'), this.selectedNoteData.folder_uuid)))
554d5a52cc2Sopenharmony_ci              .id(this.isUpdate + '')
555d5a52cc2Sopenharmony_ci              .fontSize(12)
556d5a52cc2Sopenharmony_ci              .fontColor($r("app.color.list_modified_time_font_color"))
557d5a52cc2Sopenharmony_ci            Image($r('app.media.triangle'))
558d5a52cc2Sopenharmony_ci              .width(6)
559d5a52cc2Sopenharmony_ci              .height(12)
560d5a52cc2Sopenharmony_ci              .margin({ left: 4 })
561d5a52cc2Sopenharmony_ci          }
562d5a52cc2Sopenharmony_ci          .padding({ left: 8, right: 8, top: 4, bottom: 4 })
563d5a52cc2Sopenharmony_ci          .margin({ left: 8 })
564d5a52cc2Sopenharmony_ci          .borderRadius(16)
565d5a52cc2Sopenharmony_ci          .backgroundColor(NoteUtil.getNoteBgColor(AppStorage.Get('AllFolderArray'), this.selectedNoteData.folder_uuid, SysDefFolderUuid.AllNotes, false))
566d5a52cc2Sopenharmony_ci          .bindMenu(this.MenuBuilder)
567d5a52cc2Sopenharmony_ci        }.alignItems(VerticalAlign.Top).height(40).width(StyleConstants.PERCENTAGE_100)
568d5a52cc2Sopenharmony_ci      }
569d5a52cc2Sopenharmony_ci      .opacity(this.selectedNoteData.is_deleted == Delete.Yes ? 0.4 : 1)
570d5a52cc2Sopenharmony_ci      .width(StyleConstants.PERCENTAGE_100)
571d5a52cc2Sopenharmony_ci      .height(80)
572d5a52cc2Sopenharmony_ci    }
573d5a52cc2Sopenharmony_ci  }
574d5a52cc2Sopenharmony_ci}
575d5a52cc2Sopenharmony_ci
576d5a52cc2Sopenharmony_ci@Component
577d5a52cc2Sopenharmony_cistruct NoteDataMoveItemComp {
578d5a52cc2Sopenharmony_ci  @StorageLink('CheckedNoteArray') CheckedNoteArray: NoteData[] = []
579d5a52cc2Sopenharmony_ci  @StorageLink('AllFolderArray') AllFolderArray: FolderData[] = []
580d5a52cc2Sopenharmony_ci  private folderItem: FolderData
581d5a52cc2Sopenharmony_ci
582d5a52cc2Sopenharmony_ci  build() {
583d5a52cc2Sopenharmony_ci    Flex({ alignItems: ItemAlign.Center, wrap: FlexWrap.NoWrap, justifyContent: FlexAlign.Center }) {
584d5a52cc2Sopenharmony_ci      Flex({ alignItems: ItemAlign.Center, wrap: FlexWrap.NoWrap }) {
585d5a52cc2Sopenharmony_ci        Image(FolderUtil.getFolderIcon(this.folderItem.uuid))
586d5a52cc2Sopenharmony_ci          .objectFit(ImageFit.Fill)
587d5a52cc2Sopenharmony_ci          .width(24)
588d5a52cc2Sopenharmony_ci          .height(24)
589d5a52cc2Sopenharmony_ci          .flexShrink(0)
590d5a52cc2Sopenharmony_ci          .fillColor(FolderUtil.getFolderIconColor(this.AllFolderArray, this.folderItem.uuid, false))
591d5a52cc2Sopenharmony_ci      }
592d5a52cc2Sopenharmony_ci      .width(24)
593d5a52cc2Sopenharmony_ci
594d5a52cc2Sopenharmony_ci      Column() {
595d5a52cc2Sopenharmony_ci        Flex({ alignItems: ItemAlign.Center, wrap: FlexWrap.NoWrap, justifyContent: FlexAlign.SpaceBetween }) {
596d5a52cc2Sopenharmony_ci          Text(FolderUtil.getFolderText(this.folderItem))
597d5a52cc2Sopenharmony_ci            .fontSize(16)
598d5a52cc2Sopenharmony_ci            .fontColor(FolderUtil.getFolderIconColor(this.AllFolderArray, this.folderItem.uuid, false))
599d5a52cc2Sopenharmony_ci            .textAlign(TextAlign.Center)
600d5a52cc2Sopenharmony_ci            .maxLines(1)
601d5a52cc2Sopenharmony_ci            .textOverflow({ overflow: TextOverflow.Ellipsis })
602d5a52cc2Sopenharmony_ci            .flexShrink(1)
603d5a52cc2Sopenharmony_ci        }
604d5a52cc2Sopenharmony_ci        .width('100%')
605d5a52cc2Sopenharmony_ci        .height(55)
606d5a52cc2Sopenharmony_ci
607d5a52cc2Sopenharmony_ci        Divider()
608d5a52cc2Sopenharmony_ci          .color($r("app.color.divider_color_e4e4e4"))
609d5a52cc2Sopenharmony_ci          .strokeWidth(1)
610d5a52cc2Sopenharmony_ci      }
611d5a52cc2Sopenharmony_ci      .padding({ left: 16 })
612d5a52cc2Sopenharmony_ci    }
613d5a52cc2Sopenharmony_ci    .width('100%')
614d5a52cc2Sopenharmony_ci    .height(56)
615d5a52cc2Sopenharmony_ci    .visibility(FolderUtil.isFolderMoveIn(this.folderItem) ? Visibility.Visible : Visibility.None)
616d5a52cc2Sopenharmony_ci  }
617d5a52cc2Sopenharmony_ci}