!111 备忘录适配迁移

Merge pull request !111 from 王洋/master
This commit is contained in:
openharmony_ci 2022-10-26 09:58:48 +00:00 committed by Gitee
commit 2f896b8daa
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
8 changed files with 161 additions and 3 deletions

View File

@ -69,6 +69,7 @@ export struct NewOrEditFolderDialog {
this.isExisted = result
})
})
.restoreId(1)
}.margin({ bottom: 4, left: 24, right: 24 })
Divider()
@ -682,6 +683,7 @@ export struct EditTitleDialog {
}
this.inputName = value
})
.restoreId(2)
}.margin({ bottom: 4, left: 24, right: 24 })

View File

@ -46,6 +46,37 @@ export struct NoteContent {
@Provide('EditModel') editModel: boolean = false
controllerShow: WebController
private editContentFlag = false
@StorageLink('ScrollTopPercent') scrollTopPercent: number = 0.0
storeScrollTop(scrollTop: number) {
if (scrollTop < 0) {
return
}
AppStorage.SetOrCreate<number>('ScrollTopPercent', scrollTop/this.controllerShow.getPageHeight())
}
restoreScrollTop() {
if (!AppStorage.Has('remoteScrollTopPercent')) {
return
}
var scrollTopPercent = AppStorage.Get<number>('remoteScrollTopPercent')
if (scrollTopPercent < 0) {
return
}
this.controllerShow.runJavaScript({
script: 'document.documentElement.scrollTop = ' + this.controllerShow.getPageHeight()*scrollTopPercent
})
AppStorage.Delete('remoteScrollTopPercent')
}
restoreFocus() {
if (!AppStorage.Has('isRemoteFocusOnSearch')) {
return
}
let isRemoteFocusOnSearch = AppStorage.Get<boolean>('isRemoteFocusOnSearch')
if (isRemoteFocusOnSearch) {
focusControl.requestFocus('searchInput')
}
AppStorage.Delete('isRemoteFocusOnSearch')
}
noteContent = {
callbackhtml: (html) => {
LogUtil.info(TAG, 'note uuid is:' + this.selectedNoteData.uuid)
@ -136,8 +167,16 @@ export struct NoteContent {
.onPageEnd((e) => {
LogUtil.info(TAG, "finish loadurl")
if (this.selectedNoteData) {
let self = this
this.controllerShow.runJavaScript({
script: "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')"
script: "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')",
callback: () => {
// wait for the image in the note to load
setTimeout(function() {
self.restoreScrollTop()
self.restoreFocus()
}, 100)
}
})
}
})
@ -148,6 +187,9 @@ export struct NoteContent {
.domStorageAccess(true)
.height('70%')
.width('100%')
.onScroll((event) => {
this.storeScrollTop(event.yOffset)
})
}
.margin({ left: 12, right: 24, top: 16 })
.width(StyleConstants.PERCENTAGE_100)

View File

@ -54,6 +54,36 @@ export struct NoteContentComp {
private editContentFlag = false
@State uri1: string = ""
private context = getContext(this)
@StorageLink('ScrollTopPercent') scrollTopPercent: number = 0.0
storeScrollTop(scrollTop: number) {
if (scrollTop < 0) {
return
}
AppStorage.SetOrCreate<number>('ScrollTopPercent', scrollTop/this.controllerShow.getPageHeight())
}
restoreScrollTop() {
if (!AppStorage.Has('remoteScrollTopPercent')) {
return
}
var scrollTopPercent = AppStorage.Get<number>('remoteScrollTopPercent')
if (scrollTopPercent < 0) {
return
}
this.controllerShow.runJavaScript({
script: 'document.documentElement.scrollTop = ' + this.controllerShow.getPageHeight()*scrollTopPercent
})
}
restoreFocus() {
if (!AppStorage.Has('isRemoteFocusOnSearch')) {
return
}
let isRemoteFocusOnSearch = AppStorage.Get<boolean>('isRemoteFocusOnSearch')
if (isRemoteFocusOnSearch) {
focusControl.requestFocus('searchInput')
}
AppStorage.Delete('isRemoteFocusOnSearch')
}
noteContent = {
callbackhtml: (html) => {
LogUtil.info(TAG, 'note uuid is:' + this.selectedNoteData.uuid)
@ -171,8 +201,16 @@ export struct NoteContentComp {
.onPageEnd((e) => {
LogUtil.info(TAG, "finish loadurl")
if(this.selectedNoteData){
let self = this
this.controllerShow.runJavaScript({
script: "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')"
script: "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')",
callback: () => {
// wait for the image in the note to load
setTimeout(function() {
self.restoreScrollTop()
self.restoreFocus()
}, 100)
}
})
}
// 初次加载为为小屏预览模式
@ -187,6 +225,9 @@ export struct NoteContentComp {
.zoomAccess(false)
.height('88%')
.width('100%')
.onScroll((event) => {
this.storeScrollTop(event.yOffset)
})
}
.margin({ left: 24, right: 24 })
// .width(StyleConstants.PERCENTAGE_100)

View File

@ -54,6 +54,36 @@ export struct NoteContentCompPortrait {
@StorageLink('closeEditContentDialog') closeEditContentDialog: boolean = AppStorage.Link('closeEditContentDialog')
controllerShow: WebController
private editContentFlag = false
@StorageLink('ScrollTopPercent') scrollTopPercent: number = 0.0
storeScrollTop(scrollTop: number) {
if (scrollTop < 0) {
return
}
AppStorage.SetOrCreate<number>('ScrollTopPercent', scrollTop/this.controllerShow.getPageHeight())
}
restoreScrollTop() {
if (!AppStorage.Has('remoteScrollTopPercent')) {
return
}
var scrollTopPercent = AppStorage.Get<number>('remoteScrollTopPercent')
if (scrollTopPercent < 0) {
return
}
this.controllerShow.runJavaScript({
script: 'document.documentElement.scrollTop = ' + this.controllerShow.getPageHeight()*scrollTopPercent
})
}
restoreFocus() {
if (!AppStorage.Has('isRemoteFocusOnSearch')) {
return
}
let isRemoteFocusOnSearch = AppStorage.Get<boolean>('isRemoteFocusOnSearch')
if (isRemoteFocusOnSearch) {
focusControl.requestFocus('searchInput')
}
AppStorage.Delete('isRemoteFocusOnSearch')
}
noteContent = {
callbackhtml: (html) => {
LogUtil.info(TAG, 'note uuid is:' + this.selectedNoteData.uuid)
@ -139,8 +169,16 @@ export struct NoteContentCompPortrait {
})
.onPageEnd((e) => {
LogUtil.info(TAG, "finish loadurl")
let self = this
this.controllerShow.runJavaScript({
script: "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')"
script: "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')",
callback: () => {
// wait for the image in the note to load
setTimeout(function() {
self.restoreScrollTop()
self.restoreFocus()
}, 100)
}
})
})
.imageAccess(true)
@ -150,6 +188,9 @@ export struct NoteContentCompPortrait {
.zoomAccess(false)
.height('100%')
.width('100%')
.onScroll((event) => {
this.storeScrollTop(event.yOffset)
})
}
.flexShrink(1)
.onClick(() => {

View File

@ -670,6 +670,7 @@ export struct SearchComp {
@Consume('InputKeyword') inputKeyword: string
@Consume('Longpress') longpress: boolean
@State text: string = ''
@StorageLink('isFocusOnSearch') isFocusOnSearch: boolean = true
build() {
Row() {
@ -708,6 +709,16 @@ export struct SearchComp {
this.search = true
}
})
// whether the focus is on the search input before coutinue
.onFocus(() => {
this.isFocusOnSearch = true
})
.onBlur(() => {
this.isFocusOnSearch = false
})
// key for request focus after coutinue
.key('searchInput')
.restoreId(3)
}
.backgroundColor(this.longpress ? $r("app.color.search_longpress_bgcolor_f7f8f9") : $r("app.color.color_ffffff"))
.height(40)

View File

@ -52,6 +52,7 @@
"icon": "$media:note",
"label": "$string:entry_MainAbility",
"visible": true,
"continuable": true,
"skills": [
{
"entities": [

View File

@ -38,9 +38,14 @@ export default class MainAbility extends Ability {
// 获取对端的迁移数据
let continueNote: string = want.parameters["ContinueNote"]
let continueSection: number = want.parameters["ContinueSection"]
let scrollTopPercent: number = want.parameters["ScrollTopPercent"]
let isFocusOnSearch: boolean = want.parameters["isFocusOnSearch"]
LogUtil.info(this.Tag, " continueSection : " + continueSection)
AppStorage.SetOrCreate<string>('ContinueNote', continueNote)
AppStorage.SetOrCreate<number>('ContinueSection', continueSection)
// 使用新的key保存数据防止迁移过来的数据在使用前被本地操作覆盖
AppStorage.SetOrCreate<number>('remoteScrollTopPercent', scrollTopPercent)
AppStorage.SetOrCreate<boolean>('isRemoteFocusOnSearch', isFocusOnSearch)
// 来自手机的迁移
let continueChoose: boolean = want.parameters["ContinueChoose"]
if (continueChoose) {
@ -94,9 +99,23 @@ export default class MainAbility extends Ability {
}
LogUtil.info(this.Tag, " onContinue, continueSection : " + continueSection)
let scrollTopPercent = AppStorage.Get<number>('ScrollTopPercent')
if (scrollTopPercent == undefined || scrollTopPercent == null) {
LogUtil.info(this.Tag, " onContinue, scrollTopPercent is error, default 0")
scrollTopPercent = 0
}
let isFocusOnSearch = AppStorage.Get<boolean>('isFocusOnSearch')
if (isFocusOnSearch == undefined || isFocusOnSearch == null) {
LogUtil.info(this.Tag, " onContinue, isFocusOnSearch is error, default true")
isFocusOnSearch = true
}
// 保存本端的迁移数据
wantParam["ContinueNote"] = continueNote
wantParam["ContinueSection"] = continueSection
wantParam["ScrollTopPercent"] = scrollTopPercent
wantParam["isFocusOnSearch"] = isFocusOnSearch
if (deviceInfo.deviceType === 'phone' || deviceInfo.deviceType === 'default') {
wantParam["ContinueChoose"] = true
}

View File

@ -57,6 +57,7 @@
"icon": "$media:note",
"label": "$string:entry_MainAbility",
"visible": true,
"continuable": true,
"skills": [
{
"entities": [