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