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 {
21d5a52cc2Sopenharmony_ci  TableName,
22d5a52cc2Sopenharmony_ci  NoteTableColumn,
23d5a52cc2Sopenharmony_ci  SysDefFolderUuid,
24d5a52cc2Sopenharmony_ci  Favorite,
25d5a52cc2Sopenharmony_ci  Delete
26d5a52cc2Sopenharmony_ci} from '@ohos/utils/src/main/ets/default/model/databaseModel/EnumData'
27d5a52cc2Sopenharmony_ciimport StyleConstants from '@ohos/utils/src/main/ets/default/constants/StyleConstants'
28d5a52cc2Sopenharmony_ciimport { EditContentDialog, DeleteDialog, EditTitleDialog } from './CusDialogComp'
29d5a52cc2Sopenharmony_ciimport FolderUtil from '@ohos/utils/src/main/ets/default/baseUtil/FolderUtil'
30d5a52cc2Sopenharmony_ciimport NoteUtil from '@ohos/utils/src/main/ets/default/baseUtil/NoteUtil'
31d5a52cc2Sopenharmony_ciimport prompt from '@system.prompt'
32d5a52cc2Sopenharmony_ciimport util from '@ohos.util'
33d5a52cc2Sopenharmony_ciimport { LogUtil } from '@ohos/utils/src/main/ets/default/baseUtil/LogUtil'
34d5a52cc2Sopenharmony_ciimport OperationUtils from '@ohos/utils/src/main/ets/default/baseUtil/OperationUtils'
35d5a52cc2Sopenharmony_ciimport mediaquery from '@ohos.mediaquery'
36d5a52cc2Sopenharmony_ciimport inputMethod from '@ohos.inputMethod';
37d5a52cc2Sopenharmony_ciimport { folderTextMap } from '@ohos/utils/src/main/ets/default/model/NoteBaseData'
38d5a52cc2Sopenharmony_ciimport abilityAccessCtrl from '@ohos.abilityAccessCtrl';
39d5a52cc2Sopenharmony_ciimport webview from '@ohos.web.webview';
40d5a52cc2Sopenharmony_ci
41d5a52cc2Sopenharmony_ciconst TAG = "NoteContentComp"
42d5a52cc2Sopenharmony_ci
43d5a52cc2Sopenharmony_civar timeId: number
44d5a52cc2Sopenharmony_ci
45d5a52cc2Sopenharmony_ci// Note content component
46d5a52cc2Sopenharmony_cilet inSetValue = AppStorage.Link('inSetValue')
47d5a52cc2Sopenharmony_ci
48d5a52cc2Sopenharmony_ci@Component
49d5a52cc2Sopenharmony_ciexport struct NoteContentComp {
50d5a52cc2Sopenharmony_ci  @Consume('SelectedNoteData') selectedNoteData: NoteData
51d5a52cc2Sopenharmony_ci  @StorageLink('AllNoteArray') AllNoteArray: NoteData[] = AppStorage.Link('AllNoteArray')
52d5a52cc2Sopenharmony_ci  @Consume('SelectedFolderData') selectedFolderData: FolderData
53d5a52cc2Sopenharmony_ci  @Consume('RefreshFlag') refreshFlag: number
54d5a52cc2Sopenharmony_ci  @Consume('EditModel') editModel: boolean
55d5a52cc2Sopenharmony_ci  @Consume('SectionStatus') sectionStatus: number
56d5a52cc2Sopenharmony_ci  @Consume('LastSectionStatus') lastSectionStatus: number
57d5a52cc2Sopenharmony_ci  @Consume('Issave') issave: number
58d5a52cc2Sopenharmony_ci  @Consume('Search') search: boolean
59d5a52cc2Sopenharmony_ci  @StorageLink('dpi') dpi: number = 240
60d5a52cc2Sopenharmony_ci  controllerShow: webview.WebviewController = new webview.WebviewController();
61d5a52cc2Sopenharmony_ci  private editContentFlag = false
62d5a52cc2Sopenharmony_ci  @State uri1: string = ""
63d5a52cc2Sopenharmony_ci  private context = getContext(this)
64d5a52cc2Sopenharmony_ci  @StorageLink('ScrollTopPercent') scrollTopPercent: number = 0.0
65d5a52cc2Sopenharmony_ci  @StorageLink('isUpdate') isUpdate: boolean = false
66d5a52cc2Sopenharmony_ci  @StorageLink('refreshCurrentNote') @Watch('isDataChange') refreshCurrentNote: boolean = false
67d5a52cc2Sopenharmony_ci  @Consume('AsideWidth') asideWidth: number
68d5a52cc2Sopenharmony_ci
69d5a52cc2Sopenharmony_ci  isDataChange() {
70d5a52cc2Sopenharmony_ci    if (!this.refreshCurrentNote) {
71d5a52cc2Sopenharmony_ci      return
72d5a52cc2Sopenharmony_ci    }
73d5a52cc2Sopenharmony_ci    try {
74d5a52cc2Sopenharmony_ci      this.controllerShow.runJavaScript("RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')");
75d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, `runJavaScript setHtml success.`);
76d5a52cc2Sopenharmony_ci    } catch (error) {
77d5a52cc2Sopenharmony_ci      LogUtil.error(TAG, `runJavaScript setHtml failed.code:${JSON.stringify(error.code)},
78d5a52cc2Sopenharmony_ci        message:${JSON.stringify(error.message)}`);
79d5a52cc2Sopenharmony_ci    }
80d5a52cc2Sopenharmony_ci    this.refreshCurrentNote = false
81d5a52cc2Sopenharmony_ci  }
82d5a52cc2Sopenharmony_ci
83d5a52cc2Sopenharmony_ci  storeScrollTop(scrollTop: number) {
84d5a52cc2Sopenharmony_ci    if (scrollTop < 0) {
85d5a52cc2Sopenharmony_ci      return
86d5a52cc2Sopenharmony_ci    }
87d5a52cc2Sopenharmony_ci    AppStorage.SetOrCreate<number>('ScrollTopPercent', scrollTop / this.controllerShow.getPageHeight())
88d5a52cc2Sopenharmony_ci  }
89d5a52cc2Sopenharmony_ci
90d5a52cc2Sopenharmony_ci  restoreScrollTop() {
91d5a52cc2Sopenharmony_ci    if (!AppStorage.Has('remoteScrollTopPercent')) {
92d5a52cc2Sopenharmony_ci      return
93d5a52cc2Sopenharmony_ci    }
94d5a52cc2Sopenharmony_ci    var scrollTopPercent = AppStorage.Get<number>('remoteScrollTopPercent')
95d5a52cc2Sopenharmony_ci    if (scrollTopPercent < 0) {
96d5a52cc2Sopenharmony_ci      return
97d5a52cc2Sopenharmony_ci    }
98d5a52cc2Sopenharmony_ci    this.controllerShow.runJavaScript(
99d5a52cc2Sopenharmony_ci      'document.documentElement.scrollTop = ' + this.controllerShow.getPageHeight() * scrollTopPercent
100d5a52cc2Sopenharmony_ci    )
101d5a52cc2Sopenharmony_ci  }
102d5a52cc2Sopenharmony_ci
103d5a52cc2Sopenharmony_ci  restoreFocus() {
104d5a52cc2Sopenharmony_ci    if (!AppStorage.Has('isRemoteFocusOnSearch')) {
105d5a52cc2Sopenharmony_ci      return
106d5a52cc2Sopenharmony_ci    }
107d5a52cc2Sopenharmony_ci    let isRemoteFocusOnSearch = AppStorage.Get<boolean>('isRemoteFocusOnSearch')
108d5a52cc2Sopenharmony_ci    if (isRemoteFocusOnSearch) {
109d5a52cc2Sopenharmony_ci      focusControl.requestFocus('searchInput')
110d5a52cc2Sopenharmony_ci    }
111d5a52cc2Sopenharmony_ci    AppStorage.Delete('isRemoteFocusOnSearch')
112d5a52cc2Sopenharmony_ci  }
113d5a52cc2Sopenharmony_ci
114d5a52cc2Sopenharmony_ci  noteContent = {
115d5a52cc2Sopenharmony_ci    callbackhtml: (html) => {
116d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, 'note uuid is:' + this.selectedNoteData.uuid)
117d5a52cc2Sopenharmony_ci      this.selectedNoteData.content_text = NoteUtil.contrastInitType(this.selectedNoteData.content_text);
118d5a52cc2Sopenharmony_ci      if (this.selectedNoteData.content_text === html ) {
119d5a52cc2Sopenharmony_ci        return;
120d5a52cc2Sopenharmony_ci      };
121d5a52cc2Sopenharmony_ci      this.selectedNoteData.content_text = html
122d5a52cc2Sopenharmony_ci      this.selectedNoteData.modified_time = new Date().getTime()
123d5a52cc2Sopenharmony_ci      let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
124d5a52cc2Sopenharmony_ci      predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
125d5a52cc2Sopenharmony_ci      RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
126d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, 'update note success:' + this.selectedNoteData.uuid)
127d5a52cc2Sopenharmony_ci      // save continue data
128d5a52cc2Sopenharmony_ci      let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
129d5a52cc2Sopenharmony_ci      AppStorage.SetOrCreate<string>('ContinueNote', continueNote)
130d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, "callbackhtml, set continue note success")
131d5a52cc2Sopenharmony_ci      return "AceString"
132d5a52cc2Sopenharmony_ci    },
133d5a52cc2Sopenharmony_ci    callbackImagePath: (imgName) => {
134d5a52cc2Sopenharmony_ci      // updata note image
135d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, 'note imgName is:' + imgName)
136d5a52cc2Sopenharmony_ci      this.selectedNoteData.content_img = imgName
137d5a52cc2Sopenharmony_ci    },
138d5a52cc2Sopenharmony_ci
139d5a52cc2Sopenharmony_ci    callbackhtmlSave: (html) => {
140d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, 'note uuid is:' + this.selectedNoteData.uuid)
141d5a52cc2Sopenharmony_ci      this.selectedNoteData.content_text = html
142d5a52cc2Sopenharmony_ci      this.selectedNoteData.modified_time = new Date().getTime()
143d5a52cc2Sopenharmony_ci      let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
144d5a52cc2Sopenharmony_ci      predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
145d5a52cc2Sopenharmony_ci      RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
146d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, 'update note success:' + this.selectedNoteData.uuid)
147d5a52cc2Sopenharmony_ci      this.sectionStatus = this.lastSectionStatus
148d5a52cc2Sopenharmony_ci      this.sectionStatus = mediaquery.matchMediaSync('(width < 2000)').matches ? 2 : 3
149d5a52cc2Sopenharmony_ci      // save continue data
150d5a52cc2Sopenharmony_ci      let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
151d5a52cc2Sopenharmony_ci      AppStorage.SetOrCreate<string>('ContinueNote', continueNote)
152d5a52cc2Sopenharmony_ci      AppStorage.SetOrCreate<number>('ContinueSection', this.sectionStatus)
153d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, "callbackhtmlSave, set continue note and section success")
154d5a52cc2Sopenharmony_ci      return "AceString"
155d5a52cc2Sopenharmony_ci    },
156d5a52cc2Sopenharmony_ci
157d5a52cc2Sopenharmony_ci    callbackScheduledSave: (html) => {
158d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, 'callbackScheduledSave')
159d5a52cc2Sopenharmony_ci      if (this.selectedNoteData.content_text == html) {
160d5a52cc2Sopenharmony_ci        LogUtil.info(TAG, 'callbackScheduledSave the same value return')
161d5a52cc2Sopenharmony_ci        return;
162d5a52cc2Sopenharmony_ci      }
163d5a52cc2Sopenharmony_ci      this.selectedNoteData.content_text = html
164d5a52cc2Sopenharmony_ci      this.selectedNoteData.modified_time = new Date().getTime()
165d5a52cc2Sopenharmony_ci      let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
166d5a52cc2Sopenharmony_ci      predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
167d5a52cc2Sopenharmony_ci      RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
168d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, 'callbackScheduledSave, update note success:' + this.selectedNoteData.uuid)
169d5a52cc2Sopenharmony_ci      // save continue data
170d5a52cc2Sopenharmony_ci      let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
171d5a52cc2Sopenharmony_ci      AppStorage.SetOrCreate<string>('ContinueNote', continueNote)
172d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, 'callbackScheduledSave, set continue note success')
173d5a52cc2Sopenharmony_ci    },
174d5a52cc2Sopenharmony_ci
175d5a52cc2Sopenharmony_ci    callbackPasteImage: (html) => {
176d5a52cc2Sopenharmony_ci      if (html) {
177d5a52cc2Sopenharmony_ci        LogUtil.info(TAG, 'paste info' + html)
178d5a52cc2Sopenharmony_ci        let realHtml = ""
179d5a52cc2Sopenharmony_ci        let base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/
180d5a52cc2Sopenharmony_ci        if (html && html.indexOf("base64") > 0) {
181d5a52cc2Sopenharmony_ci          LogUtil.info(TAG, " getSrcFromHtml, src[1] : " + html)
182d5a52cc2Sopenharmony_ci          let imgData = html.split(',')[1];
183d5a52cc2Sopenharmony_ci          let imgType = 'png'
184d5a52cc2Sopenharmony_ci          if (html.indexOf("jpeg") > 0) {
185d5a52cc2Sopenharmony_ci            imgType = 'jpg'
186d5a52cc2Sopenharmony_ci          } else if (html.indexOf("gif") > 0) {
187d5a52cc2Sopenharmony_ci            imgType = 'gif'
188d5a52cc2Sopenharmony_ci          }
189d5a52cc2Sopenharmony_ci          let filePath = ""
190d5a52cc2Sopenharmony_ci          if (base64regex.test(imgData)) {
191d5a52cc2Sopenharmony_ci            let base64 = new util.Base64()
192d5a52cc2Sopenharmony_ci            let decodeArr = base64.decodeSync(imgData)
193d5a52cc2Sopenharmony_ci            filePath = OperationUtils.saveImageData(decodeArr, imgType)
194d5a52cc2Sopenharmony_ci          } else {
195d5a52cc2Sopenharmony_ci            filePath = OperationUtils.saveImage(imgData, imgType)
196d5a52cc2Sopenharmony_ci          }
197d5a52cc2Sopenharmony_ci          realHtml = "file://" + filePath
198d5a52cc2Sopenharmony_ci        }
199d5a52cc2Sopenharmony_ci        LogUtil.info(TAG, 'paste info11-' + realHtml)
200d5a52cc2Sopenharmony_ci        this.controllerShow.runJavaScript("javascript:RICH_EDITOR.insertImageHtml('" + realHtml + "')")
201d5a52cc2Sopenharmony_ci        LogUtil.info(TAG, 'paste info11--' + realHtml)
202d5a52cc2Sopenharmony_ci      } else {
203d5a52cc2Sopenharmony_ci        LogUtil.info(TAG, 'paste info22225')
204d5a52cc2Sopenharmony_ci      }
205d5a52cc2Sopenharmony_ci    },
206d5a52cc2Sopenharmony_ci    callbackGetSize: (fontSize) => {
207d5a52cc2Sopenharmony_ci      if (fontSize === 16) {
208d5a52cc2Sopenharmony_ci        this.selectedNoteData.slider_value = 0
209d5a52cc2Sopenharmony_ci      } else if (fontSize === 18) {
210d5a52cc2Sopenharmony_ci        this.selectedNoteData.slider_value = 4
211d5a52cc2Sopenharmony_ci      } else if (fontSize === 24) {
212d5a52cc2Sopenharmony_ci        this.selectedNoteData.slider_value = 8
213d5a52cc2Sopenharmony_ci      } else if (fontSize === 32) {
214d5a52cc2Sopenharmony_ci        this.selectedNoteData.slider_value = 12
215d5a52cc2Sopenharmony_ci      } else if (fontSize === 48) {
216d5a52cc2Sopenharmony_ci        this.selectedNoteData.slider_value = 16
217d5a52cc2Sopenharmony_ci      }
218d5a52cc2Sopenharmony_ci    }
219d5a52cc2Sopenharmony_ci  }
220d5a52cc2Sopenharmony_ci
221d5a52cc2Sopenharmony_ci  build() {
222d5a52cc2Sopenharmony_ci    Stack({ alignContent: Alignment.Bottom }) {
223d5a52cc2Sopenharmony_ci      Flex({ direction: FlexDirection.Column, wrap: FlexWrap.NoWrap,
224d5a52cc2Sopenharmony_ci        alignItems: ItemAlign.Start, alignContent: FlexAlign.SpaceAround }) {
225d5a52cc2Sopenharmony_ci        Column() {
226d5a52cc2Sopenharmony_ci          ToolBarComp({ controllerShow: this.controllerShow })
227d5a52cc2Sopenharmony_ci        }
228d5a52cc2Sopenharmony_ci        .margin({ left: 24, right: 24 })
229d5a52cc2Sopenharmony_ci
230d5a52cc2Sopenharmony_ci        Column() {
231d5a52cc2Sopenharmony_ci          NoteContentOverViewComp({ controllerShow: this.controllerShow })
232d5a52cc2Sopenharmony_ci          Text(this.refreshFlag.toString()).visibility(Visibility.None)
233d5a52cc2Sopenharmony_ci          Text(this.AllNoteArray.length.toString()).visibility(Visibility.None) // 用于强制刷新使用
234d5a52cc2Sopenharmony_ci
235d5a52cc2Sopenharmony_ci          Web({ src: $rawfile('editor.html'), controller: this.controllerShow })
236d5a52cc2Sopenharmony_ci            .javaScriptAccess(true)
237d5a52cc2Sopenharmony_ci            .javaScriptProxy({
238d5a52cc2Sopenharmony_ci              object: this.noteContent,
239d5a52cc2Sopenharmony_ci              name: "callBackToApp", // html-->  name.method
240d5a52cc2Sopenharmony_ci              methodList: ["callbackhtml", "callbackhtmlSave", "callbackScheduledSave", "callbackGetSize", "callbackPasteImage", "callbackImagePath"],
241d5a52cc2Sopenharmony_ci              controller: this.controllerShow
242d5a52cc2Sopenharmony_ci            })
243d5a52cc2Sopenharmony_ci            .enabled(this.sectionStatus !== 1 ? false : true)
244d5a52cc2Sopenharmony_ci            .onPageEnd((e) => {
245d5a52cc2Sopenharmony_ci              if (this.dpi <= 240) {
246d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript("changeSizeToRk()")
247d5a52cc2Sopenharmony_ci              } else if (this.dpi <= 320 && this.dpi > 240) {
248d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript("changeSizeToPhone()")
249d5a52cc2Sopenharmony_ci              } else {
250d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript("changeSizeToTablet()")
251d5a52cc2Sopenharmony_ci              }
252d5a52cc2Sopenharmony_ci              if (AppStorage.Get('breakPoint') !== 'sm') {
253d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript("hiddenButton()")
254d5a52cc2Sopenharmony_ci              }
255d5a52cc2Sopenharmony_ci              LogUtil.info(TAG, "finish loadurl")
256d5a52cc2Sopenharmony_ci              if (this.selectedNoteData) {
257d5a52cc2Sopenharmony_ci                let self = this
258d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript(
259d5a52cc2Sopenharmony_ci                  "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')",
260d5a52cc2Sopenharmony_ci                  () => {
261d5a52cc2Sopenharmony_ci                    // wait for the image in the note to load
262d5a52cc2Sopenharmony_ci                    setTimeout(function () {
263d5a52cc2Sopenharmony_ci                      self.restoreScrollTop()
264d5a52cc2Sopenharmony_ci                      self.restoreFocus()
265d5a52cc2Sopenharmony_ci                    }, 100)
266d5a52cc2Sopenharmony_ci                  }
267d5a52cc2Sopenharmony_ci                )
268d5a52cc2Sopenharmony_ci              }
269d5a52cc2Sopenharmony_ci              // 初次加载为为小屏预览模式
270d5a52cc2Sopenharmony_ci              if (this.sectionStatus != 1) {
271d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript("RICH_EDITOR.setInputEnabled(false)")
272d5a52cc2Sopenharmony_ci              }
273d5a52cc2Sopenharmony_ci            })
274d5a52cc2Sopenharmony_ci            .imageAccess(true)
275d5a52cc2Sopenharmony_ci            .onlineImageAccess(true)
276d5a52cc2Sopenharmony_ci            .fileAccess(true)
277d5a52cc2Sopenharmony_ci            .domStorageAccess(true)
278d5a52cc2Sopenharmony_ci            .zoomAccess(false)
279d5a52cc2Sopenharmony_ci            .height('88%')
280d5a52cc2Sopenharmony_ci            .width('100%')
281d5a52cc2Sopenharmony_ci            .onScroll((event) => {
282d5a52cc2Sopenharmony_ci              this.storeScrollTop(event.yOffset)
283d5a52cc2Sopenharmony_ci            })
284d5a52cc2Sopenharmony_ci        }
285d5a52cc2Sopenharmony_ci        .margin({ left: 24, right: 24 })
286d5a52cc2Sopenharmony_ci        //        .width(StyleConstants.PERCENTAGE_100)
287d5a52cc2Sopenharmony_ci        .enabled(this.selectedNoteData && this.selectedNoteData.is_deleted == Delete.Yes ? false : true)
288d5a52cc2Sopenharmony_ci        .onClick(() => {
289d5a52cc2Sopenharmony_ci          this.issave = 0
290d5a52cc2Sopenharmony_ci          LogUtil.info(TAG, "editModel : " + this.editModel + ", sectionStatus : " + this.sectionStatus)
291d5a52cc2Sopenharmony_ci          let isContinue = AppStorage.Get<boolean>('IsContinue')
292d5a52cc2Sopenharmony_ci          LogUtil.info(TAG, "isContinue : " + isContinue)
293d5a52cc2Sopenharmony_ci          // 点击第三屏进入全屏编辑模式
294d5a52cc2Sopenharmony_ci          if (this.sectionStatus != 1 || isContinue) {
295d5a52cc2Sopenharmony_ci            this.asideWidth = 0
296d5a52cc2Sopenharmony_ci            this.lastSectionStatus = this.sectionStatus
297d5a52cc2Sopenharmony_ci            this.sectionStatus = 1
298d5a52cc2Sopenharmony_ci            this.controllerShow.runJavaScript("RICH_EDITOR.setInputEnabled(true)")
299d5a52cc2Sopenharmony_ci            // 添加定时器:3s自动保存
300d5a52cc2Sopenharmony_ci            if (timeId) {
301d5a52cc2Sopenharmony_ci              clearInterval(timeId)
302d5a52cc2Sopenharmony_ci            }
303d5a52cc2Sopenharmony_ci            timeId = setInterval(() => {
304d5a52cc2Sopenharmony_ci              this.controllerShow.runJavaScript("scheduledSaveContent()")
305d5a52cc2Sopenharmony_ci            }, 3000)
306d5a52cc2Sopenharmony_ci            LogUtil.info(TAG, "setInterval timeId : " + timeId)
307d5a52cc2Sopenharmony_ci            // save continue data
308d5a52cc2Sopenharmony_ci            AppStorage.SetOrCreate<number>('ContinueSection', this.sectionStatus)
309d5a52cc2Sopenharmony_ci            LogUtil.info(TAG, "set continue section success")
310d5a52cc2Sopenharmony_ci            this.editModel = !this.editModel
311d5a52cc2Sopenharmony_ci            AppStorage.SetOrCreate<boolean>('IsContinue', false)
312d5a52cc2Sopenharmony_ci          }
313d5a52cc2Sopenharmony_ci        })
314d5a52cc2Sopenharmony_ci      }
315d5a52cc2Sopenharmony_ci      .id(this.isUpdate + '')
316d5a52cc2Sopenharmony_ci      .height(StyleConstants.PERCENTAGE_100)
317d5a52cc2Sopenharmony_ci      .visibility(FolderUtil.getNoteCount(AppStorage.Get('AllNoteArray'), this.selectedFolderData.uuid) == 0 ? Visibility.Hidden : Visibility.Visible)
318d5a52cc2Sopenharmony_ci
319d5a52cc2Sopenharmony_ci      Column() {
320d5a52cc2Sopenharmony_ci      }
321d5a52cc2Sopenharmony_ci      .height("100%")
322d5a52cc2Sopenharmony_ci      .width("100%")
323d5a52cc2Sopenharmony_ci      .backgroundColor("#18181A")
324d5a52cc2Sopenharmony_ci      .opacity(0.1)
325d5a52cc2Sopenharmony_ci      .visibility(this.search ? Visibility.Visible : Visibility.Hidden)
326d5a52cc2Sopenharmony_ci    }
327d5a52cc2Sopenharmony_ci    .height(StyleConstants.PERCENTAGE_100)
328d5a52cc2Sopenharmony_ci    .width(StyleConstants.PERCENTAGE_100)
329d5a52cc2Sopenharmony_ci  }
330d5a52cc2Sopenharmony_ci
331d5a52cc2Sopenharmony_ci  aboutToAppear(): void {
332d5a52cc2Sopenharmony_ci    LogUtil.info(TAG, "aboutToAppear")
333d5a52cc2Sopenharmony_ci  }
334d5a52cc2Sopenharmony_ci
335d5a52cc2Sopenharmony_ci  aboutToDisappear(): void {
336d5a52cc2Sopenharmony_ci    clearInterval(timeId)
337d5a52cc2Sopenharmony_ci    LogUtil.info(TAG, "aboutToDisappear")
338d5a52cc2Sopenharmony_ci  }
339d5a52cc2Sopenharmony_ci}
340d5a52cc2Sopenharmony_ci
341d5a52cc2Sopenharmony_ci@Component
342d5a52cc2Sopenharmony_ciexport struct NoteContentOverViewComp {
343d5a52cc2Sopenharmony_ci  @Consume('SelectedNoteData') selectedNoteData: NoteData
344d5a52cc2Sopenharmony_ci  @StorageLink('AllFolderArray') @Watch('getArray') AllFolderArray: FolderData[] = []
345d5a52cc2Sopenharmony_ci  @StorageLink('CheckedNoteArray') CheckedNoteArray: NoteData[] = []
346d5a52cc2Sopenharmony_ci  @StorageLink('AllNoteArray') AllNoteArray: NoteData[] = AppStorage.Link('AllNoteArray')
347d5a52cc2Sopenharmony_ci  @Consume('SelectedFolderData') selectedFolderData: FolderData
348d5a52cc2Sopenharmony_ci  @Consume('EditModel') editModel: boolean
349d5a52cc2Sopenharmony_ci  @Consume('SectionStatus') sectionStatus: number
350d5a52cc2Sopenharmony_ci  @Consume('RefreshFlag') refreshFlag: number
351d5a52cc2Sopenharmony_ci  @StorageLink('isUpdate') isUpdate: boolean = false
352d5a52cc2Sopenharmony_ci  NoteDataMoveArray: FolderData[]
353d5a52cc2Sopenharmony_ci  controllerShow: WebviewController
354d5a52cc2Sopenharmony_ci  editTitleDialogCtl: CustomDialogController = new CustomDialogController({
355d5a52cc2Sopenharmony_ci    builder: EditTitleDialog({ confirm: this.confirm.bind(this) }),
356d5a52cc2Sopenharmony_ci    alignment: DialogAlignment.Center,
357d5a52cc2Sopenharmony_ci    autoCancel: false,
358d5a52cc2Sopenharmony_ci    customStyle: true,
359d5a52cc2Sopenharmony_ci  })
360d5a52cc2Sopenharmony_ci
361d5a52cc2Sopenharmony_ci  getArray() {
362d5a52cc2Sopenharmony_ci    this.NoteDataMoveArray = this.AllFolderArray.slice(2, this.AllFolderArray.length);
363d5a52cc2Sopenharmony_ci    if (this.AllFolderArray[1] === undefined || this.AllFolderArray[1] === null) {
364d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, "this AllFolderArray[1] undefined")
365d5a52cc2Sopenharmony_ci      return
366d5a52cc2Sopenharmony_ci    }
367d5a52cc2Sopenharmony_ci    this.NoteDataMoveArray.push(this.AllFolderArray[1]);
368d5a52cc2Sopenharmony_ci  }
369d5a52cc2Sopenharmony_ci
370d5a52cc2Sopenharmony_ci  aboutToAppear() {
371d5a52cc2Sopenharmony_ci    this.NoteDataMoveArray = this.AllFolderArray.slice(2, this.AllFolderArray.length);
372d5a52cc2Sopenharmony_ci    if (this.AllFolderArray[1] === undefined || this.AllFolderArray[1] === null) {
373d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, "this AllFolderArray[1] undefined")
374d5a52cc2Sopenharmony_ci      return
375d5a52cc2Sopenharmony_ci    }
376d5a52cc2Sopenharmony_ci    this.NoteDataMoveArray.push(this.AllFolderArray[1]);
377d5a52cc2Sopenharmony_ci  }
378d5a52cc2Sopenharmony_ci
379d5a52cc2Sopenharmony_ci  aboutToDisappear() {
380d5a52cc2Sopenharmony_ci    this.editTitleDialogCtl = null
381d5a52cc2Sopenharmony_ci  }
382d5a52cc2Sopenharmony_ci
383d5a52cc2Sopenharmony_ci  confirm(newTitle: string) {
384d5a52cc2Sopenharmony_ci    this.selectedNoteData.title = newTitle
385d5a52cc2Sopenharmony_ci    this.selectedNoteData.modified_time = new Date().getTime()
386d5a52cc2Sopenharmony_ci    let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
387d5a52cc2Sopenharmony_ci    predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
388d5a52cc2Sopenharmony_ci    RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
389d5a52cc2Sopenharmony_ci    NoteUtil.refreshAll()
390d5a52cc2Sopenharmony_ci  }
391d5a52cc2Sopenharmony_ci
392d5a52cc2Sopenharmony_ci  @Builder MenuBuilder() {
393d5a52cc2Sopenharmony_ci    Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
394d5a52cc2Sopenharmony_ci      List() {
395d5a52cc2Sopenharmony_ci        if (this.NoteDataMoveArray !== undefined && this.NoteDataMoveArray !== null && this.NoteDataMoveArray !== []) {
396d5a52cc2Sopenharmony_ci          ForEach(this.NoteDataMoveArray, (item) => {
397d5a52cc2Sopenharmony_ci            ListItem() {
398d5a52cc2Sopenharmony_ci              NoteDataMoveItemCompTablet({ folderItem: item, uuid: this.selectedNoteData.folder_uuid })
399d5a52cc2Sopenharmony_ci            }
400d5a52cc2Sopenharmony_ci            .onClick(() => {
401d5a52cc2Sopenharmony_ci              this.selectedNoteData.folder_uuid = item.uuid
402d5a52cc2Sopenharmony_ci              let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
403d5a52cc2Sopenharmony_ci              predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
404d5a52cc2Sopenharmony_ci              RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
405d5a52cc2Sopenharmony_ci              if (this.sectionStatus != 1) {
406d5a52cc2Sopenharmony_ci                this.selectedNoteData = NoteUtil.getFirstNoteData(this.AllNoteArray, this.selectedFolderData.uuid)
407d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript(
408d5a52cc2Sopenharmony_ci                  "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')"
409d5a52cc2Sopenharmony_ci                )
410d5a52cc2Sopenharmony_ci                this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
411d5a52cc2Sopenharmony_ci              } else {
412d5a52cc2Sopenharmony_ci                this.selectedFolderData = FolderUtil.getFolderData(AppStorage.Get('AllFolderArray'), item.uuid)
413d5a52cc2Sopenharmony_ci              }
414d5a52cc2Sopenharmony_ci              // save continue data
415d5a52cc2Sopenharmony_ci              let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
416d5a52cc2Sopenharmony_ci              AppStorage.SetOrCreate<string>('ContinueNote', continueNote)
417d5a52cc2Sopenharmony_ci              LogUtil.info(TAG, "NoteContentOverViewComp, MenuBuilder, set continue note success")
418d5a52cc2Sopenharmony_ci              NoteUtil.refreshAll()
419d5a52cc2Sopenharmony_ci            })
420d5a52cc2Sopenharmony_ci          }, noteItem => noteItem.uuid)
421d5a52cc2Sopenharmony_ci        }
422d5a52cc2Sopenharmony_ci      }.listDirection(Axis.Vertical)
423d5a52cc2Sopenharmony_ci      .edgeEffect(EdgeEffect.Spring)
424d5a52cc2Sopenharmony_ci      .height(this.AllFolderArray.length > 12 ? 504 : (this.AllFolderArray.length - 3) * 56)
425d5a52cc2Sopenharmony_ci    }
426d5a52cc2Sopenharmony_ci    .width(148)
427d5a52cc2Sopenharmony_ci    .backgroundColor($r("app.color.color_fffffB"))
428d5a52cc2Sopenharmony_ci    .padding({ left: 24, right: 24 })
429d5a52cc2Sopenharmony_ci  }
430d5a52cc2Sopenharmony_ci
431d5a52cc2Sopenharmony_ci  build() {
432d5a52cc2Sopenharmony_ci    if (this.selectedNoteData) {
433d5a52cc2Sopenharmony_ci      Flex({ direction: FlexDirection.Column, wrap: FlexWrap.NoWrap,
434d5a52cc2Sopenharmony_ci        justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) {
435d5a52cc2Sopenharmony_ci        Row() {
436d5a52cc2Sopenharmony_ci          Text(this.selectedNoteData.title)
437d5a52cc2Sopenharmony_ci            .id(this.isUpdate + '')
438d5a52cc2Sopenharmony_ci            .fontSize(30)
439d5a52cc2Sopenharmony_ci            .margin({ left: 0, right: 24 })
440d5a52cc2Sopenharmony_ci            .onClick(() => {
441d5a52cc2Sopenharmony_ci              clearInterval(timeId)
442d5a52cc2Sopenharmony_ci              this.editTitleDialogCtl.open()
443d5a52cc2Sopenharmony_ci              // save continue data
444d5a52cc2Sopenharmony_ci              AppStorage.SetOrCreate<number>('ContinueSection', this.sectionStatus)
445d5a52cc2Sopenharmony_ci              LogUtil.info(TAG, "NoteContentComp, set continue section success")
446d5a52cc2Sopenharmony_ci            })
447d5a52cc2Sopenharmony_ci        }.height(40)
448d5a52cc2Sopenharmony_ci        .width(StyleConstants.PERCENTAGE_100)
449d5a52cc2Sopenharmony_ci
450d5a52cc2Sopenharmony_ci        Row() {
451d5a52cc2Sopenharmony_ci          Text(DateUtil.formateDateForNoteContent(new Date(this.selectedNoteData.modified_time)))
452d5a52cc2Sopenharmony_ci            .id(this.isUpdate + '')
453d5a52cc2Sopenharmony_ci            .fontSize(12)
454d5a52cc2Sopenharmony_ci            .padding({ top: 4, bottom: 4 })
455d5a52cc2Sopenharmony_ci            .fontColor($r("app.color.modified_time_font_color"))
456d5a52cc2Sopenharmony_ci            .margin({ left: 0 })
457d5a52cc2Sopenharmony_ci          Row() {
458d5a52cc2Sopenharmony_ci            Text(FolderUtil.getFolderText(FolderUtil.getFolderData(AppStorage.Get('AllFolderArray'), this.selectedNoteData.folder_uuid)) ==
459d5a52cc2Sopenharmony_ci                 folderTextMap["sys_def_myFavorites_uuid"] ? folderTextMap["sys_def_unClassified_uuid"] :
460d5a52cc2Sopenharmony_ci            FolderUtil.getFolderText(FolderUtil.getFolderData(AppStorage.Get('AllFolderArray'), this.selectedNoteData.folder_uuid)))
461d5a52cc2Sopenharmony_ci              .id(this.isUpdate + '')
462d5a52cc2Sopenharmony_ci              .fontSize(12)
463d5a52cc2Sopenharmony_ci              .fontColor($r("app.color.list_modified_time_font_color"))
464d5a52cc2Sopenharmony_ci              .padding({ top: 1 })
465d5a52cc2Sopenharmony_ci            Image($r('app.media.triangle'))
466d5a52cc2Sopenharmony_ci              .width(6)
467d5a52cc2Sopenharmony_ci              .height(12)
468d5a52cc2Sopenharmony_ci              .margin({ left: 4 })
469d5a52cc2Sopenharmony_ci          }
470d5a52cc2Sopenharmony_ci          .id(this.isUpdate + '')
471d5a52cc2Sopenharmony_ci          .padding({ left: 8, right: 8, top: 4, bottom: 4 })
472d5a52cc2Sopenharmony_ci          .margin({ left: 8 })
473d5a52cc2Sopenharmony_ci          .borderRadius(16)
474d5a52cc2Sopenharmony_ci          .backgroundColor(NoteUtil.getNoteBgColor(AppStorage.Get('AllFolderArray'), this.selectedNoteData.folder_uuid, SysDefFolderUuid.AllNotes, false))
475d5a52cc2Sopenharmony_ci          .bindMenu(this.MenuBuilder)
476d5a52cc2Sopenharmony_ci        }.alignItems(VerticalAlign.Top).height(40).width(StyleConstants.PERCENTAGE_100)
477d5a52cc2Sopenharmony_ci      }
478d5a52cc2Sopenharmony_ci      .opacity(this.selectedNoteData.is_deleted == Delete.Yes ? 0.4 : 1)
479d5a52cc2Sopenharmony_ci      .width(StyleConstants.PERCENTAGE_100)
480d5a52cc2Sopenharmony_ci      .height(80)
481d5a52cc2Sopenharmony_ci    }
482d5a52cc2Sopenharmony_ci  }
483d5a52cc2Sopenharmony_ci}
484d5a52cc2Sopenharmony_ci
485d5a52cc2Sopenharmony_ci@Component
486d5a52cc2Sopenharmony_ciexport struct ToolBarComp {
487d5a52cc2Sopenharmony_ci  @Consume('SelectedNoteData') selectedNoteData: NoteData
488d5a52cc2Sopenharmony_ci  @Consume('RefreshFlag') refreshFlag: number
489d5a52cc2Sopenharmony_ci  @Consume('SectionStatus') sectionStatus: number
490d5a52cc2Sopenharmony_ci  @Consume('LastSectionStatus') lastSectionStatus: number
491d5a52cc2Sopenharmony_ci  @Consume('SelectedFolderData') selectedFolderData: FolderData
492d5a52cc2Sopenharmony_ci  @Consume('ChooseNote') chooseNote: boolean
493d5a52cc2Sopenharmony_ci  @Consume('PortraitModel') portraitModel: boolean
494d5a52cc2Sopenharmony_ci  @StorageLink('AllNoteArray') AllNoteArray: NoteData[] = AppStorage.Link('AllNoteArray')
495d5a52cc2Sopenharmony_ci  @Consume('EditModel') editModel: boolean
496d5a52cc2Sopenharmony_ci  @Consume('Issave') issave: number
497d5a52cc2Sopenharmony_ci  controllerShow: webview.WebviewController = new webview.WebviewController();
498d5a52cc2Sopenharmony_ci  private context = getContext(this)
499d5a52cc2Sopenharmony_ci  noteDataDeleteDialogCtl: CustomDialogController = new CustomDialogController({
500d5a52cc2Sopenharmony_ci    builder: DeleteDialog({ onConfirm: this.onDeleteConfirm.bind(this) }),
501d5a52cc2Sopenharmony_ci    alignment: DialogAlignment.Center,
502d5a52cc2Sopenharmony_ci    autoCancel: false,
503d5a52cc2Sopenharmony_ci    customStyle: true,
504d5a52cc2Sopenharmony_ci  })
505d5a52cc2Sopenharmony_ci  @Consume('AsideWidth') asideWidth: number
506d5a52cc2Sopenharmony_ci
507d5a52cc2Sopenharmony_ci  aboutToDisappear() {
508d5a52cc2Sopenharmony_ci    this.noteDataDeleteDialogCtl = null
509d5a52cc2Sopenharmony_ci    this.editContentDialogCtl = null
510d5a52cc2Sopenharmony_ci  }
511d5a52cc2Sopenharmony_ci
512d5a52cc2Sopenharmony_ci  onDeleteConfirm() {
513d5a52cc2Sopenharmony_ci    if (this.selectedFolderData.uuid != SysDefFolderUuid.RecentDeletes) {
514d5a52cc2Sopenharmony_ci      this.selectedNoteData.is_deleted = Delete.Yes
515d5a52cc2Sopenharmony_ci      this.selectedNoteData.deleted_time = new Date().getTime()
516d5a52cc2Sopenharmony_ci      // update note to db
517d5a52cc2Sopenharmony_ci      let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
518d5a52cc2Sopenharmony_ci      predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
519d5a52cc2Sopenharmony_ci      RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
520d5a52cc2Sopenharmony_ci    } else {
521d5a52cc2Sopenharmony_ci      NoteUtil.removeNoteData(this.AllNoteArray, this.selectedNoteData.uuid)
522d5a52cc2Sopenharmony_ci      // delete note from db
523d5a52cc2Sopenharmony_ci      let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
524d5a52cc2Sopenharmony_ci      predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
525d5a52cc2Sopenharmony_ci      RdbStoreUtil.delete(predicates_note, null)
526d5a52cc2Sopenharmony_ci    }
527d5a52cc2Sopenharmony_ci    this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
528d5a52cc2Sopenharmony_ci    this.selectedNoteData = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), this.selectedFolderData.uuid)
529d5a52cc2Sopenharmony_ci    try {
530d5a52cc2Sopenharmony_ci      this.controllerShow.runJavaScript("RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text! + "')");
531d5a52cc2Sopenharmony_ci    } catch (error) {
532d5a52cc2Sopenharmony_ci      LogUtil.info(TAG, `setHtml error. code:${JSON.stringify(error.code)},message:${error.message}`);
533d5a52cc2Sopenharmony_ci    }
534d5a52cc2Sopenharmony_ci    this.chooseNote = false
535d5a52cc2Sopenharmony_ci    // save continue data
536d5a52cc2Sopenharmony_ci    let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
537d5a52cc2Sopenharmony_ci    AppStorage.SetOrCreate<string>('ContinueNote', continueNote)
538d5a52cc2Sopenharmony_ci    LogUtil.info(TAG, "NoteContentOverViewComp, set continue note success")
539d5a52cc2Sopenharmony_ci    AppStorage.SetOrCreate('isUpdate', true)
540d5a52cc2Sopenharmony_ci  }
541d5a52cc2Sopenharmony_ci
542d5a52cc2Sopenharmony_ci  editContentDialogCtl: CustomDialogController = new CustomDialogController({
543d5a52cc2Sopenharmony_ci    builder: EditContentDialog({ confirm: this.confirm.bind(this) }),
544d5a52cc2Sopenharmony_ci    alignment: DialogAlignment.Bottom,
545d5a52cc2Sopenharmony_ci    autoCancel: true,
546d5a52cc2Sopenharmony_ci    customStyle: true,
547d5a52cc2Sopenharmony_ci  })
548d5a52cc2Sopenharmony_ci
549d5a52cc2Sopenharmony_ci  confirm(excuteJs: string) {
550d5a52cc2Sopenharmony_ci    this.controllerShow.runJavaScript(excuteJs)
551d5a52cc2Sopenharmony_ci  }
552d5a52cc2Sopenharmony_ci
553d5a52cc2Sopenharmony_ci  build() {
554d5a52cc2Sopenharmony_ci    Flex({ direction: FlexDirection.Row, wrap: FlexWrap.NoWrap,
555d5a52cc2Sopenharmony_ci      justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) {
556d5a52cc2Sopenharmony_ci      Image(this.sectionStatus == 1 ? $r('app.media.narrow') : $r('app.media.zoom'))
557d5a52cc2Sopenharmony_ci        .height(24)
558d5a52cc2Sopenharmony_ci        .width(24)
559d5a52cc2Sopenharmony_ci        .onClick(() => {
560d5a52cc2Sopenharmony_ci          if (this.sectionStatus != 1) {
561d5a52cc2Sopenharmony_ci            this.lastSectionStatus = this.sectionStatus
562d5a52cc2Sopenharmony_ci            this.sectionStatus = 1
563d5a52cc2Sopenharmony_ci            this.asideWidth = 0
564d5a52cc2Sopenharmony_ci            this.controllerShow.runJavaScript("RICH_EDITOR.setInputEnabled(true)")
565d5a52cc2Sopenharmony_ci          } else {
566d5a52cc2Sopenharmony_ci            if (this.lastSectionStatus != undefined) {
567d5a52cc2Sopenharmony_ci              this.asideWidth = 200
568d5a52cc2Sopenharmony_ci              // 切换为小屏预览模式
569d5a52cc2Sopenharmony_ci              this.controllerShow.runJavaScript("RICH_EDITOR.setInputEnabled(false)")
570d5a52cc2Sopenharmony_ci              this.sectionStatus = this.lastSectionStatus
571d5a52cc2Sopenharmony_ci              // 退出全屏时存库
572d5a52cc2Sopenharmony_ci              LogUtil.info(TAG, "close note" + this.selectedNoteData.uuid)
573d5a52cc2Sopenharmony_ci              this.controllerShow.runJavaScript("saveHtmlContent()")
574d5a52cc2Sopenharmony_ci              //退出键盘
575d5a52cc2Sopenharmony_ci              // @ts-ignore
576d5a52cc2Sopenharmony_ci              inputMethod.getController().stopInputSession();
577d5a52cc2Sopenharmony_ci              // 清除定时器
578d5a52cc2Sopenharmony_ci              if (timeId != undefined) {
579d5a52cc2Sopenharmony_ci                LogUtil.info(TAG, "zoom, clearInterval timeId : " + timeId)
580d5a52cc2Sopenharmony_ci                clearInterval(timeId)
581d5a52cc2Sopenharmony_ci              }
582d5a52cc2Sopenharmony_ci            } else {
583d5a52cc2Sopenharmony_ci              this.sectionStatus = 3
584d5a52cc2Sopenharmony_ci            }
585d5a52cc2Sopenharmony_ci          }
586d5a52cc2Sopenharmony_ci          this.editModel = !this.editModel
587d5a52cc2Sopenharmony_ci          // save continue data
588d5a52cc2Sopenharmony_ci          AppStorage.SetOrCreate<number>('ContinueSection', this.sectionStatus)
589d5a52cc2Sopenharmony_ci          LogUtil.info(TAG, "ToolBarComp, set continue section success")
590d5a52cc2Sopenharmony_ci          NoteUtil.refreshAll()
591d5a52cc2Sopenharmony_ci        })
592d5a52cc2Sopenharmony_ci        .visibility(!this.selectedNoteData ? Visibility.None : this.selectedNoteData.is_deleted == Delete.Yes ? Visibility.None : Visibility.Visible)
593d5a52cc2Sopenharmony_ci
594d5a52cc2Sopenharmony_ci      if (this.selectedNoteData) {
595d5a52cc2Sopenharmony_ci        if (this.selectedNoteData.is_deleted == Delete.Yes) {
596d5a52cc2Sopenharmony_ci          Row({ space: StyleConstants.SPACE_24 }) {
597d5a52cc2Sopenharmony_ci            Image($r('app.media.delete'))
598d5a52cc2Sopenharmony_ci              .height(24)
599d5a52cc2Sopenharmony_ci              .width(24)
600d5a52cc2Sopenharmony_ci              .onClick(() => {
601d5a52cc2Sopenharmony_ci                this.noteDataDeleteDialogCtl.open()
602d5a52cc2Sopenharmony_ci              })
603d5a52cc2Sopenharmony_ci            Image($r('app.media.recover'))
604d5a52cc2Sopenharmony_ci              .height(24)
605d5a52cc2Sopenharmony_ci              .width(24)
606d5a52cc2Sopenharmony_ci              .onClick(() => {
607d5a52cc2Sopenharmony_ci                this.selectedNoteData.is_deleted = Delete.No
608d5a52cc2Sopenharmony_ci                this.selectedNoteData.deleted_time = 0
609d5a52cc2Sopenharmony_ci                let context: any = getContext(this)
610d5a52cc2Sopenharmony_ci                let resource = {
611d5a52cc2Sopenharmony_ci                  bundleName: "com.ohos.note",
612d5a52cc2Sopenharmony_ci                  moduleName: "default",
613d5a52cc2Sopenharmony_ci                  id: $r('app.string.restore').id
614d5a52cc2Sopenharmony_ci                };
615d5a52cc2Sopenharmony_ci                context.resourceManager.getString(resource, (error, value) => {
616d5a52cc2Sopenharmony_ci                  if (error != null) {
617d5a52cc2Sopenharmony_ci                    LogUtil.error(TAG, "error is " + error);
618d5a52cc2Sopenharmony_ci                  } else {
619d5a52cc2Sopenharmony_ci                    prompt.showToast({ message: value, duration: 2000 });
620d5a52cc2Sopenharmony_ci                  }
621d5a52cc2Sopenharmony_ci                });
622d5a52cc2Sopenharmony_ci                this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
623d5a52cc2Sopenharmony_ci                this.chooseNote = false
624d5a52cc2Sopenharmony_ci                // update note to db
625d5a52cc2Sopenharmony_ci                let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
626d5a52cc2Sopenharmony_ci                predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
627d5a52cc2Sopenharmony_ci                RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
628d5a52cc2Sopenharmony_ci
629d5a52cc2Sopenharmony_ci                this.selectedNoteData = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), this.selectedFolderData.uuid)
630d5a52cc2Sopenharmony_ci                this.controllerShow.runJavaScript(
631d5a52cc2Sopenharmony_ci                  "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')"
632d5a52cc2Sopenharmony_ci                )
633d5a52cc2Sopenharmony_ci                // save continue data
634d5a52cc2Sopenharmony_ci                let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
635d5a52cc2Sopenharmony_ci                AppStorage.SetOrCreate<string>('ContinueNote', continueNote)
636d5a52cc2Sopenharmony_ci                LogUtil.info(TAG, "recover, set continue note success")
637d5a52cc2Sopenharmony_ci                NoteUtil.refreshAll()
638d5a52cc2Sopenharmony_ci              })
639d5a52cc2Sopenharmony_ci          }.width(72)
640d5a52cc2Sopenharmony_ci        } else if (this.editModel == true) {
641d5a52cc2Sopenharmony_ci          Row({ space: StyleConstants.SPACE_6 }) {
642d5a52cc2Sopenharmony_ci            Button({ type: ButtonType.Normal, stateEffect: true }) {
643d5a52cc2Sopenharmony_ci              Image($r('app.media.circle_tick1'))
644d5a52cc2Sopenharmony_ci                .height(24)
645d5a52cc2Sopenharmony_ci                .width(24)
646d5a52cc2Sopenharmony_ci                .onClick(() => {
647d5a52cc2Sopenharmony_ci                  // 清单
648d5a52cc2Sopenharmony_ci                  this.controllerShow.runJavaScript("javascript:RICH_EDITOR.setTodo()")
649d5a52cc2Sopenharmony_ci                  // 退出键盘
650d5a52cc2Sopenharmony_ci                  // @ts-ignore
651d5a52cc2Sopenharmony_ci                  inputMethod.getController().stopInputSession();
652d5a52cc2Sopenharmony_ci                })
653d5a52cc2Sopenharmony_ci            }.width(42)
654d5a52cc2Sopenharmony_ci            .height(42)
655d5a52cc2Sopenharmony_ci            .borderRadius(8)
656d5a52cc2Sopenharmony_ci            .backgroundColor($r('app.color.color_fffffB'))
657d5a52cc2Sopenharmony_ci
658d5a52cc2Sopenharmony_ci            Button({ type: ButtonType.Normal, stateEffect: true }) {
659d5a52cc2Sopenharmony_ci              Image($r('app.media.styles'))
660d5a52cc2Sopenharmony_ci                .height(24)
661d5a52cc2Sopenharmony_ci                .width(24)
662d5a52cc2Sopenharmony_ci                .onClick(() => {
663d5a52cc2Sopenharmony_ci                  // 退出键盘
664d5a52cc2Sopenharmony_ci                  // @ts-ignore
665d5a52cc2Sopenharmony_ci                  inputMethod.getController().stopInputSession();
666d5a52cc2Sopenharmony_ci                  this.editContentDialogCtl.open()
667d5a52cc2Sopenharmony_ci                })
668d5a52cc2Sopenharmony_ci            }.width(42)
669d5a52cc2Sopenharmony_ci            .height(42)
670d5a52cc2Sopenharmony_ci            .borderRadius(8)
671d5a52cc2Sopenharmony_ci            .backgroundColor($r('app.color.color_fffffB'))
672d5a52cc2Sopenharmony_ci
673d5a52cc2Sopenharmony_ci            Button({ type: ButtonType.Normal, stateEffect: true }) {
674d5a52cc2Sopenharmony_ci              Image($r('app.media.picture_white'))
675d5a52cc2Sopenharmony_ci                .height(24)
676d5a52cc2Sopenharmony_ci                .width(24)
677d5a52cc2Sopenharmony_ci                .onClick(async () => {
678d5a52cc2Sopenharmony_ci                  let permissionList: Array<string> = [
679d5a52cc2Sopenharmony_ci                    "ohos.permission.READ_MEDIA",
680d5a52cc2Sopenharmony_ci                    "ohos.permission.WRITE_MEDIA",
681d5a52cc2Sopenharmony_ci                  ]
682d5a52cc2Sopenharmony_ci                  let context: any = getContext(this);
683d5a52cc2Sopenharmony_ci                  let AtManager = abilityAccessCtrl.createAtManager();
684d5a52cc2Sopenharmony_ci                  // @ts-ignore
685d5a52cc2Sopenharmony_ci                  await AtManager.requestPermissionsFromUser(context, permissionList).then((data) => {
686d5a52cc2Sopenharmony_ci                    LogUtil.info(TAG, 'data permissions : ' + data.permissions)
687d5a52cc2Sopenharmony_ci                    LogUtil.info(TAG, 'data result: ' + data.authResults)
688d5a52cc2Sopenharmony_ci                    let sum = 0
689d5a52cc2Sopenharmony_ci                    for (let i = 0; i < data.authResults.length; i++) {
690d5a52cc2Sopenharmony_ci                      sum += data.authResults[i]
691d5a52cc2Sopenharmony_ci                    }
692d5a52cc2Sopenharmony_ci                    LogUtil.info(TAG, 'request permissions sum: ' + sum)
693d5a52cc2Sopenharmony_ci                  }).catch((err) => {
694d5a52cc2Sopenharmony_ci                    LogUtil.warn(TAG, 'failed to requestPermissionsFromUser : ' + err.code);
695d5a52cc2Sopenharmony_ci                  })
696d5a52cc2Sopenharmony_ci                  // 退出键盘
697d5a52cc2Sopenharmony_ci                  // @ts-ignore
698d5a52cc2Sopenharmony_ci                  inputMethod.getController().stopInputSession();
699d5a52cc2Sopenharmony_ci                  LogUtil.info(TAG, 'startAbility start')
700d5a52cc2Sopenharmony_ci                  await globalThis.noteContext.startAbilityForResult({
701d5a52cc2Sopenharmony_ci                    parameters: { uri: "singleselect" },
702d5a52cc2Sopenharmony_ci                    bundleName: "com.ohos.photos",
703d5a52cc2Sopenharmony_ci                    abilityName: "com.ohos.photos.MainAbility",
704d5a52cc2Sopenharmony_ci                  })
705d5a52cc2Sopenharmony_ci                    .then(v => {
706d5a52cc2Sopenharmony_ci                      let want = v['want'];
707d5a52cc2Sopenharmony_ci                      if (want != null && want != undefined) {
708d5a52cc2Sopenharmony_ci                        let param = want['parameters'];
709d5a52cc2Sopenharmony_ci                        let imageUri = ""
710d5a52cc2Sopenharmony_ci                        if (param != null && param != undefined) {
711d5a52cc2Sopenharmony_ci                          let uri = param['select-item-list'];
712d5a52cc2Sopenharmony_ci                          imageUri = uri;
713d5a52cc2Sopenharmony_ci                        }
714d5a52cc2Sopenharmony_ci                        // 拷贝
715d5a52cc2Sopenharmony_ci                        if (imageUri != null && imageUri != "") {
716d5a52cc2Sopenharmony_ci                          OperationUtils.copy(imageUri).then((uriPath) => {
717d5a52cc2Sopenharmony_ci                            var path = "file://" + uriPath
718d5a52cc2Sopenharmony_ci                            LogUtil.info(TAG, 'image uri is:' + path)
719d5a52cc2Sopenharmony_ci                            this.controllerShow.runJavaScript(
720d5a52cc2Sopenharmony_ci                              "javascript:RICH_EDITOR.insertImage('" + path + "')"
721d5a52cc2Sopenharmony_ci                            )
722d5a52cc2Sopenharmony_ci                            this.issave = 1
723d5a52cc2Sopenharmony_ci                            // 保存笔记信息到数据库
724d5a52cc2Sopenharmony_ci                            this.controllerShow.runJavaScript("getHtmlContent()")
725d5a52cc2Sopenharmony_ci                          })
726d5a52cc2Sopenharmony_ci                        }
727d5a52cc2Sopenharmony_ci                      }
728d5a52cc2Sopenharmony_ci                      NoteUtil.refreshAll()
729d5a52cc2Sopenharmony_ci                    });
730d5a52cc2Sopenharmony_ci                })
731d5a52cc2Sopenharmony_ci            }.width(42)
732d5a52cc2Sopenharmony_ci            .height(42)
733d5a52cc2Sopenharmony_ci            .borderRadius(8)
734d5a52cc2Sopenharmony_ci            .backgroundColor($r('app.color.color_fffffB'))
735d5a52cc2Sopenharmony_ci
736d5a52cc2Sopenharmony_ci            Button({ type: ButtonType.Normal, stateEffect: true }) {
737d5a52cc2Sopenharmony_ci              Image($r('app.media.undo'))
738d5a52cc2Sopenharmony_ci                .height(24)
739d5a52cc2Sopenharmony_ci                .width(24)
740d5a52cc2Sopenharmony_ci                .onClick(() => {
741d5a52cc2Sopenharmony_ci                  // 退出键盘
742d5a52cc2Sopenharmony_ci                  // @ts-ignore
743d5a52cc2Sopenharmony_ci                  inputMethod.getController().stopInputSession();
744d5a52cc2Sopenharmony_ci                  this.controllerShow.runJavaScript("RICH_EDITOR.undo()")
745d5a52cc2Sopenharmony_ci                })
746d5a52cc2Sopenharmony_ci            }.width(42)
747d5a52cc2Sopenharmony_ci            .height(42)
748d5a52cc2Sopenharmony_ci            .borderRadius(8)
749d5a52cc2Sopenharmony_ci            .backgroundColor($r('app.color.color_fffffB'))
750d5a52cc2Sopenharmony_ci
751d5a52cc2Sopenharmony_ci            Button({ type: ButtonType.Normal, stateEffect: true }) {
752d5a52cc2Sopenharmony_ci              Image($r('app.media.todo'))
753d5a52cc2Sopenharmony_ci                .height(24)
754d5a52cc2Sopenharmony_ci                .width(24)
755d5a52cc2Sopenharmony_ci                .onClick(() => {
756d5a52cc2Sopenharmony_ci                  // 退出键盘
757d5a52cc2Sopenharmony_ci                  // @ts-ignore
758d5a52cc2Sopenharmony_ci                  inputMethod.getController().stopInputSession();
759d5a52cc2Sopenharmony_ci                  this.controllerShow.runJavaScript("RICH_EDITOR.redo()")
760d5a52cc2Sopenharmony_ci                })
761d5a52cc2Sopenharmony_ci            }.width(42)
762d5a52cc2Sopenharmony_ci            .height(42)
763d5a52cc2Sopenharmony_ci            .borderRadius(8)
764d5a52cc2Sopenharmony_ci            .backgroundColor($r('app.color.color_fffffB'))
765d5a52cc2Sopenharmony_ci
766d5a52cc2Sopenharmony_ci
767d5a52cc2Sopenharmony_ci            Button({ type: ButtonType.Normal, stateEffect: true }) {
768d5a52cc2Sopenharmony_ci              Image($r('app.media.tick_thin'))
769d5a52cc2Sopenharmony_ci                .height(24)
770d5a52cc2Sopenharmony_ci                .width(24)
771d5a52cc2Sopenharmony_ci                .fillColor(this.issave == 0 ? Color.Black : Color.Grey)
772d5a52cc2Sopenharmony_ci                .onClick(() => {
773d5a52cc2Sopenharmony_ci                  // 保存笔记信息到数据库
774d5a52cc2Sopenharmony_ci                  this.controllerShow.runJavaScript("getHtmlContent()")
775d5a52cc2Sopenharmony_ci                  this.controllerShow.runJavaScript("javascript:RICH_EDITOR.getBlur()")
776d5a52cc2Sopenharmony_ci                  if (this.selectedNoteData.title == "标题" && this.selectedNoteData.content_text == "") {
777d5a52cc2Sopenharmony_ci                    LogUtil.info(TAG, "note is empty,save note failed")
778d5a52cc2Sopenharmony_ci                  }
779d5a52cc2Sopenharmony_ci                  this.issave = 1
780d5a52cc2Sopenharmony_ci                })
781d5a52cc2Sopenharmony_ci            }.width(42)
782d5a52cc2Sopenharmony_ci            .height(42)
783d5a52cc2Sopenharmony_ci            .borderRadius(8)
784d5a52cc2Sopenharmony_ci            .backgroundColor($r('app.color.color_fffffB'))
785d5a52cc2Sopenharmony_ci          }.width(274)
786d5a52cc2Sopenharmony_ci        } else {
787d5a52cc2Sopenharmony_ci          Row({ space: StyleConstants.SPACE_24 }) {
788d5a52cc2Sopenharmony_ci            Image(this.selectedNoteData.is_favorite == Favorite.Yes ? $r('app.media.favorite') : $r('app.media.favorite_cancel'))
789d5a52cc2Sopenharmony_ci              .height(24)
790d5a52cc2Sopenharmony_ci              .width(24)
791d5a52cc2Sopenharmony_ci              .onClick(() => {
792d5a52cc2Sopenharmony_ci                try {
793d5a52cc2Sopenharmony_ci                  this.selectedNoteData.is_favorite = (this.selectedNoteData.is_favorite == Favorite.Yes ? Favorite.No : Favorite.Yes)
794d5a52cc2Sopenharmony_ci                  this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
795d5a52cc2Sopenharmony_ci                  // update note to db
796d5a52cc2Sopenharmony_ci                  let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
797d5a52cc2Sopenharmony_ci                  predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
798d5a52cc2Sopenharmony_ci                  RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
799d5a52cc2Sopenharmony_ci                  if (this.selectedFolderData.uuid === SysDefFolderUuid.MyFavorites) {
800d5a52cc2Sopenharmony_ci                    this.selectedNoteData = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), SysDefFolderUuid.MyFavorites)
801d5a52cc2Sopenharmony_ci                    this.controllerShow.runJavaScript(
802d5a52cc2Sopenharmony_ci                      "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')"
803d5a52cc2Sopenharmony_ci                    )
804d5a52cc2Sopenharmony_ci                    // save continue data
805d5a52cc2Sopenharmony_ci                    let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
806d5a52cc2Sopenharmony_ci                    AppStorage.SetOrCreate<string>('ContinueNote', continueNote)
807d5a52cc2Sopenharmony_ci                    LogUtil.info(TAG, "ToolBarComp, set continue note success")
808d5a52cc2Sopenharmony_ci                  }
809d5a52cc2Sopenharmony_ci                  NoteUtil.refreshAll()
810d5a52cc2Sopenharmony_ci                } catch (error) {
811d5a52cc2Sopenharmony_ci                  LogUtil.error(TAG, 'favorite error: ' + JSON.stringify(error));
812d5a52cc2Sopenharmony_ci                }
813d5a52cc2Sopenharmony_ci              })
814d5a52cc2Sopenharmony_ci            Image($r('app.media.delete'))
815d5a52cc2Sopenharmony_ci              .height(24)
816d5a52cc2Sopenharmony_ci              .width(24)
817d5a52cc2Sopenharmony_ci              .onClick(() => {
818d5a52cc2Sopenharmony_ci                this.noteDataDeleteDialogCtl.open()
819d5a52cc2Sopenharmony_ci              })
820d5a52cc2Sopenharmony_ci          }.width(72)
821d5a52cc2Sopenharmony_ci        }
822d5a52cc2Sopenharmony_ci      }
823d5a52cc2Sopenharmony_ci    }
824d5a52cc2Sopenharmony_ci    .width(StyleConstants.PERCENTAGE_100)
825d5a52cc2Sopenharmony_ci    .height(80)
826d5a52cc2Sopenharmony_ci  }
827d5a52cc2Sopenharmony_ci}
828d5a52cc2Sopenharmony_ci
829d5a52cc2Sopenharmony_ci@Component
830d5a52cc2Sopenharmony_cistruct NoteDataMoveItemCompTablet {
831d5a52cc2Sopenharmony_ci  @StorageLink('CheckedNoteArray') CheckedNoteArray: NoteData[] = []
832d5a52cc2Sopenharmony_ci  @StorageLink('AllFolderArray') AllFolderArray: FolderData[] = []
833d5a52cc2Sopenharmony_ci  @StorageLink('isUpdate') isUpdate: boolean = false
834d5a52cc2Sopenharmony_ci  folderItem: FolderData
835d5a52cc2Sopenharmony_ci  uuid: String
836d5a52cc2Sopenharmony_ci
837d5a52cc2Sopenharmony_ci  build() {
838d5a52cc2Sopenharmony_ci    Flex({ alignItems: ItemAlign.Center, wrap: FlexWrap.NoWrap, justifyContent: FlexAlign.Center }) {
839d5a52cc2Sopenharmony_ci      Flex({ alignItems: ItemAlign.Center, wrap: FlexWrap.NoWrap }) {
840d5a52cc2Sopenharmony_ci        Image(FolderUtil.getFolderIcon(this.folderItem.uuid))
841d5a52cc2Sopenharmony_ci          .id(this.isUpdate + '')
842d5a52cc2Sopenharmony_ci          .objectFit(ImageFit.Fill)
843d5a52cc2Sopenharmony_ci          .width(24)
844d5a52cc2Sopenharmony_ci          .height(24)
845d5a52cc2Sopenharmony_ci          .flexShrink(0)
846d5a52cc2Sopenharmony_ci          .fillColor(FolderUtil.getFolderIconColor(this.AllFolderArray, this.folderItem.uuid, this.folderItem.uuid == this.uuid))
847d5a52cc2Sopenharmony_ci      }
848d5a52cc2Sopenharmony_ci      .width(24)
849d5a52cc2Sopenharmony_ci
850d5a52cc2Sopenharmony_ci      Column() {
851d5a52cc2Sopenharmony_ci        Flex({ alignItems: ItemAlign.Center, wrap: FlexWrap.NoWrap, justifyContent: FlexAlign.SpaceBetween }) {
852d5a52cc2Sopenharmony_ci          Text(FolderUtil.getFolderText(this.folderItem))
853d5a52cc2Sopenharmony_ci            .id(this.isUpdate + '')
854d5a52cc2Sopenharmony_ci            .padding({ top: 3 })
855d5a52cc2Sopenharmony_ci            .fontSize(16)
856d5a52cc2Sopenharmony_ci            .fontColor(FolderUtil.getFolderIconColor(this.AllFolderArray, this.folderItem.uuid == this.uuid ? this.folderItem.uuid : '', this.folderItem.uuid == this.uuid))
857d5a52cc2Sopenharmony_ci            .textAlign(TextAlign.Center)
858d5a52cc2Sopenharmony_ci            .maxLines(1)
859d5a52cc2Sopenharmony_ci            .textOverflow({ overflow: TextOverflow.Ellipsis })
860d5a52cc2Sopenharmony_ci            .flexShrink(1)
861d5a52cc2Sopenharmony_ci        }
862d5a52cc2Sopenharmony_ci        .width('100%')
863d5a52cc2Sopenharmony_ci        .height(55)
864d5a52cc2Sopenharmony_ci
865d5a52cc2Sopenharmony_ci        if (this.folderItem.uuid != SysDefFolderUuid.UnClassified) {
866d5a52cc2Sopenharmony_ci          Divider()
867d5a52cc2Sopenharmony_ci            .color($r("app.color.divider_color_e4e4e4"))
868d5a52cc2Sopenharmony_ci            .strokeWidth(1)
869d5a52cc2Sopenharmony_ci        }
870d5a52cc2Sopenharmony_ci      }
871d5a52cc2Sopenharmony_ci      .padding({ left: 16 })
872d5a52cc2Sopenharmony_ci    }
873d5a52cc2Sopenharmony_ci    .id(this.isUpdate + '')
874d5a52cc2Sopenharmony_ci    .width('100%')
875d5a52cc2Sopenharmony_ci    .height(56)
876d5a52cc2Sopenharmony_ci    .visibility(FolderUtil.isFolderMoveIn(this.folderItem) ? Visibility.Visible : Visibility.None)
877d5a52cc2Sopenharmony_ci  }
878d5a52cc2Sopenharmony_ci}
879