diff --git a/OAT.xml b/OAT.xml
new file mode 100644
index 0000000..d7a659e
--- /dev/null
+++ b/OAT.xml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/README.en.md b/README.en.md
deleted file mode 100644
index 4de1f55..0000000
--- a/README.en.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# applications_note
-
-#### Description
-{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
-
-#### Software Architecture
-Software architecture description
-
-#### Installation
-
-1. xxxx
-2. xxxx
-3. xxxx
-
-#### Instructions
-
-1. xxxx
-2. xxxx
-3. xxxx
-
-#### Contribution
-
-1. Fork the repository
-2. Create Feat_xxx branch
-3. Commit your code
-4. Create Pull Request
-
-
-#### Gitee Feature
-
-1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
-2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
-3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
-4. The most valuable open source project [GVP](https://gitee.com/gvp)
-5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
-6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
diff --git a/README.md b/README.md
deleted file mode 100644
index 071376e..0000000
--- a/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# ohos_notes
-
diff --git a/README_zh.md b/README_zh.md
new file mode 100644
index 0000000..6d620b3
--- /dev/null
+++ b/README_zh.md
@@ -0,0 +1,140 @@
+# 备忘录源码开发说明
+## 1. 项目介绍
+备忘录应用是OpenHarmony中预置的应用,为用户提供文本编辑以及保存功能。
+
+## 2. 工程结构
+### 目录结构
+```
+/applications/standard/note
+├─common
+│ ├─component
+│ │ └─src
+│ │ └─main
+│ │ ├─ets
+│ │ │ └─default # 界面基本组件
+│ │ └─resources # 资源配置文件存放目录
+│ └─utils
+│ └─src
+│ └─main
+│ ├─ets
+│ │ └─default
+│ │ ├─baseUtil # 数据处理
+│ │ ├─constants # 常量定义
+│ │ └─model
+│ │ ├─databaseModel # 数据格式定义
+│ │ └─searchModel # 搜索数据格式定义
+│ └─resources # 资源配置文件存放目录
+├─figures # readme的截图
+└─product
+ ├─phone
+ │ └─src
+ │ └─main
+ │ ├─ets
+ │ │ └─MainAbility
+ │ │ ├─pages # 手机主页面设置
+ │ │ └─res # 预置图片
+ │ └─resources # 资源文件
+ └─tablet
+ └─src
+ └─main
+ ├─ets
+ │ └─MainAbility
+ │ ├─pages # 平板主页面设置
+ │ └─res # 预置图片
+ └─resources # 资源文件
+```
+### 整体架构
+
+
+
+![](./figures/note.png)
+
+## 3. 签名打包
+### 签名
+#### 签名文件的获取
+1. 生成签名文件可参考https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/configuring-openharmony-app-signature.md
+
+#### 签名文件的配置
+打开项目工程,选择 File → Project Structure
+
+![](./figures/signature_1.png)
+
+选择 Modules → Signing Configs,将对应的签名文件配置如下,完成后点击Apply,再点击OK。
+密码为生成签名文件时的密码,如果使用默认的签名文件,则使用默认密码123456。
+
+![](./figures/signature_2.png)
+
+配置完成后,对应的build.gradle文件中会出现如下内容
+
+![](./figures/signature_3.png)
+
+### 打包
+1. 选择Build → Build Haps(s)/APP(s) → Build Hap(s)
+
+ ![](./figures/ds_build_haps.png)
+
+2. 编译完成后,hap包会生成在工程目录下的 `\build\outputs\hap\release\`路径下(如果没有配置签名,则只会生成未签名的hap包)
+
+ ![](./figures/ds_ohosbuild_output_dir_release.png)
+
+
+
+
+
+## 4. 安装、调试
+
+### 应用安装
+
+将设备通过调试线链接电脑,IDE上显示已链接设备,点击开始按钮即可安装并拉起应用:
+
+![](./figures/install.png)
+
+
+
+
+### 应用调试
+
+#### log打印
+
+- 在程序中添加 log
+
+```JS
+console.info("note log info");
+```
+
+可以在DevEco Studio中查看log
+![](./figures/ds_hilog_window.png)
+
+#### log获取及过滤
+
+- log获取
+
+将hdc_std的环境变量配置好,将log输出至文件
+
+![](./figures/hdc_std.png)
+
+```
+hdc_std shell hilog > 输出文件名称
+```
+
+例:
+在真实环境查看log,将全log输出到当前目录的hilog.log文件中
+
+```
+hdc_std shell hilog > hilog.log
+```
+
+- log过滤
+
+在命令行窗口中过滤log
+
+```
+hilog | grep 过滤信息
+```
+
+例:过滤包含信息 Label 的 hilog
+
+```
+hilog | grep Label
+```
+
diff --git a/common/component/src/main/ets/default/CusDialogComp.ets b/common/component/src/main/ets/default/CusDialogComp.ets
index b6e9029..0b01437 100644
--- a/common/component/src/main/ets/default/CusDialogComp.ets
+++ b/common/component/src/main/ets/default/CusDialogComp.ets
@@ -15,29 +15,31 @@
import FolderData from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/FolderData.ets'
import NoteData from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/NoteData.ets'
-import {circleColorArray,fontColorArray} from '../../../../../../common/utils/src/main/ets/default/model/NoteBaseData.ets'
+import {circleColorArray, fontColorArray} from '../../../../../../common/utils/src/main/ets/default/model/NoteBaseData.ets'
import {SysDefFolderUuid, DeleteFileType, FolderType} from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/EnumData.ets'
-import GlobalResourceManager from '../../../../../../common/utils/src/main/ets/default/baseUtil/GlobalResourceManager.ets';
+import GlobalResourceManager from '../../../../../../common/utils/src/main/ets/default/baseUtil/GlobalResourceManager.ets'
import FolderUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/FolderUtil.ets'
import NoteUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/NoteUtil.ets'
@CustomDialog
export struct NewOrEditFolderDialog {
- newOrEditFolderDialogCtl: CustomDialogController;
+ newOrEditFolderDialogCtl: CustomDialogController
confirm: (color: string, name: string) => void
- @State inputName: string = "";
- private oriInputName: string = "";
- private oriSelectedColor: string = "";
- private editFolderUuid: string = "";
- private dialogType: number = 0; // 0表示新建文件夹 1表示修改文件夹
- @State isExisted: boolean = false;
+ @State inputName: string = ""
+ private oriInputName: string = ""
+ private oriSelectedColor: string = ""
+ private editFolderUuid: string = ""
+ private dialogType: number = 0 // 0表示新建文件夹 1表示修改文件夹
+ @State isExisted: boolean = false
@StorageLink('AllFolderArray') AllFolderArray: FolderData[] = AppStorage.Link('AllFolderArray')
- @Consume('SelectedColor') selectedColor: string;
+ @Consume('SelectedColor') selectedColor: string
build() {
Column() {
Text(this.dialogType == 0 ? $r("app.string.createFolder") : $r("app.string.editFolder"))
- .fontSize(20).height(56).margin({ left: 24 })
+ .fontSize(20)
+ .height(56)
+ .margin({ left: 24 })
// folder color choose
Flex({ wrap: FlexWrap.NoWrap, justifyContent: FlexAlign.SpaceBetween }) {
ForEach(circleColorArray, (colorStr: string) => {
@@ -65,7 +67,10 @@ export struct NewOrEditFolderDialog {
})
}.margin({ bottom: 4, left: 24, right: 24 })
- Text($r("app.string.category_already_exist")).fontSize(10).margin({ left: 64 }).fontColor("#FA2A2D")
+ Text($r("app.string.category_already_exist"))
+ .fontSize(10)
+ .margin({ left: 64 })
+ .fontColor("#FA2A2D")
.visibility((this.isExisted && this.inputName != this.oriInputName) ? Visibility.Visible : Visibility.None)
// button group
Flex({ wrap: FlexWrap.Wrap, justifyContent: FlexAlign.SpaceBetween }) {
@@ -77,7 +82,11 @@ export struct NewOrEditFolderDialog {
.onClick(() => {
this.newOrEditFolderDialogCtl.close()
})
- Divider().vertical(true).height(15).strokeWidth(1).color($r("app.color.divider_color_e4e4e4"))
+ Divider()
+ .vertical(true)
+ .height(15)
+ .strokeWidth(1)
+ .color($r("app.color.divider_color_e4e4e4"))
Text($r("app.string.save"))
.opacity(this.inputName == ""
|| (this.oriSelectedColor == this.selectedColor && this.inputName == this.oriInputName && this.dialogType == 1)
@@ -95,13 +104,14 @@ export struct NewOrEditFolderDialog {
this.newOrEditFolderDialogCtl.close()
this.confirm(this.selectedColor, this.inputName)
})
- }.width('100%').margin({ top: 21, bottom: 25 })
+ }.width('100%')
+ .margin({ top: 21, bottom: 25 })
}
.width(336)
.borderRadius(36)
.backgroundColor(Color.White)
.alignItems(HorizontalAlign.Start)
- .margin({bottom:16,left:12,right:12})
+ .margin({ bottom: 16, left: 12, right: 12 })
}
aboutToAppear(): void{
@@ -126,12 +136,14 @@ export struct NewOrEditFolderDialog {
@Component
struct ColorCircleComp {
private circleColor: string
- @Consume('SelectedColor') selectedColor: string;
+ @Consume('SelectedColor') selectedColor: string
build() {
Stack({ alignContent: Alignment.Center }) {
- Circle({ width: 24, height: 24 }).fill(this.circleColor)
- Circle({ width: 12, height: 12 }).fill($r("app.color.color_ffffff"))
+ Circle({ width: 24, height: 24 })
+ .fill(this.circleColor)
+ Circle({ width: 12, height: 12 })
+ .fill($r("app.color.color_ffffff"))
.visibility(this.circleColor == this.selectedColor ? Visibility.Visible : Visibility.None)
}.onClick(() => {
this.selectedColor = this.circleColor
@@ -144,7 +156,7 @@ export struct DeleteDialog {
@StorageLink('CheckedNoteArray') CheckedNoteArray: NoteData[] = []
@StorageLink('AllNoteArray') AllNoteArray: NoteData[] = AppStorage.Link('AllNoteArray')
@StorageLink('AllFolderArray') AllFolderArray: FolderData[] = AppStorage.Link('AllFolderArray')
- @Consume('SelectedNoteData') selectedNoteData: NoteData;
+ @Consume('SelectedNoteData') selectedNoteData: NoteData
@Consume('SelectedFolderData') selectedFolderData: FolderData
private multiSelect: boolean = false
private deleteFileType = DeleteFileType.NoteData
@@ -155,23 +167,34 @@ export struct DeleteDialog {
Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.SpaceBetween }) {
Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
if (this.deleteFileType == DeleteFileType.FolderData) {
- Text($r("app.string.delete_tips")).fontSize(14).textAlign(TextAlign.Center).maxLines(1)
+ Text($r("app.string.delete_tips"))
+ .fontSize(14)
+ .textAlign(TextAlign.Center)
+ .maxLines(1)
} else {
Text(this.selectedFolderData.uuid == SysDefFolderUuid.RecentDeletes ? $r("app.string.deleteNoteComplete") : $r("app.string.deleteNote"))
- .fontSize(14).textAlign(TextAlign.Center).maxLines(1)
+ .fontSize(14)
+ .textAlign(TextAlign.Center)
+ .maxLines(1)
.visibility(this.multiSelect == false || this.selectedFolderData.uuid == SysDefFolderUuid.RecentDeletes ? Visibility.Visible : Visibility.None)
if (this.CheckedNoteArray.length ==
NoteUtil.getNoteDataArray(this.AllNoteArray, this.selectedFolderData.uuid).length) {
Text($r("app.string.deleteAllNote"))
- .fontSize(14).textAlign(TextAlign.Center).maxLines(1)
+ .fontSize(14)
+ .textAlign(TextAlign.Center)
+ .maxLines(1)
.visibility(this.multiSelect == false || this.selectedFolderData.uuid == SysDefFolderUuid.RecentDeletes ? Visibility.None : Visibility.Visible)
} else if (this.CheckedNoteArray.length == 1) {
Text($r("app.string.deleteNote"))
- .fontSize(14).textAlign(TextAlign.Center).maxLines(1)
+ .fontSize(14)
+ .textAlign(TextAlign.Center)
+ .maxLines(1)
.visibility(this.multiSelect == false || this.selectedFolderData.uuid == SysDefFolderUuid.RecentDeletes ? Visibility.None : Visibility.Visible)
} else {
Text($r("app.string.deletePartNote", this.CheckedNoteArray.length))
- .fontSize(14).textAlign(TextAlign.Center).maxLines(1)
+ .fontSize(14)
+ .textAlign(TextAlign.Center)
+ .maxLines(1)
.visibility(this.multiSelect == false || this.selectedFolderData.uuid == SysDefFolderUuid.RecentDeletes ? Visibility.None : Visibility.Visible)
}
}
@@ -190,7 +213,11 @@ export struct DeleteDialog {
.onClick(() => {
this.noteDataDeleteDialogCtl.close()
})
- Divider().vertical(true).strokeWidth(1).color($r("app.color.divider_color_e4e4e4")).height(40)
+ Divider()
+ .vertical(true)
+ .strokeWidth(1)
+ .color($r("app.color.divider_color_e4e4e4"))
+ .height(40)
Text($r("app.string.delete"))
.fontSize(16)
.fontColor($r("app.color.delete_color_fa2a2d"))
@@ -211,7 +238,7 @@ export struct DeleteDialog {
.borderRadius(36)
.padding({ top: 24, bottom: 16, left: 16, right: 16 })
.backgroundColor(Color.White)
- .margin({bottom:16,left:12,right:12})
+ .margin({ bottom: 16, left: 12, right: 12 })
}
}
@@ -249,7 +276,9 @@ struct NoteDataMoveItemComp {
.width(248)
.height(55)
- Divider().color($r("app.color.divider_color_e4e4e4")).strokeWidth(1)
+ Divider()
+ .color($r("app.color.divider_color_e4e4e4"))
+ .strokeWidth(1)
}
.padding({ left: 16 })
}
@@ -270,7 +299,8 @@ export struct NoteDataMoveDialog {
Flex({ alignItems: ItemAlign.Center }) {
Text($r("app.string.chooseFolder"))
.fontSize(20)
- }.height(56).width(288)
+ }.height(56)
+ .width(288)
List() {
ForEach(this.AllFolderArray, (item) => {
@@ -293,151 +323,238 @@ export struct NoteDataMoveDialog {
.onClick(() => {
this.noteDataMoveDialogCtl.close()
})
- }.height(56).width(288)
+ }.height(56)
+ .width(288)
}
.width(336)
.borderRadius(36)
.height(this.AllFolderArray.length > 12 ? 616 : (this.AllFolderArray.length - 1) * 56)
.padding({ left: 24, right: 24 })
.backgroundColor(Color.White)
- .margin({bottom:16,left:12,right:12})
+ .margin({ bottom: 16, left: 12, right: 12 })
}
}
@CustomDialog
export struct EditContentDialog {
- editContentDialogCtl: CustomDialogController;
+ editContentDialogCtl: CustomDialogController
confirm: (excuteJs: string) => void
- @Consume('SelectedColor') selectedColor: string;
+ @Consume('SelectedColor') selectedColor: string
@State inSetValue: number = 20
private circleColor: string
- private fontSize:number
+ private fontSize: number
build() {
Row() {
Column() {
Row({ space: 70 }) {
Button({ type: ButtonType.Normal, stateEffect: true }) {
- Image($r('app.media.action_bold')).height(24).width(24)
+ Image($r('app.media.action_bold'))
+ .height(24)
+ .width(24)
.onClick(() => {
- this.confirm("javascript:RE.setBold()")
+ this.confirm("javascript:RICH_EDITOR.setBold()")
})
- }.width(42).height(42).borderRadius(8).backgroundColor($r('app.color.color_ffffff'))
+ }.width(42)
+ .height(42)
+ .borderRadius(8)
+ .backgroundColor($r('app.color.color_ffffff'))
Button({ type: ButtonType.Normal, stateEffect: true }) {
- Image($r('app.media.format_italic')).height(24).width(24)
+ Image($r('app.media.format_italic'))
+ .height(24)
+ .width(24)
.onClick(() => {
- this.confirm("javascript:RE.setItalic()")
+ this.confirm("javascript:RICH_EDITOR.setItalic()")
})
- }.width(42).height(42).borderRadius(8).backgroundColor($r('app.color.color_ffffff'))
+ }.width(42)
+ .height(42)
+ .borderRadius(8)
+ .backgroundColor($r('app.color.color_ffffff'))
+
Button({ type: ButtonType.Normal, stateEffect: true }) {
- Image($r('app.media.underline')).height(24).width(24)
+ Image($r('app.media.underline'))
+ .height(24)
+ .width(24)
.onClick(() => {
- this.confirm("javascript:RE.setUnderline()")
+ this.confirm("javascript:RICH_EDITOR.setUnderline()")
})
- }.width(42).height(42).borderRadius(8).backgroundColor($r('app.color.color_ffffff'))
+ }.width(42)
+ .height(42)
+ .borderRadius(8)
+ .backgroundColor($r('app.color.color_ffffff'))
+
Button({ type: ButtonType.Normal, stateEffect: true }) {
- Image($r('app.media.right_justify')).height(24).width(24)
+ Image($r('app.media.right_justify'))
+ .height(24)
+ .width(24)
.onClick(() => {
- this.confirm("javascript:RE.setJustifyRight()")
+ this.confirm("javascript:RICH_EDITOR.setJustifyRight()")
})
- }.width(42).height(42).borderRadius(8).backgroundColor($r('app.color.color_ffffff'))
+ }.width(42)
+ .height(42)
+ .borderRadius(8)
+ .backgroundColor($r('app.color.color_ffffff'))
+
Button({ type: ButtonType.Normal, stateEffect: true }) {
- Image($r('app.media.mid_justify')).height(24).width(24)
+ Image($r('app.media.mid_justify'))
+ .height(24)
+ .width(24)
.onClick(() => {
- this.confirm("javascript:RE.setJustifyCenter()")
+ this.confirm("javascript:RICH_EDITOR.setJustifyCenter()")
})
- }.width(42).height(42).borderRadius(8).backgroundColor($r('app.color.color_ffffff'))
+ }.width(42)
+ .height(42)
+ .borderRadius(8)
+ .backgroundColor($r('app.color.color_ffffff'))
+
Button({ type: ButtonType.Normal, stateEffect: true }) {
- Image($r('app.media.left_justify')).height(24).width(24)
+ Image($r('app.media.left_justify'))
+ .height(24)
+ .width(24)
.onClick(() => {
- this.confirm("javascript:RE.setJustifyLeft()")
+ this.confirm("javascript:RICH_EDITOR.setJustifyLeft()")
})
- }.width(42).height(42).borderRadius(8).backgroundColor($r('app.color.color_ffffff'))
+ }.width(42)
+ .height(42)
+ .borderRadius(8)
+ .backgroundColor($r('app.color.color_ffffff'))
}
.alignItems(VerticalAlign.Bottom)
- .padding({bottom:2})
+ .padding({ bottom: 2 })
.height(71)
- Divider().vertical(false).color($r("app.color.divider_color_e4e4e4"))
+ Divider()
+ .vertical(false)
+ .color($r("app.color.divider_color_e4e4e4"))
- Row({ space: 70 }){
+ Row({ space: 70 }) {
Button({ type: ButtonType.Normal, stateEffect: true }) {
- Image($r('app.media.suojin')).height(24).width(24)
+ Image($r('app.media.suojin'))
+ .height(24)
+ .width(24)
.onClick(() => {
- this.confirm("javascript:RE.setIndent()")
+ this.confirm("javascript:RICH_EDITOR.setIndent()")
})
- }.width(42).height(42).borderRadius(8).backgroundColor($r('app.color.color_ffffff'))
+ }.width(42)
+ .height(42)
+ .borderRadius(8)
+ .backgroundColor($r('app.color.color_ffffff'))
+
Button({ type: ButtonType.Normal, stateEffect: true }) {
- Image($r('app.media.suojin_back')).height(24).width(24)
+ Image($r('app.media.suojin_back'))
+ .height(24)
+ .width(24)
.onClick(() => {
- this.confirm("javascript:RE.setOutdent()")
+ this.confirm("javascript:RICH_EDITOR.setOutdent()")
})
- }.width(42).height(42).borderRadius(8).backgroundColor($r('app.color.color_ffffff'))
+ }.width(42)
+ .height(42)
+ .borderRadius(8)
+ .backgroundColor($r('app.color.color_ffffff'))
+
Button({ type: ButtonType.Normal, stateEffect: true }) {
- Image($r("app.media.format_menulist_number")).height(24).width(24)
+ Image($r("app.media.format_menulist_number"))
+ .height(24)
+ .width(24)
.onClick(() => {
- this.confirm("javascript:RE.setNumbers()")
+ this.confirm("javascript:RICH_EDITOR.setNumbers()")
})
- }.width(42).height(42).borderRadius(8).backgroundColor($r('app.color.color_ffffff'))
+ }.width(42)
+ .height(42)
+ .borderRadius(8)
+ .backgroundColor($r('app.color.color_ffffff'))
+
Button({ type: ButtonType.Normal, stateEffect: true }) {
- Image($r("app.media.format_menulist_alphabet")).height(24).width(24)
+ Image($r("app.media.format_menulist_alphabet"))
+ .height(24)
+ .width(24)
.onClick(() => {
- this.confirm("javascript:RE.setABC()")
+ this.confirm("javascript:RICH_EDITOR.setABC()")
})
- }.width(42).height(42).borderRadius(8).backgroundColor($r('app.color.color_ffffff'))
+ }.width(42)
+ .height(42)
+ .borderRadius(8)
+ .backgroundColor($r('app.color.color_ffffff'))
+
Button({ type: ButtonType.Normal, stateEffect: true }) {
- Image($r('app.media.format_menubullte2')).height(24).width(24)
+ Image($r('app.media.format_menubullte2'))
+ .height(24)
+ .width(24)
.onClick(() => {
- this.confirm("javascript:RE.setBullets()")
+ this.confirm("javascript:RICH_EDITOR.setBullets()")
})
- }.width(42).height(42).borderRadius(8).backgroundColor($r('app.color.color_ffffff'))
+ }.width(42)
+ .height(42)
+ .borderRadius(8)
+ .backgroundColor($r('app.color.color_ffffff'))
+
Button({ type: ButtonType.Normal, stateEffect: true }) {
- Image($r('app.media.format_menubullte1')).height(24).width(24)
+ Image($r('app.media.format_menubullte1'))
+ .height(24)
+ .width(24)
.onClick(() => {
- this.confirm("javascript:RE.setSquare()")
+ this.confirm("javascript:RICH_EDITOR.setSquare()")
})
- }.width(42).height(42).borderRadius(8).backgroundColor($r('app.color.color_ffffff'))
+ }.width(42)
+ .height(42)
+ .borderRadius(8)
+ .backgroundColor($r('app.color.color_ffffff'))
}
.alignItems(VerticalAlign.Top)
- .padding({top:2})
+ .padding({ top: 2 })
.height(56)
}
.width('50%')
- .padding({left:24,right:24})
+ .padding({ left: 24, right: 24 })
.height(128)
- Divider().vertical(true).height(128).color($r("app.color.divider_color_e4e4e4")).margin({top:4,bottom:4})
+ Divider()
+ .vertical(true)
+ .height(128)
+ .color($r("app.color.divider_color_e4e4e4"))
+ .margin({ top: 4, bottom: 4 })
Column() {
Flex({ direction: FlexDirection.Row, wrap: FlexWrap.Wrap, justifyContent: FlexAlign.End }) {
- Image($r('app.media.cross')).height(16).width(16).margin({top:8})
+ Image($r('app.media.cross'))
+ .height(16)
+ .width(16)
+ .margin({ top: 8 })
.onClick(() => {
this.editContentDialogCtl.close()
})
}
.height(36)
- Row(){
+
+ Row() {
Flex({ wrap: FlexWrap.NoWrap, justifyContent: FlexAlign.SpaceBetween }) {
ForEach(fontColorArray, (colorStr: string) => {
Stack({ alignContent: Alignment.Center }) {
- Circle({ width: 24, height: 24 }).fill(colorStr)
- Circle({ width: 12, height: 12 }).fill($r("app.color.color_ffffff"))
+ Circle({ width: 24, height: 24 })
+ .fill(colorStr)
+ Circle({ width: 12, height: 12 })
+ .fill($r("app.color.color_ffffff"))
.visibility(colorStr == this.selectedColor ? Visibility.Visible : Visibility.None)
}.onClick(() => {
this.selectedColor = colorStr
- this.confirm("javascript:RE.setTextColor('" + this.selectedColor + "')")
+ this.confirm("javascript:RICH_EDITOR.setTextColor('" + this.selectedColor + "')")
})
}, colorStr => colorStr)
- }.padding({ bottom: 11})
+ }.padding({ bottom: 11 })
}
.alignItems(VerticalAlign.Top)
.height(35)
- Divider().vertical(false).color($r("app.color.divider_color_e4e4e4"))
+ Divider()
+ .vertical(false)
+ .color($r("app.color.divider_color_e4e4e4"))
Row({ space: 15 }) {
- Image($r('app.media.font_small')).height(24).width(24).margin({top:8})
+ Image($r('app.media.font_small'))
+ .height(24)
+ .width(24)
+ .margin({ top: 8 })
Slider({
value: this.inSetValue,
min: 0,
@@ -453,11 +570,14 @@ export struct EditContentDialog {
.onChange((value: number, mode: SliderChangeMode) => {
this.inSetValue = value
this.fontSize = value + 20
- this.confirm("javascript:RE.execFontSize('" + this.fontSize+"')")
+ this.confirm("javascript:RICH_EDITOR.execFontSize('" + this.fontSize + "')")
console.info('value:' + value + 'mode:' + mode.toString())
})
.width('88%')
- Image($r('app.media.font_large')).height(24).width(24).margin({top:7})
+ Image($r('app.media.font_large'))
+ .height(24)
+ .width(24)
+ .margin({ top: 7 })
}
.alignItems(VerticalAlign.Top)
.padding({ top: 5 })
@@ -465,7 +585,7 @@ export struct EditContentDialog {
}
.width('50%')
.height(128)
- .padding({left:24,right:24})
+ .padding({ left: 24, right: 24 })
}
.width('100%')
.height(128)
@@ -476,13 +596,16 @@ export struct EditContentDialog {
@CustomDialog
export struct EditTitleDialog {
- editTitleDialog: CustomDialogController;
+ editTitleDialog: CustomDialogController
confirm: (newTitle: string) => void
- @State inputName: string = "";
+ @State inputName: string = ""
build() {
Column() {
- Text($r("app.string.editNoteTitle")).fontSize(20).height(56).margin({ left: 24 })
+ Text($r("app.string.editNoteTitle"))
+ .fontSize(20)
+ .height(56)
+ .margin({ left: 24 })
// title input
Flex({ wrap: FlexWrap.NoWrap, justifyContent: FlexAlign.SpaceBetween }) {
@@ -508,7 +631,11 @@ export struct EditTitleDialog {
.onClick(() => {
this.editTitleDialog.close()
})
- Divider().vertical(true).height(15).strokeWidth(1).color($r("app.color.divider_color_e4e4e4"))
+ Divider()
+ .vertical(true)
+ .height(15)
+ .strokeWidth(1)
+ .color($r("app.color.divider_color_e4e4e4"))
Text($r("app.string.save"))
.opacity((this.inputName == "") ? 0.4 : 1)
.enabled((this.inputName == "") ? false : true)
@@ -520,12 +647,158 @@ export struct EditTitleDialog {
this.editTitleDialog.close()
this.confirm(this.inputName)
})
- }.width('100%').margin({ top: 21, bottom: 25 })
+ }.width('100%')
+ .margin({ top: 21, bottom: 25 })
}
.width(336)
.borderRadius(36)
.backgroundColor(Color.White)
.alignItems(HorizontalAlign.Start)
- .margin({bottom:16,left:12,right:12})
+ .margin({ bottom: 16, left: 12, right: 12 })
+ }
+}
+
+@CustomDialog
+export struct EditContentDialogPortrait {
+ editContentDialogCtl: CustomDialogController;
+ confirm: (excuteJs: string) => void
+ @Consume('SelectedColor') selectedColor: string;
+ @State inSetValue: number = 20
+ private circleColor: string
+ private fontSize: number
+
+
+
+ build() {
+ Column() {
+ Flex({ direction: FlexDirection.Row, wrap: FlexWrap.NoWrap,
+ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) {
+ Text($r("app.string.style")).margin({ top: 8 })
+ .fontSize(14).fontColor($r("app.color.font_stylecolor_AD182431"))
+
+ Image($r('app.media.cross')).height(16).width(16).margin({ top: 8 })
+ .onClick(() => {
+ this.editContentDialogCtl.close()
+ })
+ }
+ .height(48)
+
+
+ Row({ space: 34 }) {
+ Image($r('app.media.action_bold')).height(24).width(24)
+ .onClick(() => {
+ this.confirm("javascript:RICH_EDITOR.setBold()")
+ })
+ Image($r('app.media.format_italic')).height(24).width(24)
+ .onClick(() => {
+ this.confirm("javascript:RICH_EDITOR.setItalic()")
+ })
+ Image($r('app.media.underline')).height(24).width(24)
+ .onClick(() => {
+ this.confirm("javascript:RICH_EDITOR.setUnderline()")
+ })
+ Image($r('app.media.right_justify')).height(24).width(24)
+ .onClick(() => {
+ this.confirm("javascript:RICH_EDITOR.setJustifyRight()")
+ })
+ Image($r('app.media.mid_justify')).height(24).width(24)
+ .onClick(() => {
+ this.confirm("javascript:RICH_EDITOR.setJustifyCenter()")
+ })
+ Image($r('app.media.left_justify')).height(24).width(24)
+ .onClick(() => {
+ this.confirm("javascript:RICH_EDITOR.setJustifyLeft()")
+ })
+ }
+ .height(48)
+
+ Divider().vertical(false).color($r("app.color.divider_color_e4e4e4"))
+
+ Row({ space: 34 }) {
+
+ Image($r('app.media.suojin')).height(24).width(24)
+ .onClick(() => {
+ this.confirm("javascript:RICH_EDITOR.setIndent()")
+ })
+
+ Image($r('app.media.suojin_back')).height(24).width(24)
+ .onClick(() => {
+ this.confirm("javascript:RICH_EDITOR.setOutdent()")
+ })
+
+ Image($r("app.media.format_menulist_number")).height(24).width(24)
+ .onClick(() => {
+ this.confirm("javascript:RICH_EDITOR.setNumbers()")
+ })
+
+ Image($r("app.media.format_menulist_alphabet")).height(24).width(24)
+ .onClick(() => {
+ this.confirm("javascript:RICH_EDITOR.setABC()")
+ })
+
+ Image($r('app.media.format_menubullte2')).height(24).width(24)
+ .onClick(() => {
+ this.confirm("javascript:RICH_EDITOR.setBullets()")
+ })
+
+ Image($r('app.media.format_menubullte1')).height(24).width(24)
+ .onClick(() => {
+ this.confirm("javascript:RICH_EDITOR.setSquare()")
+ })
+ }
+ .height(48)
+
+ Divider().vertical(false).color($r("app.color.divider_color_e4e4e4"))
+
+ Row() {
+ Flex({ wrap: FlexWrap.NoWrap, justifyContent: FlexAlign.SpaceBetween }) {
+ ForEach(fontColorArray, (colorStr: string) => {
+ Stack({ alignContent: Alignment.Center }) {
+ Circle({ width: 24, height: 24 }).fill(colorStr)
+ Circle({ width: 12, height: 12 }).fill($r("app.color.color_ffffff"))
+ .visibility(colorStr == this.selectedColor ? Visibility.Visible : Visibility.None)
+ }.onClick(() => {
+ this.selectedColor = colorStr
+ this.confirm("javascript:RICH_EDITOR.setTextColor('" + this.selectedColor + "')")
+ })
+ }, colorStr => colorStr)
+ }
+ }
+ .height(48)
+
+ Divider().vertical(false).color($r("app.color.divider_color_e4e4e4"))
+
+ Row({ space: 10 }) {
+ Image($r('app.media.font_small')).height(24).width(24).margin({ top: 8 })
+ Slider({
+ value: this.inSetValue,
+ min: 0,
+ max: 60,
+ step: 10,
+ style: SliderStyle.InSet
+ })
+ .blockColor($r("app.color.color_ffffff"))
+ .trackColor($r("app.color.divider_color_e4e4e4"))
+ .selectedColor($r("app.color.text_color_f86d05"))
+ .showSteps(false)
+ .showTips(false)
+ .onChange((value: number, mode: SliderChangeMode) => {
+ this.inSetValue = value
+ this.fontSize = value + 20
+ this.confirm("javascript:RICH_EDITOR.execFontSize('" + this.fontSize + "')")
+ console.info('value:' + value + 'mode:' + mode.toString())
+ })
+ .width('79%')
+ Image($r('app.media.font_large')).height(24).width(24).margin({ top: 7 })
+ }
+ .alignItems(VerticalAlign.Top)
+ .padding({ top: 5 })
+ .height(72)
+ }
+ .width(360)
+ .height(266)
+ .backgroundColor($r("app.color.color_ffffff"))
+ .borderRadius(36)
+ .padding({ left: 24, right: 24 })
}
}
\ No newline at end of file
diff --git a/common/component/src/main/ets/default/FolderListComp.ets b/common/component/src/main/ets/default/FolderListComp.ets
index 3c23806..c133304 100644
--- a/common/component/src/main/ets/default/FolderListComp.ets
+++ b/common/component/src/main/ets/default/FolderListComp.ets
@@ -15,31 +15,34 @@
import FolderData from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/FolderData.ets'
import NoteData from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/NoteData.ets'
-import {SysDefFolderUuid, TableName, FolderType, FolderTableColumn, NoteTableColumn, Delete, DeleteFileType
-} from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/EnumData.ets'
+import {SysDefFolderUuid, TableName, FolderType, FolderTableColumn, NoteTableColumn, Delete, DeleteFileType} from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/EnumData.ets'
import {NewOrEditFolderDialog, DeleteDialog} from './CusDialogComp.ets'
import StyleConstants from '../../../../../../common/utils/src/main/ets/default/constants/StyleConstants.ets'
import RdbStoreUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/RdbStoreUtil.ets'
import FolderUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/FolderUtil.ets'
import NoteUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/NoteUtil.ets'
+import LogUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/LogUtil.ets'
// Folder list component
@Component
export struct FolderListComp {
@StorageLink('AllFolderArray') AllFolderArray: FolderData[] = AppStorage.Link('AllFolderArray')
@Consume('SectionStatus') sectionStatus: number
- @Consume('ExpandStatus') expandStatus: boolean //笔记本折叠展开状态
+ @Consume('ExpandStatus') expandStatus: boolean // 笔记本折叠展开状态
controllerShow: WebController
+ TAG = "FolderListComp"
build() {
Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) {
Column() {
Column() {
- Image($r("app.media.suojin")).height(24).width(24)
+ Image($r("app.media.suojin"))
+ .height(24)
+ .width(24)
.onClick(() => {
if (this.sectionStatus == 1) {
this.expandStatus = !this.expandStatus
- } else{
+ } else {
this.sectionStatus = (this.sectionStatus == 3 ? 2 : 3)
// 迁移
console.log("FolderListComp, set continue section")
@@ -48,7 +51,9 @@ export struct FolderListComp {
}
})
}.alignItems(HorizontalAlign.Start)
- .width("100%").margin({ top: 28 }).padding({ left: 24 })
+ .width("100%")
+ .margin({ top: 28 })
+ .padding({ left: 24 })
NoteAndCreateComp()
// center
@@ -57,39 +62,52 @@ export struct FolderListComp {
ForEach(this.AllFolderArray, (folderItem: FolderData) => {
ListItem() {
if (!FolderUtil.isBottomFixedFolder(folderItem)) {
- FolderItemComp({ folderItem: folderItem,controllerShow: this.controllerShow})
+ FolderItemComp({ folderItem: folderItem, controllerShow: this.controllerShow })
}
}
}, folderItem => folderItem.name.toString())
}
- }.width('100%').padding({ left: 12, right: 12 }).height(7 * 56) // 列表最多显示7个 每个的高度为56
+ }.width('100%')
+ .padding({ left: 12, right: 12 })
+ .height(7 * 56) // 列表最多显示7个 每个的高度为56
}
Column() {
FolderItemComp({
- folderItem: FolderUtil.getFolderData(AppStorage.Get('AllFolderArray'), SysDefFolderUuid.MyFavorites),controllerShow: this.controllerShow
+ folderItem: FolderUtil.getFolderData(AppStorage.Get('AllFolderArray'), SysDefFolderUuid.MyFavorites),
+ controllerShow: this.controllerShow
})
FolderItemComp({
- folderItem: FolderUtil.getFolderData(AppStorage.Get('AllFolderArray'), SysDefFolderUuid.RecentDeletes),controllerShow: this.controllerShow
+ folderItem: FolderUtil.getFolderData(AppStorage.Get('AllFolderArray'), SysDefFolderUuid.RecentDeletes),
+ controllerShow: this.controllerShow
})
- }.margin({ bottom: 48 }).width("100%").padding({ left: 12, right: 12 })
+ }.margin({ bottom: 48 })
+ .width("100%")
+ .padding({ left: 12, right: 12 })
}
}
+
+ aboutToAppear(): void{
+ LogUtil.info(this.TAG, "aboutToAppear")
+ }
+
+ aboutToDisappear(): void{
+ LogUtil.info(this.TAG, "aboutToDisappear")
+ }
+
}
@Component
export struct NoteAndCreateComp {
@StorageLink('AllFolderArray') AllFolderArray: FolderData[] = AppStorage.Link('AllFolderArray')
- @Consume('SelectedColor') selectedColor: string;
- @Consume('PortraitModel') portraitModel:boolean
-
+ @Consume('SelectedColor') selectedColor: string
+ @Consume('PortraitModel') portraitModel: boolean
folderCreateDialogCtl: CustomDialogController = new CustomDialogController({
builder: NewOrEditFolderDialog({ confirm: this.onCreateConfirm.bind(this), dialogType: 0 }),
alignment: DialogAlignment.Center,
autoCancel: false,
customStyle: true,
})
-
folderCreateDialogCtlBottom: CustomDialogController = new CustomDialogController({
builder: NewOrEditFolderDialog({ confirm: this.onCreateConfirm.bind(this), dialogType: 0 }),
alignment: DialogAlignment.Bottom,
@@ -118,14 +136,17 @@ export struct NoteAndCreateComp {
.fontColor($r("app.color.text_color_f86d05"))
.onClick(() => {
this.selectedColor = "#e84026" // 新建的时候选中第一个颜色
- if(this.portraitModel) {
+ if (this.portraitModel) {
this.folderCreateDialogCtlBottom.open()
- }else{
+ } else {
this.folderCreateDialogCtl.open()
}
}).padding({ right: 0 })
}.width(50)
- }.width("100%").margin({ top: 8 }).padding({ left: 24 }).height(56)
+ }.width("100%")
+ .margin({ top: 8 })
+ .padding({ left: 24 })
+ .height(56)
}
}
@@ -136,13 +157,12 @@ struct FolderItemComp {
@StorageLink('AllFolderArray') AllFolderArray: FolderData[] = []
@StorageLink('CheckedNoteArray') CheckedNoteArray: NoteData[] = []
@Consume('SelectedFolderData') selectedFolderData: FolderData
- @Consume('SelectedNoteData') selectedNoteData: NoteData;
+ @Consume('SelectedNoteData') selectedNoteData: NoteData
@Consume('RefreshFlag') refreshFlag: number
@Consume('Longpress') longpress: boolean
- @Consume('SelectedColor') selectedColor: string;
- @Consume('PortraitModel') portraitModel:boolean
+ @Consume('SelectedColor') selectedColor: string
+ @Consume('PortraitModel') portraitModel: boolean
controllerShow: WebController
-
private isLongPress: boolean = false
TAG = "FolderListComp"
// Folder Edit Dialog
@@ -211,6 +231,15 @@ struct FolderItemComp {
let predicates_folder = RdbStoreUtil.getRdbPredicates(TableName.FolderTable)
predicates_folder.equalTo(FolderTableColumn.Uuid, this.folderItem.uuid)
RdbStoreUtil.delete(predicates_folder, null)
+ // update selectedFolderData and selectedNoteData
+ this.selectedFolderData = FolderUtil.getFolderData(this.AllFolderArray, SysDefFolderUuid.AllNotes)
+ this.selectedNoteData = NoteUtil.getFirstNoteData(this.AllNoteArray, SysDefFolderUuid.AllNotes)
+ // save continue data
+ let continueFolder: string = JSON.stringify(this.selectedFolderData.toFolderObject())
+ let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
+ AppStorage.SetOrCreate('ContinueFolder', continueFolder)
+ AppStorage.SetOrCreate('ContinueNote', continueNote)
+ console.log("onDeleteConfirm, set continue folder and note success")
}
}
// Folder Create Dialog
@@ -236,45 +265,63 @@ struct FolderItemComp {
}
@Builder menuBuilder() {
- Column({space: 1}) {
+ Column({ space: 1 }) {
Text($r("app.string.editFolder"))
- .width(124).height(48).padding({top:13, bottom: 13})
- .fontSize(16).fontColor($r("app.color.folder_color_182431"))
+ .width(124)
+ .height(48)
+ .padding({ top: 13, bottom: 13 })
+ .fontSize(16)
+ .fontColor($r("app.color.folder_color_182431"))
.onClick(() => {
- this.selectedColor = this.folderItem.color;
+ this.selectedColor = this.folderItem.color
if (this.portraitModel) {
this.folderEditDialogCtlBottom.open()
} else {
this.folderEditDialogCtl.open()
}
- ContextMenu.close();
+ ContextMenu.close()
})
- Divider().color($r("app.color.divider_color_e4e4e4")).strokeWidth(1)
+ Divider()
+ .color($r("app.color.divider_color_e4e4e4"))
+ .strokeWidth(1)
Text($r("app.string.deleteFolder"))
- .width(124).height(48).padding({top:13, bottom: 14})
- .fontSize(16).fontColor($r("app.color.folder_color_182431"))
+ .width(124)
+ .height(48)
+ .padding({ top: 13, bottom: 14 })
+ .fontSize(16)
+ .fontColor($r("app.color.folder_color_182431"))
.onClick(() => {
- if(this.portraitModel) {
+ if (this.portraitModel) {
this.folderDeleteDialogCtlBottom.open()
- }else{
+ } else {
this.folderDeleteDialogCtl.open()
}
- ContextMenu.close();
+ ContextMenu.close()
})
- Divider().color($r("app.color.divider_color_e4e4e4")).strokeWidth(1)
+ Divider()
+ .color($r("app.color.divider_color_e4e4e4"))
+ .strokeWidth(1)
Text($r("app.string.createFolder"))
- .width(124).height(48).padding({top:13, bottom: 15})
- .fontSize(16).fontColor($r("app.color.folder_color_182431"))
+ .width(124)
+ .height(48)
+ .padding({ top: 13, bottom: 15 })
+ .fontSize(16)
+ .fontColor($r("app.color.folder_color_182431"))
.onClick(() => {
this.selectedColor = "#e84026" // 新建的时候选中第一个颜色
- if(this.portraitModel) {
+ if (this.portraitModel) {
this.folderCreateDialogCtlBottom.open()
- }else{
+ } else {
this.folderCreateDialogCtl.open()
}
- ContextMenu.close();
+ ContextMenu.close()
})
- }.width(156).height(154).padding({top: 4, bottom: 4, left: 16, right: 16}).borderRadius(16).backgroundColor(Color.White)
+ }
+ .width(156)
+ .height(154)
+ .padding({ top: 4, bottom: 4, left: 16, right: 16 })
+ .borderRadius(16)
+ .backgroundColor(Color.White)
.visibility(this.folderItem.folder_type == FolderType.CusDef ? Visibility.Visible : Visibility.None)
}
@@ -295,7 +342,8 @@ struct FolderItemComp {
.textOverflow({ overflow: TextOverflow.Ellipsis })
.flexShrink(1)
.fontColor(FolderUtil.getFolderTextColor(this.selectedFolderData.uuid == this.folderItem.uuid))
- Text(this.refreshFlag.toString()).visibility(Visibility.None) // 用于强制刷新使用
+ Text(this.refreshFlag.toString())
+ .visibility(Visibility.None) // 用于强制刷新使用
}.width(118)
Text(FolderUtil.getNoteCount(AppStorage.Get('AllNoteArray'), this.folderItem.uuid).toString())
@@ -307,7 +355,7 @@ struct FolderItemComp {
.height(56)
.padding({ left: 12, right: 12 })
.backgroundColor(this.isLongPress ? $r("app.color.folder_color_19182431") : this.selectedFolderData.uuid == this.folderItem.uuid
- ? $r("app.color.folder_color_ffffff") : $r("app.color.folder_color_19ffffff"))
+ ? $r("app.color.folder_color_ffffff") : $r("app.color.folder_color_19ffffff"))
.bindContextMenu(this.menuBuilder, ResponseType.LongPress)
.bindContextMenu(this.menuBuilder, ResponseType.RightClick)
.onClick(() => {
@@ -318,16 +366,10 @@ struct FolderItemComp {
this.selectedFolderData = this.folderItem
this.selectedNoteData = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), this.folderItem.uuid)
// 刷新web界面
- this.controllerShow.runJavaScript({script:"RE.setHtml('" + this.selectedNoteData.content_text + "')"})
- // 迁移
- console.log("FolderItemComp, set continue folder and note")
-
+ this.controllerShow.runJavaScript({ script: "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')" })
+ // save continue data
let continueFolder: string = JSON.stringify(this.selectedFolderData.toFolderObject())
- console.log("FolderItemComp, continueFolder : " + continueFolder)
-
let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
- console.log("FolderItemComp, continueNote : " + continueNote)
-
AppStorage.SetOrCreate('ContinueFolder', continueFolder)
AppStorage.SetOrCreate('ContinueNote', continueNote)
AppStorage.SetOrCreate('ContinueSection', 3)
@@ -338,17 +380,17 @@ struct FolderItemComp {
.width('100%')
.height(56)
.parallelGesture(
- GestureGroup(GestureMode.Exclusive,
- LongPressGesture()
- .onAction(() => {
- this.isLongPress = true
- this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
- })
- .onActionEnd(() => {
- this.isLongPress = false
- this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
- })
- )
+ GestureGroup(GestureMode.Exclusive,
+ LongPressGesture()
+ .onAction(() => {
+ this.isLongPress = true
+ this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
+ })
+ .onActionEnd(() => {
+ this.isLongPress = false
+ this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
+ })
+ )
)
}
}
\ No newline at end of file
diff --git a/common/component/src/main/ets/default/NoteContentComp.ets b/common/component/src/main/ets/default/NoteContentComp.ets
index 037c2a6..f1d0e0d 100644
--- a/common/component/src/main/ets/default/NoteContentComp.ets
+++ b/common/component/src/main/ets/default/NoteContentComp.ets
@@ -17,14 +17,13 @@ import DateUtil from '../../../../../../common/utils/src/main/ets/default/baseUt
import RdbStoreUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/RdbStoreUtil.ets'
import FolderData from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/FolderData.ets'
import NoteData from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/NoteData.ets'
-import {TableName, NoteTableColumn, SysDefFolderUuid, Favorite, Delete
-} from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/EnumData.ets'
+import {TableName, NoteTableColumn, SysDefFolderUuid, Favorite, Delete} from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/EnumData.ets'
import StyleConstants from '../../../../../../common/utils/src/main/ets/default/constants/StyleConstants.ets'
-import {EditContentDialog,DeleteDialog,EditTitleDialog} from './CusDialogComp.ets'
+import {EditContentDialog, DeleteDialog, EditTitleDialog} from './CusDialogComp.ets'
import FolderUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/FolderUtil.ets'
import NoteUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/NoteUtil.ets'
import prompt from '@system.prompt'
-import featureAbility from '@ohos.ability.featureAbility';
+import featureAbility from '@ohos.ability.featureAbility'
import LogUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/LogUtil.ets'
const TAG = "NoteContentComp"
@@ -32,18 +31,17 @@ const TAG = "NoteContentComp"
// Note content component
@Component
export struct NoteContentComp {
- @Consume('SelectedNoteData') selectedNoteData: NoteData;
+ @Consume('SelectedNoteData') selectedNoteData: NoteData
@StorageLink('AllNoteArray') AllNoteArray: NoteData[] = AppStorage.Link('AllNoteArray')
@Consume('SelectedFolderData') selectedFolderData: FolderData
@Consume('RefreshFlag') refreshFlag: number
- @Consume('EditModel') editModel:boolean
+ @Consume('EditModel') editModel: boolean
@Consume('SectionStatus') sectionStatus: number
@Consume('LastSectionStatus') lastSectionStatus: number
controllerShow: WebController
private editContentFlag = false
- @State uri1 : string = "";
+ @State uri1: string = ""
private context = getContext(this)
-
noteContent = {
callbackhtml: (html) => {
LogUtil.info(TAG, 'html content is:' + html)
@@ -54,9 +52,33 @@ export struct NoteContentComp {
predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
LogUtil.info(TAG, 'update note success:' + this.selectedNoteData)
+ // save continue data
+ let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
+ AppStorage.SetOrCreate('ContinueNote', continueNote)
+ console.log("callbackhtml, set continue note success")
+ return "AceString"
+ },
+
+ callbackhtmlSave: (html) => {
+ LogUtil.info(TAG, 'html content is:' + html)
+ LogUtil.info(TAG, 'note uuid is:' + this.selectedNoteData.uuid)
+ this.selectedNoteData.content_text = html
+ this.selectedNoteData.modified_time = new Date().getTime()
+ let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
+ predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
+ RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
+ LogUtil.info(TAG, 'update note success:' + this.selectedNoteData)
+ // save continue data
+ let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
+ AppStorage.SetOrCreate('ContinueNote', continueNote)
+ console.log("callbackhtml, set continue note success")
// 删除空白笔记
- NoteUtil.deleteEmptyNote(this.selectedNoteData,this.AllNoteArray,this.controllerShow)
- return "AceString";
+ if(NoteUtil.deleteEmptyNote(this.selectedNoteData,this.AllNoteArray,this.controllerShow)) {
+ this.selectedNoteData = this.AllNoteArray[0]
+ LogUtil.info(TAG, "selectedNoteData note:" + this.selectedNoteData.uuid)
+ this.controllerShow.runJavaScript({script:"RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')"})
+ }
+ return "AceString"
}
}
@@ -65,7 +87,7 @@ export struct NoteContentComp {
Flex({ direction: FlexDirection.Column, wrap: FlexWrap.Wrap,
alignItems: ItemAlign.Start, alignContent: FlexAlign.SpaceAround }) {
Column() {
- ToolBarComp({controllerShow: this.controllerShow})
+ ToolBarComp({ controllerShow: this.controllerShow })
}
Column() {
@@ -80,34 +102,38 @@ export struct NoteContentComp {
this.controllerShow.registerJavaScriptProxy({
obj: this.noteContent,
name: "callBackToApp", // html--> name.method
- methodList: ["callbackhtml"],
- });
+ methodList: ["callbackhtml","callbackhtmlSave"],
+ })
LogUtil.info(TAG, "finish register")
this.controllerShow.refresh()
this.editContentFlag = true
}
LogUtil.info(TAG, "finish loadurl")
console.log('onPageEnd:' + e.url)
- this.controllerShow.runJavaScript({script:"RE.setHtml('" + this.selectedNoteData.content_text + "')"})
+ this.controllerShow.runJavaScript({ script: "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')" })
// 初次加载为为小屏预览模式
- if(this.sectionStatus != 1) {
- this.controllerShow.runJavaScript({script:"RE.setInputEnabled(false)"})
+ if (this.sectionStatus != 1) {
+ this.controllerShow.runJavaScript({ script: "RICH_EDITOR.setInputEnabled(false)" })
}
})
.zoomAccess(false)
.height(450)
.width('100%')
}
- .margin({ top: 16 }).width(StyleConstants.PERCENTAGE_100)
+ .margin({ top: 16 })
+ .width(StyleConstants.PERCENTAGE_100)
.opacity(this.selectedNoteData.is_deleted == Delete.Yes ? 0.4 : 1)
.enabled(this.selectedNoteData.is_deleted == Delete.Yes ? false : true)
.onClick(() => {
// 点击第三屏进入全屏编辑模式
- if(this.sectionStatus != 1) {
+ if (this.sectionStatus != 1) {
this.lastSectionStatus = this.sectionStatus
this.sectionStatus = 1
- this.controllerShow.runJavaScript({script:"RE.setInputEnabled(true)"})
+ this.controllerShow.runJavaScript({ script: "RICH_EDITOR.setInputEnabled(true)" })
this.editModel = !this.editModel
+ // save continue data
+ AppStorage.SetOrCreate('ContinueSection', this.sectionStatus)
+ console.log("NoteContentComp, set continue section success")
}
})
}
@@ -120,16 +146,24 @@ export struct NoteContentComp {
.height(StyleConstants.PERCENTAGE_100)
.width(StyleConstants.PERCENTAGE_100)
}
+
+ aboutToAppear(): void{
+ LogUtil.info(TAG, "aboutToAppear")
+ }
+
+ aboutToDisappear(): void{
+ LogUtil.info(TAG, "aboutToDisappear")
+ }
+
}
@Component
export struct NoteContentOverViewComp {
- @Consume('SelectedNoteData') selectedNoteData: NoteData;
+ @Consume('SelectedNoteData') selectedNoteData: NoteData
@StorageLink('AllFolderArray') AllFolderArray: FolderData[] = []
@StorageLink('CheckedNoteArray') CheckedNoteArray: NoteData[] = []
- @Consume('EditModel') editModel:boolean
+ @Consume('EditModel') editModel: boolean
@Consume('SectionStatus') sectionStatus: number
-
editTitleDialogCtl: CustomDialogController = new CustomDialogController({
builder: EditTitleDialog({ confirm: this.confirm.bind(this), dialogType: 0 }),
alignment: DialogAlignment.Center,
@@ -162,7 +196,7 @@ export struct NoteContentOverViewComp {
}
.width(148)
.backgroundColor($r("app.color.color_fffffB"))
- .padding({left:24,right:24})
+ .padding({ left: 24, right: 24 })
}
build() {
@@ -174,11 +208,16 @@ export struct NoteContentOverViewComp {
this.editModel = true
this.sectionStatus = 1
this.editTitleDialogCtl.open()
+ // save continue data
+ AppStorage.SetOrCreate('ContinueSection', this.sectionStatus)
+ console.log("NoteContentOverViewComp, set continue section success")
})
- }.height(40).width(StyleConstants.PERCENTAGE_100)
+ }.height(40)
+ .width(StyleConstants.PERCENTAGE_100)
Row() {
- Text(DateUtil.formateDateForNoteContent(new Date(this.selectedNoteData.modified_time))).fontSize(12)
+ Text(DateUtil.formateDateForNoteContent(new Date(this.selectedNoteData.modified_time)))
+ .fontSize(12)
.padding({ top: 4, bottom: 4 })
Row() {
Text(FolderUtil.getFolderText(FolderUtil.getFolderData(AppStorage.Get('AllFolderArray'), this.selectedNoteData.folder_uuid)))
@@ -202,7 +241,7 @@ export struct NoteContentOverViewComp {
@Component
export struct ToolBarComp {
- @Consume('SelectedNoteData') selectedNoteData: NoteData;
+ @Consume('SelectedNoteData') selectedNoteData: NoteData
@Consume('RefreshFlag') refreshFlag: number
@Consume('SectionStatus') sectionStatus: number
@Consume('LastSectionStatus') lastSectionStatus: number
@@ -210,7 +249,7 @@ export struct ToolBarComp {
@Consume('ChooseNote') chooseNote: boolean
@Consume('PortraitModel') portraitModel: boolean
@StorageLink('AllNoteArray') AllNoteArray: NoteData[] = AppStorage.Link('AllNoteArray')
- @Consume('EditModel') editModel:boolean
+ @Consume('EditModel') editModel: boolean
controllerShow: WebController
private context = getContext(this)
@@ -245,12 +284,10 @@ export struct ToolBarComp {
}
this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
this.selectedNoteData = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), this.selectedFolderData.uuid)
- this.controllerShow.runJavaScript({script:"RE.setHtml('" + this.selectedNoteData.content_text + "')"})
+ this.controllerShow.runJavaScript({ script: "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')" })
this.chooseNote = false
- // 迁移
- console.log("ToolBarComp, onDeleteConfirm, set continue note")
+ // save continue data
let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
- console.log("ToolBarComp, onDeleteConfirm, continueNote : " + continueNote)
AppStorage.SetOrCreate('ContinueNote', continueNote)
console.log("ToolBarComp, onDeleteConfirm, set continue note success")
}
@@ -264,33 +301,36 @@ export struct ToolBarComp {
confirm(excuteJs: string) {
prompt.showToast({ message: excuteJs, duration: 2000 })
- this.controllerShow.runJavaScript({script:excuteJs})
+ this.controllerShow.runJavaScript({ script: excuteJs })
}
-
build() {
Flex({ direction: FlexDirection.Row, wrap: FlexWrap.NoWrap,
justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) {
if (this.portraitModel == true) {
- Image($r('app.media.back')).height(24).width(24)
+ Image($r('app.media.back'))
+ .height(24)
+ .width(24)
.onClick(() => {
this.chooseNote = false
})
} else {
- Image($r('app.media.zoom')).height(24).width(24)
+ Image($r('app.media.zoom'))
+ .height(24)
+ .width(24)
.onClick(() => {
if (this.sectionStatus != 1) {
this.lastSectionStatus = this.sectionStatus
this.sectionStatus = 1
- this.controllerShow.runJavaScript({script:"RE.setInputEnabled(true)"})
+ this.controllerShow.runJavaScript({ script: "RICH_EDITOR.setInputEnabled(true)" })
} else {
if (this.lastSectionStatus != undefined) {
- this.sectionStatus = this.lastSectionStatus
// 切换为小屏预览模式
- this.controllerShow.runJavaScript({script:"RE.setInputEnabled(false)"})
+ this.controllerShow.runJavaScript({ script: "RICH_EDITOR.setInputEnabled(false)" })
// 退出全屏时存库
- LogUtil.info(TAG, "close note"+ this.selectedNoteData.uuid)
- this.controllerShow.runJavaScript({script:"get_html_content()"})
+ LogUtil.info(TAG, "close note" + this.selectedNoteData.uuid)
+ this.controllerShow.runJavaScript({ script: "save_html_content()" })
+ this.sectionStatus = this.lastSectionStatus
} else {
this.sectionStatus = 3
}
@@ -306,11 +346,15 @@ export struct ToolBarComp {
if (this.selectedNoteData.is_deleted == Delete.Yes) {
Row({ space: StyleConstants.SPACE_24 }) {
- Image($r('app.media.delete')).height(24).width(24)
+ Image($r('app.media.delete'))
+ .height(24)
+ .width(24)
.onClick(() => {
this.noteDataDeleteDialogCtl.open()
})
- Image($r('app.media.recover')).height(24).width(24)
+ Image($r('app.media.recover'))
+ .height(24)
+ .width(24)
.onClick(() => {
this.selectedNoteData.is_deleted = Delete.No
this.selectedNoteData.deleted_time = 0
@@ -323,65 +367,96 @@ export struct ToolBarComp {
RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
this.selectedNoteData = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), this.selectedFolderData.uuid)
- this.controllerShow.runJavaScript({script:"RE.setHtml('" + this.selectedNoteData.content_text + "')"})
+ this.controllerShow.runJavaScript({ script: "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')" })
+ // save continue data
+ let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
+ AppStorage.SetOrCreate('ContinueNote', continueNote)
+ console.log("recover, set continue note success")
})
}.width(72)
.visibility(this.portraitModel ? Visibility.None : Visibility.Visible)
- } else if(this.portraitModel == true && this.editModel == true) {
+ } else if (this.portraitModel == true && this.editModel == true) {
Row({ space: StyleConstants.SPACE_24 }) {
- Image($r('app.media.undo')).height(24).width(24)
+ Image($r('app.media.undo'))
+ .height(24)
+ .width(24)
.onClick(() => {
- this.controllerShow.runJavaScript({script:"javascript:RE.undo()"})
+ this.controllerShow.runJavaScript({ script: "javascript:RICH_EDITOR.undo()" })
})
- Image($r('app.media.todo')).height(24).width(24)
+ Image($r('app.media.todo'))
+ .height(24)
+ .width(24)
.onClick(() => {
- this.controllerShow.runJavaScript({script:"javascript:RE.redo()"})
+ this.controllerShow.runJavaScript({ script: "javascript:RICH_EDITOR.redo()" })
})
- Image($r('app.media.tick_thin')).height(24).width(24)
+ Image($r('app.media.tick_thin'))
+ .height(24)
+ .width(24)
.onClick(() => {
// 保存笔记信息到数据库
- this.controllerShow.runJavaScript({script:"get_html_content()"})
+ this.controllerShow.runJavaScript({ script: "get_html_content()" })
+ if (this.selectedNoteData.title == "标题" && this.selectedNoteData.content_text == "") {
+ LogUtil.info(TAG, "note is empty,save note failed")
+ prompt.showToast({ message: $r('app.string.empty_note'), duration: 2000 })
+ }
})
}.width(120)
- } else if(this.editModel == true) {
+ } else if (this.editModel == true) {
Row({ space: StyleConstants.SPACE_24 }) {
- Image($r('app.media.circle_tick1')).height(24).width(24)
+ Image($r('app.media.circle_tick1'))
+ .height(24)
+ .width(24)
.onClick(() => {
// 清单
- this.controllerShow.runJavaScript({script:"javascript:RE.setTodo()"})
+ this.controllerShow.runJavaScript({ script: "javascript:RICH_EDITOR.setTodo()" })
})
- Image($r('app.media.styles')).height(24).width(24)
+ Image($r('app.media.styles'))
+ .height(24)
+ .width(24)
.onClick(() => {
- if(this.portraitModel) {
+ if (this.portraitModel) {
this.editContentDialogCtl.open()
- }else{
+ } else {
this.editContentDialogCtl.open()
}
})
- Image($r('app.media.picture_white')).height(24).width(24)
+ Image($r('app.media.picture_white'))
+ .height(24)
+ .width(24)
.onClick(() => {
console.info('test select single select!')
- this.controllerShow.runJavaScript({script:"javascript:RE.insertImage()"})
+ this.controllerShow.runJavaScript({ script: "javascript:RICH_EDITOR.insertImage()" })
})
- Image($r('app.media.tick_thick')).height(24).width(24)
+ Image($r('app.media.tick_thick'))
+ .height(24)
+ .width(24)
.onClick(() => {
// 保存笔记信息到数据库
- this.controllerShow.runJavaScript({script:"get_html_content()"})
+ this.controllerShow.runJavaScript({ script: "get_html_content()" })
+ if (this.selectedNoteData.title == "标题" && this.selectedNoteData.content_text == "") {
+ LogUtil.info(TAG, "note is empty,save note failed")
+ prompt.showToast({ message: $r('app.string.empty_note'), duration: 2000 })
+ }
})
- Image($r('app.media.undo')).height(24).width(24)
+ Image($r('app.media.undo'))
+ .height(24)
+ .width(24)
.onClick(() => {
- this.controllerShow.runJavaScript({script:"RE.undo()"})
+ this.controllerShow.runJavaScript({ script: "RICH_EDITOR.undo()" })
})
- Image($r('app.media.todo')).height(24).width(24)
+ Image($r('app.media.todo'))
+ .height(24)
+ .width(24)
.onClick(() => {
- this.controllerShow.runJavaScript({script:"RE.redo()"})
+ this.controllerShow.runJavaScript({ script: "RICH_EDITOR.redo()" })
})
}.width(268)
} else {
Row({ space: StyleConstants.SPACE_24 }) {
Image(this.selectedNoteData.is_favorite == Favorite.Yes ? $r('app.media.favorite') : $r('app.media.favorite_cancel'))
- .height(24).width(24)
+ .height(24)
+ .width(24)
.onClick(() => {
this.selectedNoteData.is_favorite = (this.selectedNoteData.is_favorite == Favorite.Yes ? Favorite.No : Favorite.Yes)
this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
@@ -391,15 +466,15 @@ export struct ToolBarComp {
RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
if (this.selectedFolderData.uuid === SysDefFolderUuid.MyFavorites) {
this.selectedNoteData = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), SysDefFolderUuid.MyFavorites)
- // 迁移
- console.log("ToolBarComp, set continue note")
+ // save continue data
let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
- console.log("ToolBarComp, continueNote : " + continueNote)
AppStorage.SetOrCreate('ContinueNote', continueNote)
console.log("ToolBarComp, set continue note success")
}
})
- Image($r('app.media.delete')).height(24).width(24)
+ Image($r('app.media.delete'))
+ .height(24)
+ .width(24)
.onClick(() => {
if (this.portraitModel) {
this.noteDataDeleteDialogCtlBottom.open()
@@ -421,7 +496,7 @@ export struct DeleteNoteComp {
@StorageLink('AllNoteArray') AllNoteArray: NoteData[] = AppStorage.Link('AllNoteArray')
@Consume('SelectedFolderData') selectedFolderData: FolderData
@Consume('RefreshFlag') refreshFlag: number
- @Consume('SelectedNoteData') selectedNoteData: NoteData;
+ @Consume('SelectedNoteData') selectedNoteData: NoteData
@Consume('PortraitModel') portraitModel: boolean
@Consume('ChooseNote') chooseNote: boolean
noteDataDeleteDialogCtlBottom: CustomDialogController = new CustomDialogController({
@@ -449,10 +524,8 @@ export struct DeleteNoteComp {
this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
this.selectedNoteData = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), this.selectedFolderData.uuid)
this.chooseNote = false
- // 迁移
- console.log("DeleteNoteComp, onDeleteConfirm, set continue note")
+ // save continue data
let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
- console.log("DeleteNoteComp, onDeleteConfirm, continueNote : " + continueNote)
AppStorage.SetOrCreate('ContinueNote', continueNote)
console.log("DeleteNoteComp, onDeleteConfirm, set continue note success")
}
@@ -467,7 +540,8 @@ export struct DeleteNoteComp {
this.noteDataDeleteDialogCtlBottom.open()
})
Text($r("app.string.delete"))
- .fontSize(10).fontColor('#182431')
+ .fontSize(10)
+ .fontColor('#182431')
.padding({ top: 5 })
}
.alignItems(HorizontalAlign.Center)
@@ -488,7 +562,8 @@ export struct DeleteNoteComp {
RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
})
Text($r("app.string.recover"))
- .fontSize(10).fontColor('#182431')
+ .fontSize(10)
+ .fontColor('#182431')
.padding({ top: 5 })
}
.alignItems(HorizontalAlign.Center)
@@ -507,7 +582,7 @@ struct NoteDataMoveItemComp {
private folderItem: FolderData
build() {
- Flex({ alignItems: ItemAlign.Center, wrap: FlexWrap.NoWrap,justifyContent: FlexAlign.Center }) {
+ Flex({ alignItems: ItemAlign.Center, wrap: FlexWrap.NoWrap, justifyContent: FlexAlign.Center }) {
Flex({ alignItems: ItemAlign.Center, wrap: FlexWrap.NoWrap }) {
Image(FolderUtil.getFolderIcon(this.folderItem.uuid))
.objectFit(ImageFit.ScaleDown)
@@ -530,7 +605,9 @@ struct NoteDataMoveItemComp {
.width('100%')
.height(55)
- Divider().color($r("app.color.divider_color_e4e4e4")).strokeWidth(1)
+ Divider()
+ .color($r("app.color.divider_color_e4e4e4"))
+ .strokeWidth(1)
}
.padding({ left: 16 })
}
diff --git a/common/component/src/main/ets/default/NoteContentCompPortrait.ets b/common/component/src/main/ets/default/NoteContentCompPortrait.ets
new file mode 100644
index 0000000..2359d03
--- /dev/null
+++ b/common/component/src/main/ets/default/NoteContentCompPortrait.ets
@@ -0,0 +1,463 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import DateUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/DateUtil.ets'
+import RdbStoreUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/RdbStoreUtil.ets'
+import FolderData from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/FolderData.ets'
+import NoteData from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/NoteData.ets'
+import {TableName, NoteTableColumn, SysDefFolderUuid, Favorite, Delete
+} from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/EnumData.ets'
+import StyleConstants from '../../../../../../common/utils/src/main/ets/default/constants/StyleConstants.ets'
+import {EditContentDialogPortrait, DeleteDialog, EditTitleDialog} from './CusDialogComp.ets'
+import FolderUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/FolderUtil.ets'
+import NoteUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/NoteUtil.ets'
+import prompt from '@system.prompt'
+import featureAbility from '@ohos.ability.featureAbility';
+import LogUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/LogUtil.ets'
+
+const TAG = "NoteContentComp"
+
+// Note content component
+@Component
+export struct NoteContentCompPortrait {
+ @Consume('SelectedNoteData') selectedNoteData: NoteData;
+ @StorageLink('AllNoteArray') AllNoteArray: NoteData[] = AppStorage.Link('AllNoteArray')
+ @Consume('SelectedFolderData') selectedFolderData: FolderData
+ @Consume('RefreshFlag') refreshFlag: number
+ @Consume('SectionStatus') sectionStatus: number
+ @Consume('ChooseNote') chooseNote: boolean
+ @Consume('EditModel') editModel: boolean
+ private controllerShow: WebController = new WebController()
+ private editContentFlag = false
+ @State uri1: string = "";
+ private context = getContext(this)
+ noteContent = {
+ callbackhtml: (html) => {
+ LogUtil.info(TAG, 'html content is:' + html)
+ LogUtil.info(TAG, 'note uuid is:' + this.selectedNoteData.uuid)
+ this.selectedNoteData.content_text = html
+ this.selectedNoteData.modified_time = new Date().getTime()
+ let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
+ predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
+ RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
+ LogUtil.info(TAG, 'update note success:' + this.selectedNoteData)
+ return "AceString";
+ }
+ }
+
+ build() {
+ Stack({ alignContent: Alignment.Bottom }) {
+ Flex({ direction: FlexDirection.Column, wrap: FlexWrap.Wrap,
+ alignItems: ItemAlign.Start, alignContent: FlexAlign.SpaceAround }) {
+ Column() {
+ ToolBarComp({ controllerShow: this.controllerShow })
+ }
+
+ Column() {
+ NoteContentOverViewComp()
+ Text(this.refreshFlag.toString()).visibility(Visibility.None)
+ Text(this.AllNoteArray.length.toString()).visibility(Visibility.None) // 用于强制刷新使用
+
+ Web({ src: $rawfile('editor.html'), controller: this.controllerShow })
+ .javaScriptAccess(true)
+ .onPageEnd((e) => {
+ if (this.editContentFlag == false) {
+ this.controllerShow.registerJavaScriptProxy({
+ obj: this.noteContent,
+ name: "callBackToApp", // html--> name.method
+ methodList: ["callbackhtml"],
+ });
+ LogUtil.info(TAG, "finish register")
+ this.controllerShow.refresh()
+ this.editContentFlag = true
+ }
+ LogUtil.info(TAG, "finish loadurl")
+ console.log('onPageEnd:' + e.url)
+ // 初次进入预览模式
+ this.controllerShow.runJavaScript({ script: "RICH_EDITOR.setInputEnabled(false)" })
+ this.controllerShow.runJavaScript({
+ script: "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')"
+ })
+ })
+ .zoomAccess(false)
+ .height(450)
+ .width('100%')
+ }
+ .margin({ top: 16 })
+ .width(StyleConstants.PERCENTAGE_100)
+ .opacity(this.selectedNoteData.is_deleted == Delete.Yes ? 0.4 : 1)
+ .enabled(this.selectedNoteData.is_deleted == Delete.Yes ? false : true)
+ .onClick(() => {
+ this.controllerShow.runJavaScript({ script: "RICH_EDITOR.setInputEnabled(true)" })
+ this.editModel = true
+ })
+ }
+ .height(StyleConstants.PERCENTAGE_100)
+ .margin({ left: 24, right: 24 })
+ .visibility(FolderUtil.getNoteCount(AppStorage.Get('AllNoteArray'), this.selectedFolderData.uuid) == 0 ? Visibility.Hidden : Visibility.Visible)
+
+ EditNoteCompForPortrait({ controllerShow: this.controllerShow })
+ DeleteNoteComp()
+ }
+ .height(StyleConstants.PERCENTAGE_100)
+ .width(StyleConstants.PERCENTAGE_100)
+ }
+}
+
+@Component
+export struct NoteContentOverViewComp {
+ @Consume('SelectedNoteData') selectedNoteData: NoteData;
+ @StorageLink('AllFolderArray') AllFolderArray: FolderData[] = []
+ @StorageLink('CheckedNoteArray') CheckedNoteArray: NoteData[] = []
+ @Consume('SectionStatus') sectionStatus: number
+ editTitleDialogCtl: CustomDialogController = new CustomDialogController({
+ builder: EditTitleDialog({ confirm: this.confirm.bind(this), dialogType: 0 }),
+ alignment: DialogAlignment.Center,
+ autoCancel: false,
+ customStyle: true,
+ })
+
+ confirm(newTitle: string) {
+ this.selectedNoteData.title = newTitle
+ this.selectedNoteData.modified_time = new Date().getTime()
+ let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
+ predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
+ RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
+ }
+
+ @Builder MenuBuilder() {
+ Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
+ List() {
+ ForEach(this.AllFolderArray, (item) => {
+ ListItem() {
+ NoteDataMoveItemComp({ folderItem: item })
+ }
+ .onClick(() => {
+ this.selectedNoteData.folder_uuid = item.uuid
+ })
+ }, noteItem => noteItem.uuid)
+ }.listDirection(Axis.Vertical)
+ .edgeEffect(EdgeEffect.Spring)
+ .height(this.AllFolderArray.length > 12 ? 504 : (this.AllFolderArray.length - 3) * 56)
+ }
+ .width(148)
+ .backgroundColor($r("app.color.color_fffffB"))
+ .padding({ left: 24, right: 24 })
+ }
+
+ build() {
+ Flex({ direction: FlexDirection.Column, wrap: FlexWrap.NoWrap,
+ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) {
+ Row() {
+ Text(this.selectedNoteData.title).fontSize(30)
+ .onClick(() => {
+ this.editTitleDialogCtl.open()
+ })
+ }.height(40).width(StyleConstants.PERCENTAGE_100)
+
+ Row() {
+ Text(DateUtil.formateDateForNoteContent(new Date(this.selectedNoteData.modified_time))).fontSize(12)
+ .padding({ top: 4, bottom: 4 })
+ Row() {
+ Text(FolderUtil.getFolderText(FolderUtil.getFolderData(AppStorage.Get('AllFolderArray'), this.selectedNoteData.folder_uuid)))
+ .fontSize(12)
+ Image($r('app.media.triangle'))
+ .width(6)
+ .height(12)
+ .margin({ left: 4 })
+ }
+ .padding({ left: 8, right: 8, top: 4, bottom: 4 })
+ .margin({ left: 8 })
+ .borderRadius(16)
+ .backgroundColor(NoteUtil.getNoteBgColor(AppStorage.Get('AllFolderArray'), this.selectedNoteData.folder_uuid, SysDefFolderUuid.AllNotes, false))
+ .bindMenu(this.MenuBuilder)
+ }.alignItems(VerticalAlign.Top).height(40).width(StyleConstants.PERCENTAGE_100)
+ }
+ .width(StyleConstants.PERCENTAGE_100)
+ .height(80)
+ }
+}
+
+@Component
+export struct ToolBarComp {
+ @Consume('SelectedNoteData') selectedNoteData: NoteData;
+ @Consume('RefreshFlag') refreshFlag: number
+ @Consume('SectionStatus') sectionStatus: number
+ @Consume('SelectedFolderData') selectedFolderData: FolderData
+ @Consume('ChooseNote') chooseNote: boolean
+ @Consume('PortraitModel') portraitModel: boolean
+ @StorageLink('AllNoteArray') AllNoteArray: NoteData[] = AppStorage.Link('AllNoteArray')
+ @Consume('EditModel') editModel: boolean
+ controllerShow: WebController
+
+ build() {
+ Flex({ direction: FlexDirection.Row, wrap: FlexWrap.NoWrap,
+ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) {
+
+ Image($r('app.media.back')).height(24).width(24)
+ .onClick(() => {
+ // 退出全屏时存库
+ this.controllerShow.runJavaScript({ script: "get_html_content()" })
+ // 删除空白笔记
+ NoteUtil.deleteEmptyNote(this.selectedNoteData, this.AllNoteArray, this.controllerShow)
+ this.chooseNote = false
+ // 进入预览模式
+ this.controllerShow.runJavaScript({ script: "RE.setInputEnabled(false)" })
+ this.editModel = false
+ })
+
+ if (this.editModel == false) {
+ Row({ space: StyleConstants.SPACE_24 }) {
+ Image(this.selectedNoteData.is_favorite == Favorite.Yes ? $r('app.media.favorite') : $r('app.media.favorite_cancel'))
+ .height(24).width(24)
+ .onClick(() => {
+ this.selectedNoteData.is_favorite = (this.selectedNoteData.is_favorite == Favorite.Yes ? Favorite.No : Favorite.Yes)
+ this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
+ // update note to db
+ let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
+ predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
+ RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
+ if (this.selectedFolderData.uuid === SysDefFolderUuid.MyFavorites) {
+ this.selectedNoteData = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), SysDefFolderUuid.MyFavorites)
+ // 迁移
+ console.log("ToolBarComp, set continue note")
+ let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
+ console.log("ToolBarComp, continueNote : " + continueNote)
+ AppStorage.SetOrCreate('ContinueNote', continueNote)
+ console.log("ToolBarComp, set continue note success")
+ }
+ })
+ }.width(36)
+ .visibility(this.selectedNoteData.is_deleted == Delete.Yes ? Visibility.None : Visibility.Visible)
+ } else {
+ Row({ space: StyleConstants.SPACE_24 }) {
+ Image($r('app.media.undo')).height(24).width(24)
+ .onClick(() => {
+ this.controllerShow.runJavaScript({ script: "javascript:RICH_EDITOR.undo()" })
+ })
+ Image($r('app.media.todo')).height(24).width(24)
+ .onClick(() => {
+ this.controllerShow.runJavaScript({ script: "javascript:RICH_EDITOR.redo()" })
+ })
+ Image($r('app.media.tick_thin')).height(24).width(24)
+ .onClick(() => {
+ // 保存笔记信息到数据库
+ this.controllerShow.runJavaScript({ script: "get_html_content()" })
+ if (this.selectedNoteData.title == "标题" && this.selectedNoteData.content_text == "") {
+ LogUtil.info(TAG, "note is empty,save note failed")
+ prompt.showToast({ message: $r('app.string.empty_note'), duration: 2000 })
+ }
+ // 进入预览模式
+ this.controllerShow.runJavaScript({ script: "RICH_EDITOR.setInputEnabled(false)" })
+ this.editModel = false
+ })
+ }
+ .width(120)
+ .visibility(this.selectedNoteData.is_deleted == Delete.Yes ? Visibility.None : Visibility.Visible)
+ }
+ }
+ .width(StyleConstants.PERCENTAGE_100)
+ .height(80)
+ }
+}
+
+@Component
+export struct DeleteNoteComp {
+ @StorageLink('CheckedNoteArray') CheckedNoteArray: NoteData[] = []
+ @StorageLink('AllNoteArray') AllNoteArray: NoteData[] = AppStorage.Link('AllNoteArray')
+ @Consume('SelectedFolderData') selectedFolderData: FolderData
+ @Consume('RefreshFlag') refreshFlag: number
+ @Consume('SelectedNoteData') selectedNoteData: NoteData;
+ @Consume('PortraitModel') portraitModel: boolean
+ @Consume('ChooseNote') chooseNote: boolean
+ noteDataDeleteDialogCtlBottom: CustomDialogController = new CustomDialogController({
+ builder: DeleteDialog({ onConfirm: this.onDeleteConfirm.bind(this), multiSelect: true }),
+ alignment: DialogAlignment.Bottom,
+ autoCancel: false,
+ customStyle: true,
+ })
+
+ onDeleteConfirm() {
+ if (this.selectedFolderData.uuid != SysDefFolderUuid.RecentDeletes) {
+ this.selectedNoteData.is_deleted = Delete.Yes
+ this.selectedNoteData.deleted_time = new Date().getTime()
+ // update note to db
+ let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
+ predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
+ RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
+ } else {
+ NoteUtil.removeNoteData(this.AllNoteArray, this.selectedNoteData.uuid)
+ // delete note from db
+ let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
+ predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
+ RdbStoreUtil.delete(predicates_note, null)
+ }
+ this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
+ this.selectedNoteData = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), this.selectedFolderData.uuid)
+ this.chooseNote = false
+ }
+
+ build() {
+ Flex({ direction: FlexDirection.Row, wrap: FlexWrap.Wrap, justifyContent: FlexAlign.SpaceBetween }) {
+ Column() {
+ Image($r('app.media.delete'))
+ .width(24)
+ .height(24)
+ .onClick(() => {
+ this.noteDataDeleteDialogCtlBottom.open()
+ })
+ Text($r("app.string.delete"))
+ .fontSize(10).fontColor('#182431')
+ .padding({ top: 5 })
+ }
+ .alignItems(HorizontalAlign.Center)
+
+ Column() {
+ Image($r('app.media.recover'))
+ .width(24)
+ .height(24)
+ .onClick(() => {
+ this.selectedNoteData.is_deleted = Delete.No
+ this.selectedNoteData.deleted_time = 0
+ prompt.showToast({ message: $r('app.string.restore'), duration: 2000 })
+ this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
+ this.chooseNote = false
+ // update note to db
+ let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
+ predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid)
+ RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null)
+ })
+ Text($r("app.string.recover"))
+ .fontSize(10).fontColor('#182431')
+ .padding({ top: 5 })
+ }
+ .alignItems(HorizontalAlign.Center)
+ }
+ .width(360)
+ .height(56)
+ .visibility(this.selectedNoteData.is_deleted == Delete.Yes && this.portraitModel == true ?
+ Visibility.Visible : Visibility.None)
+ }
+}
+
+@Component
+export struct EditNoteCompForPortrait {
+ @StorageLink('CheckedNoteArray') CheckedNoteArray: NoteData[] = []
+ @StorageLink('AllNoteArray') AllNoteArray: NoteData[] = AppStorage.Link('AllNoteArray')
+ @Consume('SelectedFolderData') selectedFolderData: FolderData
+ @Consume('RefreshFlag') refreshFlag: number
+ @Consume('SelectedNoteData') selectedNoteData: NoteData;
+ @Consume('PortraitModel') portraitModel: boolean
+ @Consume('ChooseNote') chooseNote: boolean
+ @Consume('EditModel') editModel: boolean
+ controllerShow: WebController
+ editContentDialogCtl: CustomDialogController = new CustomDialogController({
+ builder: EditContentDialogPortrait({ confirm: this.confirm.bind(this), dialogType: 0 }),
+ alignment: DialogAlignment.Bottom,
+ autoCancel: true,
+ customStyle: true,
+ })
+
+ confirm(excuteJs: string) {
+ this.controllerShow.runJavaScript({ script: excuteJs })
+ }
+
+ build() {
+ Flex({ direction: FlexDirection.Row, wrap: FlexWrap.Wrap, justifyContent: FlexAlign.SpaceBetween }) {
+ Column() {
+ Image($r('app.media.circle_tick'))
+ .width(24)
+ .height(24)
+ .onClick(() => {
+ // 清单
+ this.controllerShow.runJavaScript({ script: "javascript:RICH_EDITOR.setTodo()" })
+ })
+ Text($r("app.string.list"))
+ .fontSize(10).fontColor('#182431')
+ .padding({ top: 5 })
+ }
+ .alignItems(HorizontalAlign.Center)
+
+ Column() {
+ Image($r('app.media.font_style'))
+ .width(24)
+ .height(24)
+ .onClick(() => {
+ this.editContentDialogCtl.open()
+ })
+ Text($r("app.string.style"))
+ .fontSize(10).fontColor('#182431')
+ .padding({ top: 5 })
+ }
+ .alignItems(HorizontalAlign.Center)
+
+ Column() {
+ Image($r('app.media.picture_white'))
+ .width(24)
+ .height(24)
+ .onClick(() => {
+ })
+ Text($r("app.string.photo"))
+ .fontSize(10).fontColor('#182431')
+ .padding({ top: 5 })
+ }
+ .alignItems(HorizontalAlign.Center)
+ }
+ .width(360)
+ .height(56)
+ .visibility(this.selectedNoteData.is_deleted == Delete.No && this.editModel == true ?
+ Visibility.Visible : Visibility.None)
+ }
+}
+
+@Component
+struct NoteDataMoveItemComp {
+ @StorageLink('CheckedNoteArray') CheckedNoteArray: NoteData[] = []
+ @StorageLink('AllFolderArray') AllFolderArray: FolderData[] = []
+ private folderItem: FolderData
+
+ build() {
+ Flex({ alignItems: ItemAlign.Center, wrap: FlexWrap.NoWrap, justifyContent: FlexAlign.Center }) {
+ Flex({ alignItems: ItemAlign.Center, wrap: FlexWrap.NoWrap }) {
+ Image(FolderUtil.getFolderIcon(this.folderItem.uuid))
+ .objectFit(ImageFit.ScaleDown)
+ .width(24)
+ .height(24)
+ .fillColor(FolderUtil.getFolderIconColor(this.AllFolderArray, this.folderItem.uuid, false))
+ }
+ .width(24)
+
+ Column() {
+ Flex({ alignItems: ItemAlign.Center, wrap: FlexWrap.NoWrap, justifyContent: FlexAlign.SpaceBetween }) {
+ Text(FolderUtil.getFolderText(this.folderItem))
+ .fontSize(16)
+ .fontColor(FolderUtil.getFolderIconColor(this.AllFolderArray, this.folderItem.uuid, false))
+ .textAlign(TextAlign.Center)
+ .maxLines(1)
+ .textOverflow({ overflow: TextOverflow.Ellipsis })
+ .flexShrink(1)
+ }
+ .width('100%')
+ .height(55)
+
+ Divider().color($r("app.color.divider_color_e4e4e4")).strokeWidth(1)
+ }
+ .padding({ left: 16 })
+ }
+ .width('100%')
+ .height(56)
+ .visibility(FolderUtil.isFolderMoveIn(this.folderItem) ? Visibility.Visible : Visibility.None)
+ }
+}
diff --git a/common/component/src/main/ets/default/NoteListComp.ets b/common/component/src/main/ets/default/NoteListComp.ets
index 3c7c47d..3524ada 100644
--- a/common/component/src/main/ets/default/NoteListComp.ets
+++ b/common/component/src/main/ets/default/NoteListComp.ets
@@ -16,8 +16,7 @@
import DateUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/DateUtil.ets'
import FolderData from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/FolderData.ets'
import NoteData from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/NoteData.ets'
-import {TableName, NoteTableColumn, SysDefFolderUuid, Favorite, Delete, Top, NoteType
-} from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/EnumData.ets'
+import {TableName, NoteTableColumn, SysDefFolderUuid, Favorite, Delete, Top, NoteType} from '../../../../../../common/utils/src/main/ets/default/model/databaseModel/EnumData.ets'
import {NoteDataMoveDialog, DeleteDialog} from './CusDialogComp.ets'
import RdbStoreUtil from '../../../../../../common/utils/src/main/ets/default/baseUtil/RdbStoreUtil.ets'
import prompt from '@system.prompt'
@@ -41,8 +40,8 @@ export struct NoteListComp {
Stack({ alignContent: Alignment.Bottom }) {
Flex({ direction: FlexDirection.Column }) {
- NoteOverViewComp({controllerShow: this.controllerShow})
- NoteItemListComp({controllerShow: this.controllerShow})
+ NoteOverViewComp({ controllerShow: this.controllerShow })
+ NoteItemListComp({ controllerShow: this.controllerShow })
}
.padding({ top: this.search ? 15 : 0 })
.width('100%')
@@ -53,6 +52,15 @@ export struct NoteListComp {
.height('100%')
.width('100%')
}
+
+ aboutToAppear(): void{
+ LogUtil.info(TAG, "aboutToAppear")
+ }
+
+ aboutToDisappear(): void{
+ LogUtil.info(TAG, "aboutToDisappear")
+ }
+
}
@Component
@@ -93,12 +101,15 @@ struct NoteOverViewComp {
alignItems: ItemAlign.Start
}) {
Text(FolderUtil.getFolderText(this.selectedFolderData))
- .fontSize(30).fontColor('#182431')
+ .fontSize(30)
+ .fontColor('#182431')
Row() {
Text(FolderUtil.getNoteCount(AppStorage.Get('AllNoteArray'), this.selectedFolderData.uuid).toString())
- .fontSize(14).fontColor('#182431')
+ .fontSize(14)
+ .fontColor('#182431')
Text($r("app.string.noteslist"))
- .fontSize(14).fontColor('#182431')
+ .fontSize(14)
+ .fontColor('#182431')
}
.visibility((FolderUtil.getNoteCount(AppStorage.Get('AllNoteArray'), this.selectedFolderData.uuid) == 0) ? Visibility.None : Visibility.Visible)
}.visibility(this.longpress ? Visibility.None : Visibility.Visible)
@@ -113,12 +124,16 @@ struct NoteOverViewComp {
NoteUtil.unsetAllNotesChecked(this.CheckedNoteArray)
})
Text(this.CheckedNoteArray.length == 0 ? $r("app.string.none_selected") : $r("app.string.selected", this.CheckedNoteArray.length))
- .fontSize(20).fontColor('#182431').margin({ left: 16 })
- }.alignItems(VerticalAlign.Center).visibility(this.longpress ? Visibility.Visible : Visibility.None)
- }.padding({ top: 8, bottom: 8 }).height('100%')
+ .fontSize(20)
+ .fontColor('#182431')
+ .margin({ left: 16 })
+ }.alignItems(VerticalAlign.Center)
+ .visibility(this.longpress ? Visibility.Visible : Visibility.None)
+ }.padding({ top: 8, bottom: 8 })
+ .height('100%')
- AddNoteComp({controllerShow: this.controllerShow})
- OperateNoteComp({controllerShow: this.controllerShow})
+ AddNoteComp({ controllerShow: this.controllerShow })
+ OperateNoteComp({ controllerShow: this.controllerShow })
Text(this.refreshFlag.toString()).visibility(Visibility.None)
}
.width('100%').height(82)
@@ -133,7 +148,7 @@ export struct NoteItemComp {
public spans: any[]
controllerShow: WebController
@Consume('SelectedFolderData') selectedFolderData: FolderData
- @Consume('SelectedNoteData') selectedNoteData: NoteData;
+ @Consume('SelectedNoteData') selectedNoteData: NoteData
@StorageLink('AllFolderArray') AllFolderArray: FolderData[] = AppStorage.Link('AllFolderArray')
@StorageLink('CheckedNoteArray') CheckedNoteArray: NoteData[] = []
@Consume('Longpress') longpress: boolean
@@ -141,6 +156,7 @@ export struct NoteItemComp {
@Consume('RefreshFlag') refreshFlag: number
@Consume('Search') search: boolean
@Consume('selectedAll') selectedAll: boolean
+ @Consume('PortraitModel') portraitModel:boolean
build() {
Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) {
@@ -149,11 +165,12 @@ export struct NoteItemComp {
Column({ space: 2 }) {
Row({ space: 8 }) {
Image($r("app.media.verticalBar"))
- .height(16).width(4)
+ .height(16)
+ .width(4)
.fillColor(NoteUtil.getVerticalBarBgColor(AppStorage.Get('AllFolderArray'), this.noteItem.folder_uuid))
Text() {
ForEach(this.spans.map((item1, index1) => {
- return { index: index1, data: item1 };
+ return { index: index1, data: item1 }
}), item => {
if (item.data.type == 0) {
@@ -170,9 +187,13 @@ export struct NoteItemComp {
Text(DateUtil.formateDateForNoteTitle(new Date(this.noteItem.modified_time)))
.fontSize(14)
.fontColor('#182431')
- Image($r("app.media.favorite")).height(16).width(16)
+ Image($r("app.media.favorite"))
+ .height(16)
+ .width(16)
.visibility(this.noteItem.is_favorite == Favorite.Yes ? Visibility.Visible : Visibility.None)
- Image($r("app.media.topped")).height(16).width(16)
+ Image($r("app.media.topped"))
+ .height(16)
+ .width(16)
.visibility(this.noteItem.is_top == Top.Yes ? Visibility.Visible : Visibility.None)
}
.padding({ left: 12 })
@@ -186,11 +207,18 @@ export struct NoteItemComp {
.borderRadius(12)
.border({ width: 0.5, color: '#19182431' })
Stack({ alignContent: Alignment.Center }) {
- Image($r("app.media.unChecked")).height(24).width(24)
- Image($r("app.media.checked")).width(24).height(24)
+ Image($r("app.media.unChecked"))
+ .height(24)
+ .width(24)
+ Image($r("app.media.checked"))
+ .width(24)
+ .height(24)
.visibility(NoteUtil.isNoteChecked(this.CheckedNoteArray, this.noteItem) ? Visibility.Visible : Visibility.None)
- }.width(24).height(24).visibility(this.longpress ? Visibility.Visible : Visibility.None)
- }.height(48).width(this.longpress ? 80 : 48)
+ }.width(24)
+ .height(24)
+ .visibility(this.longpress ? Visibility.Visible : Visibility.None)
+ }.height(48)
+ .width(this.longpress ? 80 : 48)
}
.width('100%')
.height(72)
@@ -216,15 +244,14 @@ export struct NoteItemComp {
} else {
this.selectedNoteData = this.noteItem
this.chooseNote = true
- // 迁移
- console.log("NoteItemComp, set continue note")
+ // save continue data
let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
- console.log("NoteItemComp, continueNote : " + continueNote)
AppStorage.SetOrCreate('ContinueNote', continueNote)
console.log("NoteItemComp, set continue note success")
}
- this.controllerShow.runJavaScript({script:"RE.setHtml('" + this.selectedNoteData.content_text + "')"})
- this.controllerShow.runJavaScript({script:"RE.updateRichTextState()"})
+ if(this.portraitModel == false) {
+ this.controllerShow.runJavaScript({script:"RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')" })
+ }
this.selectedAll = this.CheckedNoteArray.length ==
NoteUtil.getNoteDataArray(AppStorage.Get('AllNoteArray'), this.selectedFolderData.uuid).length
this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
@@ -254,7 +281,7 @@ export struct NoteItemListComp {
@Consume('Search') search: boolean
@Consume @Watch('doSearch') inputKeyword: string
@Consume('SearchResultList') searchResultList: NoteData[]
- @Consume('SelectedNoteData') selectedNoteData: NoteData;
+ @Consume('SelectedNoteData') selectedNoteData: NoteData
controllerShow: WebController
doSearch() {
@@ -267,10 +294,8 @@ export struct NoteItemListComp {
} else {
this.selectedNoteData = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), this.selectedFolderData.uuid)
}
- // 迁移
- console.log("doSearch, set continue note")
+ // save continue data
let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
- console.log("doSearch, continueNote : " + continueNote)
AppStorage.SetOrCreate('ContinueNote', continueNote)
console.log("doSearch, set continue note success")
this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
@@ -286,7 +311,9 @@ export struct NoteItemListComp {
.visibility((FolderUtil.getNoteCount(AppStorage.Get('AllNoteArray'), this.selectedFolderData.uuid) == 0) ? Visibility.None : Visibility.Visible)
Flex({ justifyContent: FlexAlign.Center }) {
- Text($r("app.string.permanently_delete_tips")).fontSize(12).fontColor('#18181A')
+ Text($r("app.string.permanently_delete_tips"))
+ .fontSize(12)
+ .fontColor('#18181A')
}
.margin({ bottom: this.selectedFolderData.uuid == SysDefFolderUuid.RecentDeletes ? 12 : 0 })
.width('100%')
@@ -296,11 +323,17 @@ export struct NoteItemListComp {
List({ initialIndex: 0 }) {
ListItem() {
Column({ space: 8 }) {
- Image($r('app.media.emptyPage')).width(120).height(120)
- Text($r("app.string.Empty_page")).fontSize(12).fontColor('#A3A7AD')
+ Image($r('app.media.emptyPage'))
+ .width(120)
+ .height(120)
+ Text($r("app.string.Empty_page"))
+ .fontSize(12)
+ .fontColor('#A3A7AD')
}
}
- .width('100%').height('100%').padding({ bottom: 120 })
+ .width('100%')
+ .height('100%')
+ .padding({ bottom: 120 })
.visibility((FolderUtil.getNoteCount(AppStorage.Get('AllNoteArray'), this.selectedFolderData.uuid) == 0) ? Visibility.Visible : Visibility.None)
ForEach(this.inputKeyword.length == 0 ?
@@ -321,7 +354,7 @@ export struct NoteItemListComp {
.height('100%')
}
.height('80%')
- .padding({bottom: 1 })
+ .padding({ bottom: 1 })
.onClick(() => {
this.search = false
})
@@ -335,7 +368,7 @@ export struct OperateNoteComp {
@StorageLink('AllNoteArray') AllNoteArray: NoteData[] = AppStorage.Link('AllNoteArray')
@Consume('SelectedFolderData') selectedFolderData: FolderData
@Consume('RefreshFlag') refreshFlag: number
- @Consume('SelectedNoteData') selectedNoteData: NoteData;
+ @Consume('SelectedNoteData') selectedNoteData: NoteData
@Consume('PortraitModel') portraitModel: boolean
@Consume('selectedAll') selectedAll: boolean
controllerShow: WebController
@@ -388,11 +421,11 @@ export struct OperateNoteComp {
this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
this.longpress = false
this.selectedNoteData = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), this.selectedFolderData.uuid)
- this.controllerShow.runJavaScript({script:"RE.setHtml('" + this.selectedNoteData.content_text + "')"})
- // 迁移
- console.log("OperateNoteComp, set continue note")
+ if(this.portraitModel == false) {
+ this.controllerShow.runJavaScript({script:"RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')" })
+ }
+ // save continue data
let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
- console.log("OperateNoteComp, continueNote : " + continueNote)
AppStorage.SetOrCreate('ContinueNote', continueNote)
console.log("OperateNoteComp, set continue note success")
}
@@ -447,7 +480,7 @@ export struct OperateNoteComp {
this.CheckedNoteArray.forEach((noteItem) => {
noteItem.is_deleted = Delete.No
noteItem.deleted_time = 0
- prompt.showToast({ message: "已恢复", duration: 2000 })
+ prompt.showToast({ message: $r('app.string.restore'), duration: 2000 })
// update note to db
let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
predicates_note.equalTo(NoteTableColumn.Uuid, noteItem.uuid)
@@ -481,17 +514,21 @@ export struct AddNoteComp {
@StorageLink('AllNoteArray') AllNoteArray: NoteData[] = AppStorage.Link('AllNoteArray')
@Consume('Longpress') longpress: boolean
@Consume('SelectedFolderData') selectedFolderData: FolderData
- @Consume('SelectedNoteData') selectedNoteData: NoteData;
+ @Consume('SelectedNoteData') selectedNoteData: NoteData
@Consume('SectionStatus') sectionStatus: number
@Consume('LastSectionStatus') lastSectionStatus: number
- @Consume('EditModel') editModel:boolean
+ @Consume('EditModel') editModel: boolean
+ @Consume('ChooseNote') chooseNote: boolean
+ @Consume('PortraitModel') portraitModel: boolean
controllerShow: WebController
build() {
Image($r('app.media.addNote'))
- .width(24).height(24).margin({ right: 12 })
+ .width(24)
+ .height(24)
+ .margin({ right: 12 })
.onClick(() => {
- let noteData = new NoteData(0,"标题",new Date().getTime() + "",SysDefFolderUuid.UnClassified,"","",NoteType.SysDef,Top.No,Favorite.No,Delete.No,new Date().getTime(),new Date().getTime(),0)
+ let noteData = new NoteData(0, "标题", new Date().getTime() + "", this.selectedFolderData.uuid, "", "", NoteType.SysDef, Top.No, Favorite.No, Delete.No, new Date().getTime(), new Date().getTime(), 0)
this.AllNoteArray.push(noteData)
RdbStoreUtil.insert(TableName.NoteTable, noteData.toNoteObject(), null)
@@ -501,12 +538,20 @@ export struct AddNoteComp {
if (this.sectionStatus != 1) {
this.lastSectionStatus = this.sectionStatus
this.sectionStatus = 1
- this.controllerShow.runJavaScript({script:"RE.setInputEnabled(true)"})
+ this.controllerShow.runJavaScript({ script: "RICH_EDITOR.setInputEnabled(true)" })
} else {
this.sectionStatus = this.lastSectionStatus
}
- this.controllerShow.runJavaScript({script:"RE.setHtml('" + this.selectedNoteData.content_text + "')"})
+ if(this.portraitModel == false) {
+ this.controllerShow.runJavaScript({script:"RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')" })
+ }
this.editModel = true
+ this.chooseNote = true
+ // save continue data
+ let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
+ AppStorage.SetOrCreate('ContinueNote', continueNote)
+ AppStorage.SetOrCreate('ContinueSection', this.sectionStatus)
+ console.log("addNote, set continue note and section success")
})
.visibility(this.longpress || this.selectedFolderData.uuid == SysDefFolderUuid.RecentDeletes ? Visibility.None : Visibility.Visible)
}
@@ -556,7 +601,7 @@ export struct OperateNoteCompForPortrait {
@StorageLink('AllNoteArray') AllNoteArray: NoteData[] = AppStorage.Link('AllNoteArray')
@Consume('SelectedFolderData') selectedFolderData: FolderData
@Consume('RefreshFlag') refreshFlag: number
- @Consume('SelectedNoteData') selectedNoteData: NoteData;
+ @Consume('SelectedNoteData') selectedNoteData: NoteData
@Consume('PortraitModel') portraitModel: boolean
noteDataMoveDialogCtlBottom: CustomDialogController = new CustomDialogController({
builder: NoteDataMoveDialog({ onConfirm: this.onMoveConfirm.bind(this) }),
@@ -607,10 +652,8 @@ export struct OperateNoteCompForPortrait {
this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
this.longpress = false
this.selectedNoteData = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), this.selectedFolderData.uuid)
- // 迁移
- console.log("OperateNoteCompForPortrait, set continue note")
+ // save continue data
let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject())
- console.log("OperateNoteCompForPortrait, continueNote : " + continueNote)
AppStorage.SetOrCreate('ContinueNote', continueNote)
console.log("OperateNoteCompForPortrait, set continue note success")
}
@@ -634,7 +677,8 @@ export struct OperateNoteCompForPortrait {
NoteUtil.unsetAllNotesChecked(this.CheckedNoteArray)
})
Text($r("app.string.set_top"))
- .fontSize(10).fontColor('#182431')
+ .fontSize(10)
+ .fontColor('#182431')
.padding({ top: 5 })
}
.opacity(this.CheckedNoteArray.length == 0 ? 0.4 : 1)
@@ -650,7 +694,8 @@ export struct OperateNoteCompForPortrait {
this.noteDataDeleteDialogCtlBottom.open()
})
Text($r("app.string.delete"))
- .fontSize(10).fontColor('#182431')
+ .fontSize(10)
+ .fontColor('#182431')
.padding({ top: 5 })
}
.opacity(this.CheckedNoteArray.length == 0 ? 0.4 : 1)
@@ -666,7 +711,8 @@ export struct OperateNoteCompForPortrait {
this.noteDataMoveDialogCtlBottom.open()
})
Text($r("app.string.move"))
- .fontSize(10).fontColor('#182431')
+ .fontSize(10)
+ .fontColor('#182431')
.padding({ top: 5 })
}
.opacity(this.CheckedNoteArray.length == 0 ? 0.4 : 1)
@@ -684,7 +730,7 @@ export struct OperateNoteCompForPortrait {
this.CheckedNoteArray.forEach((noteItem) => {
noteItem.is_deleted = Delete.No
noteItem.deleted_time = 0
- prompt.showToast({ message: "已恢复", duration: 2000 })
+ prompt.showToast({ message: $r('app.string.restore'), duration: 2000 })
// update note to db
let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
predicates_note.equalTo(NoteTableColumn.Uuid, noteItem.uuid)
@@ -695,7 +741,8 @@ export struct OperateNoteCompForPortrait {
this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
})
Text($r("app.string.recover"))
- .fontSize(10).fontColor('#182431')
+ .fontSize(10)
+ .fontColor('#182431')
.padding({ top: 5 })
}
.opacity(this.CheckedNoteArray.length == 0 ? 0.4 : 1)
@@ -718,7 +765,8 @@ export struct OperateNoteCompForPortrait {
this.refreshFlag = (this.refreshFlag == 0 ? 1 : 0)
})
Text($r("app.string.check_all"))
- .fontSize(10).fontColor('#182431')
+ .fontSize(10)
+ .fontColor('#182431')
.padding({ top: 5 })
}
.alignItems(HorizontalAlign.Center)
diff --git a/common/utils/src/main/ets/default/baseUtil/DateUtil.ets b/common/utils/src/main/ets/default/baseUtil/DateUtil.ets
index dbf6592..ddc6068 100644
--- a/common/utils/src/main/ets/default/baseUtil/DateUtil.ets
+++ b/common/utils/src/main/ets/default/baseUtil/DateUtil.ets
@@ -15,6 +15,7 @@
import LogUtil from './LogUtil.ets'
import GlobalResourceManager from './GlobalResourceManager.ets'
+
const TAG = "DateUtil"
/**
@@ -119,4 +120,5 @@ export class DateUtil {
}
let dateUtil = new DateUtil()
+
export default dateUtil as DateUtil
\ No newline at end of file
diff --git a/common/utils/src/main/ets/default/baseUtil/FakerRdbStoreUtil.ets b/common/utils/src/main/ets/default/baseUtil/FakerRdbStoreUtil.ets
index 966f76d..d385d96 100644
--- a/common/utils/src/main/ets/default/baseUtil/FakerRdbStoreUtil.ets
+++ b/common/utils/src/main/ets/default/baseUtil/FakerRdbStoreUtil.ets
@@ -33,7 +33,7 @@ function FakerInitFolderArray(folderdataList: any[]) {
})
}
-function FakerInitNote(noteData: any) :NoteData{
+function FakerInitNote(noteData: any): NoteData {
return new NoteData(0, noteData.title, noteData.uuid, noteData.folder_uuid, noteData.content_text, noteData.content_img,
noteData.note_type, 0, 0, 0, noteData.created_time, noteData.modified_time, noteData.deleted_time)
}
@@ -46,9 +46,9 @@ function FakerInitNoteArray(noteDataList: any[]) {
export default {
FakerInitAppStorage() {
- FakerInitFolderArray([SysDefData.sys_def_allNotes, SysDefData.sys_def_unClassified, SysDefData.sys_def_life,SysDefData.sys_def_recentDeletes, SysDefData.sys_def_myFavorites,
+ FakerInitFolderArray([SysDefData.sys_def_allNotes, SysDefData.sys_def_unClassified, SysDefData.sys_def_life, SysDefData.sys_def_recentDeletes, SysDefData.sys_def_myFavorites,
SysDefData.sys_def_personal, SysDefData.sys_def_work])
- FakerInitNoteArray([SysDefData.sys_def_note1,SysDefData.sys_def_note2, SysDefData.sys_def_note3, SysDefData.sys_def_note4])
+ FakerInitNoteArray([SysDefData.sys_def_note1, SysDefData.sys_def_note2, SysDefData.sys_def_note3, SysDefData.sys_def_note4])
AppStorage.SetOrCreate('AllNoteArray', noteDataArray)
AppStorage.SetOrCreate('AllFolderArray', folderDataArray)
for (let folderData of folderDataArray) {
@@ -59,5 +59,4 @@ export default {
}
AppStorage.SetOrCreate('DBQueryFinished', 1)
}
-
}
\ No newline at end of file
diff --git a/common/utils/src/main/ets/default/baseUtil/FolderUtil.ets b/common/utils/src/main/ets/default/baseUtil/FolderUtil.ets
index 966fd3c..e875018 100644
--- a/common/utils/src/main/ets/default/baseUtil/FolderUtil.ets
+++ b/common/utils/src/main/ets/default/baseUtil/FolderUtil.ets
@@ -21,6 +21,7 @@ import StyleConstants from '../constants/StyleConstants.ets'
import LogUtil from './LogUtil.ets'
const TAG = "FolderUtil"
+
export class FolderUtil {
/**
* Get Folder Data
@@ -31,7 +32,7 @@ export class FolderUtil {
*/
getFolderData(folderDataArray: FolderData[], folderUuid: string): FolderData {
LogUtil.info(TAG, "get folder uuid " + folderUuid)
- let folderData = folderDataArray.find((folder) => {
+ let folderData = folderDataArray.find((folder) => {
return folder.uuid == folderUuid
})
if (folderData == undefined) {
@@ -92,7 +93,7 @@ export class FolderUtil {
* @param folderData - Folder
* @return boolean - fottom fixed folder: deleted or favorite return true. else return false
*/
- isBottomFixedFolder(folderData: FolderData) : boolean {
+ isBottomFixedFolder(folderData: FolderData): boolean {
LogUtil.info(TAG, "folderDataUuid " + folderData.uuid)
return (folderData.folder_type == FolderType.FeatureDef)
}
@@ -103,7 +104,7 @@ export class FolderUtil {
* @param folderDataUuid - Folder uuid
* @return boolean - can be moved into notes return true. else return false
*/
- isFolderMoveIn(folderData: FolderData) : boolean {
+ isFolderMoveIn(folderData: FolderData): boolean {
LogUtil.info(TAG, "folderDataUuid " + folderData.uuid)
return (folderData.uuid == SysDefFolderUuid.UnClassified || folderData.folder_type == FolderType.CusDef)
}
@@ -129,10 +130,18 @@ export class FolderUtil {
getNoteCount(noteDataArray: NoteData[], folderUuid: string): number {
let count = 0;
const folderTextMap = {
- "sys_def_allNotes_uuid": (noteData) => {noteData.is_deleted == Delete.No ? ++count : count},
- "sys_def_recentDeletes_uuid": (noteData) => {noteData.is_deleted == Delete.Yes ? ++count : count},
- "sys_def_myFavorites_uuid": (noteData) => {noteData.is_favorite == Favorite.Yes && noteData.is_deleted == Delete.No ? ++count : count},
- "sys_def_other_uuid": (noteData) => {noteData.folder_uuid == folderUuid && noteData.is_deleted == Delete.No ? ++count : count},
+ "sys_def_allNotes_uuid": (noteData) => {
+ noteData.is_deleted == Delete.No ? ++count : count
+ },
+ "sys_def_recentDeletes_uuid": (noteData) => {
+ noteData.is_deleted == Delete.Yes ? ++count : count
+ },
+ "sys_def_myFavorites_uuid": (noteData) => {
+ noteData.is_favorite == Favorite.Yes && noteData.is_deleted == Delete.No ? ++count : count
+ },
+ "sys_def_other_uuid": (noteData) => {
+ noteData.folder_uuid == folderUuid && noteData.is_deleted == Delete.No ? ++count : count
+ },
}
if (folderUuid == SysDefFolderUuid.AllNotes || folderUuid == SysDefFolderUuid.RecentDeletes || folderUuid == SysDefFolderUuid.MyFavorites) {
noteDataArray.forEach(folderTextMap[folderUuid])
@@ -172,22 +181,22 @@ export class FolderUtil {
* @return Promise - if input name exist, return true, else return false
*/
async duplicateDetection(inputStr: string, folderDataArray: FolderData[]): Promise {
- for (let index = 0; index < folderDataArray.length; index++) {
- if (folderDataArray[index].folder_type == FolderType.CusDef && folderDataArray[index].name == inputStr) {
- return true
- } else {
- let temp = GlobalResourceManager.getStringByResource(this.getFolderText(folderDataArray[index]))
- temp.then(result => {
- if (result == inputStr) {
- return true
- }
- })
+ for (let index = 0; index < folderDataArray.length; index++) {
+ if (folderDataArray[index].folder_type == FolderType.CusDef && folderDataArray[index].name == inputStr) {
+ return true
+ } else {
+ let temp = GlobalResourceManager.getStringByResource(this.getFolderText(folderDataArray[index]))
+ temp.then(result => {
+ if (result == inputStr) {
+ return true
+ }
+ })
+ }
}
+ return false
}
- return false
-}
-
}
let folderUtil = new FolderUtil()
+
export default folderUtil as FolderUtil
\ No newline at end of file
diff --git a/common/utils/src/main/ets/default/baseUtil/GlobalResourceManager.ets b/common/utils/src/main/ets/default/baseUtil/GlobalResourceManager.ets
index 975a546..6f4f1fc 100644
--- a/common/utils/src/main/ets/default/baseUtil/GlobalResourceManager.ets
+++ b/common/utils/src/main/ets/default/baseUtil/GlobalResourceManager.ets
@@ -13,11 +13,11 @@
* limitations under the License.
*/
import Rsm from '@ohos.resourceManager';
+
const TAG = "Note_GlobalResourceManager"
export class GlobalResourceManager {
-
- public async getStringByResource(res: any): Promise{
+ public async getStringByResource(res: any): Promise {
let json = JSON.parse(JSON.stringify(res));
let id = json.id;
console.info(TAG, "ResourceID = %d", id)
@@ -27,17 +27,17 @@ export class GlobalResourceManager {
public getStringById(id: number): Promise{
let promise = new Promise(resolve => {
let resourceMgr = Rsm.getResourceManager("com.example.note");
- resourceMgr.then((result) => {
- result.getString(id)
+ resourceMgr.then((result) => {
+ result.getString(id)
.then((resource) => {
resolve(resource);
console.info('getStringById resolve(resource) : ' + resolve(resource));
console.info('getStringById resource : ' + resource);
console.info('getStringById resource2 : ' + JSON.stringify(resource));
- })
+ })
.catch((err) => {
console.info('getStringById err : ' + JSON.stringify(err));
- });
+ });
});
});
console.info('getStringById promise: ' + JSON.stringify(promise));
@@ -46,5 +46,6 @@ export class GlobalResourceManager {
}
let mGlobalResourceManager = new GlobalResourceManager();
+
export default mGlobalResourceManager as GlobalResourceManager
;
diff --git a/common/utils/src/main/ets/default/baseUtil/LayoutUtil.ets b/common/utils/src/main/ets/default/baseUtil/LayoutUtil.ets
index abfa931..d0c3c43 100644
--- a/common/utils/src/main/ets/default/baseUtil/LayoutUtil.ets
+++ b/common/utils/src/main/ets/default/baseUtil/LayoutUtil.ets
@@ -39,4 +39,5 @@ export class LayoutUtil {
}
let layoutUtil = new LayoutUtil()
+
export default layoutUtil as LayoutUtil
\ No newline at end of file
diff --git a/common/utils/src/main/ets/default/baseUtil/LogUtil.ets b/common/utils/src/main/ets/default/baseUtil/LogUtil.ets
index a143e3f..bded946 100644
--- a/common/utils/src/main/ets/default/baseUtil/LogUtil.ets
+++ b/common/utils/src/main/ets/default/baseUtil/LogUtil.ets
@@ -69,4 +69,5 @@ export class LogUtil {
}
let mLogUtil = new LogUtil();
+
export default mLogUtil as LogUtil
\ No newline at end of file
diff --git a/common/utils/src/main/ets/default/baseUtil/NoteUtil.ets b/common/utils/src/main/ets/default/baseUtil/NoteUtil.ets
index 81fd00a..942224e 100644
--- a/common/utils/src/main/ets/default/baseUtil/NoteUtil.ets
+++ b/common/utils/src/main/ets/default/baseUtil/NoteUtil.ets
@@ -15,12 +15,13 @@
import {WidthWeightMessage, unSelectedNoteBgColorMap, selectedNoteBgColorMap, folderTextMap, widthWeightMessageMap} from '../model/NoteBaseData.ets'
import FolderData from '../model/databaseModel/FolderData.ets'
import NoteData from '../model/databaseModel/NoteData.ets'
-import {SysDefFolderUuid, FolderType, Favorite, Delete,TableName, NoteTableColumn,} from '../model/databaseModel/EnumData.ets'
+import {SysDefFolderUuid, FolderType, Favorite, Delete, TableName, NoteTableColumn,} from '../model/databaseModel/EnumData.ets'
import GlobalResourceManager from './GlobalResourceManager.ets'
import StyleConstants from '../constants/StyleConstants.ets'
import LogUtil from './LogUtil.ets'
import FolderUtil from './FolderUtil.ets'
import RdbStoreUtil from './RdbStoreUtil.ets'
+import prompt from '@system.prompt'
const TAG = "NoteUtil"
@@ -58,7 +59,7 @@ export class NoteUtil {
* @return boolean - Checked: true, unchecked: false
*/
isNoteChecked(checkedNoteArray: NoteData[], noteItem: NoteData): boolean {
- for(let i = 0; i < checkedNoteArray.length; i++) {
+ for (let i = 0; i < checkedNoteArray.length; i++) {
LogUtil.info(TAG, "index " + checkedNoteArray[i].uuid + " noteItem uuid: " + noteItem.uuid)
}
let index = checkedNoteArray.findIndex((note) => {
@@ -100,10 +101,18 @@ export class NoteUtil {
getNoteCount(noteDataArray: NoteData[], folderData: FolderData): number {
let count = 0;
const folderTextMap = {
- "sys_def_allNotes_uuid": (noteData) => {noteData.is_deleted == Delete.No ? ++count : count},
- "sys_def_recentDeletes_uuid": (noteData) => {noteData.is_deleted == Delete.Yes ? ++count : count},
- "sys_def_myFavorites_uuid": (noteData) => {noteData.is_favorite == Favorite.Yes && noteData.is_deleted == Delete.No ? ++count : count},
- "sys_def_other_uuid": (noteData) => {noteData.folder_uuid == folderData.uuid && noteData.is_deleted == Delete.No ? ++count : count}
+ "sys_def_allNotes_uuid": (noteData) => {
+ noteData.is_deleted == Delete.No ? ++count : count
+ },
+ "sys_def_recentDeletes_uuid": (noteData) => {
+ noteData.is_deleted == Delete.Yes ? ++count : count
+ },
+ "sys_def_myFavorites_uuid": (noteData) => {
+ noteData.is_favorite == Favorite.Yes && noteData.is_deleted == Delete.No ? ++count : count
+ },
+ "sys_def_other_uuid": (noteData) => {
+ noteData.folder_uuid == folderData.uuid && noteData.is_deleted == Delete.No ? ++count : count
+ }
}
if (folderData.uuid == SysDefFolderUuid.AllNotes || folderData.folder_type == FolderType.FeatureDef) {
noteDataArray.forEach(folderTextMap[folderData.uuid])
@@ -159,7 +168,7 @@ export class NoteUtil {
* @param allNoteDataArray
*/
autoDeleteNote(allNoteDataArray: NoteData[]) {
- for (let index = 0; index < allNoteDataArray.length;) {
+ for (let index = 0; index < allNoteDataArray.length; ) {
if (allNoteDataArray[index].is_deleted == Delete.Yes && new Date().getTime() - allNoteDataArray[index].deleted_time > StyleConstants.DELETE_DEADLINE) {
LogUtil.info(TAG, "Delete Note, uuid " + allNoteDataArray[index].uuid + " delete time " + allNoteDataArray[index].deleted_time)
allNoteDataArray.splice(index, 1);
@@ -181,10 +190,18 @@ export class NoteUtil {
let noteDataArray: NoteData[] = [];
let func = (noteData) => noteDataArray.push(noteData)
const folderTextMap = {
- "sys_def_allNotes_uuid": (noteData) => {noteData.is_deleted == Delete.No ? func(noteData) : null},
- "sys_def_recentDeletes_uuid": (noteData) => {noteData.is_deleted == Delete.Yes ? func(noteData) : null},
- "sys_def_myFavorites_uuid": (noteData) => {noteData.is_favorite == Favorite.Yes && noteData.is_deleted == Delete.No ? func(noteData) : null},
- "sys_def_other_uuid": (noteData) => {noteData.folder_uuid == folderUuid && noteData.is_deleted == Delete.No ? func(noteData) : null},
+ "sys_def_allNotes_uuid": (noteData) => {
+ noteData.is_deleted == Delete.No ? func(noteData) : null
+ },
+ "sys_def_recentDeletes_uuid": (noteData) => {
+ noteData.is_deleted == Delete.Yes ? func(noteData) : null
+ },
+ "sys_def_myFavorites_uuid": (noteData) => {
+ noteData.is_favorite == Favorite.Yes && noteData.is_deleted == Delete.No ? func(noteData) : null
+ },
+ "sys_def_other_uuid": (noteData) => {
+ noteData.folder_uuid == folderUuid && noteData.is_deleted == Delete.No ? func(noteData) : null
+ },
}
if (folderUuid == SysDefFolderUuid.AllNotes || folderUuid == SysDefFolderUuid.RecentDeletes || folderUuid == SysDefFolderUuid.MyFavorites) {
allNoteDataArray.forEach(folderTextMap[folderUuid])
@@ -192,7 +209,7 @@ export class NoteUtil {
allNoteDataArray.forEach(folderTextMap["sys_def_other_uuid"])
}
// Sort priority: 1、Top or not 2、created time
- noteDataArray.sort((noteItemLeft: NoteData, noteItemRight: NoteData) => {
+ noteDataArray.sort((noteItemLeft: NoteData, noteItemRight: NoteData) => {
if (noteItemRight.is_top != noteItemLeft.is_top) {
return noteItemRight.is_top - noteItemLeft.is_top
}
@@ -229,22 +246,23 @@ export class NoteUtil {
index == -1 ? null : allNoteDataArray.splice(index, 1)
}
- deleteEmptyNote(selectedNoteData: NoteData, AllNoteArray: NoteData[],controllerShow: WebController) {
+ deleteEmptyNote(selectedNoteData: NoteData, AllNoteArray: NoteData[],controllerShow: WebController):boolean {
LogUtil.info(TAG, selectedNoteData.content_text)
if (selectedNoteData.title == "标题" && selectedNoteData.content_text == "") {
- // delete note from db
- noteUtil.removeNoteData(AllNoteArray,selectedNoteData.uuid)
- LogUtil.info(TAG, "delete note:" + selectedNoteData.content_text)
- LogUtil.info(TAG, "delete note:" + selectedNoteData.uuid)
- let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
- predicates_note.equalTo(NoteTableColumn.Uuid, selectedNoteData.uuid)
- RdbStoreUtil.delete(predicates_note, null)
- LogUtil.info(TAG, "delete note success:" + selectedNoteData.uuid)
- selectedNoteData = AllNoteArray[0]
- controllerShow.runJavaScript({script:"RE.setHtml('" + selectedNoteData.content_text + "')"})
+ // delete note from db
+ noteUtil.removeNoteData(AllNoteArray,selectedNoteData.uuid)
+ LogUtil.info(TAG, "delete note:" + selectedNoteData.content_text)
+ LogUtil.info(TAG, "delete note:" + selectedNoteData.uuid)
+ let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable)
+ predicates_note.equalTo(NoteTableColumn.Uuid, selectedNoteData.uuid)
+ RdbStoreUtil.delete(predicates_note, null)
+ LogUtil.info(TAG, "delete note success:" + selectedNoteData.uuid)
+ return true
}
+ return false
}
}
let noteUtil = new NoteUtil()
+
export default noteUtil as NoteUtil
\ No newline at end of file
diff --git a/common/utils/src/main/ets/default/baseUtil/RdbStoreUtil.ets b/common/utils/src/main/ets/default/baseUtil/RdbStoreUtil.ets
index 9722fb6..f3d1bbd 100644
--- a/common/utils/src/main/ets/default/baseUtil/RdbStoreUtil.ets
+++ b/common/utils/src/main/ets/default/baseUtil/RdbStoreUtil.ets
@@ -15,10 +15,11 @@
import ohosDataRdb from '@ohos.data.rdb'
import LogUtil from './LogUtil.ets'
+import FolderUtil from './FolderUtil.ets'
import SysDefData from '../model/databaseModel/SysDefData.ets'
import FolderData from '../model/databaseModel/FolderData.ets'
import NoteData from '../model/databaseModel/NoteData.ets'
-import {TableSql, TableName, FolderTableColumn, NoteTableColumn} from '../model/databaseModel/EnumData.ets'
+import {TableSql, TableName, FolderTableColumn, NoteTableColumn, SysDefFolderUuid} from '../model/databaseModel/EnumData.ets'
const TAG = "RdbStoreUtil"
@@ -44,28 +45,19 @@ export default {
LogUtil.info(TAG, "create table success")
// insert system defined folder
await rdbStore.insert(TableName.FolderTable, SysDefData.sys_def_allNotes)
- LogUtil.info(TAG, "insert sys_def_allNotes success")
await rdbStore.insert(TableName.FolderTable, SysDefData.sys_def_unClassified)
- LogUtil.info(TAG, "insert sys_def_unClassified success")
await rdbStore.insert(TableName.FolderTable, SysDefData.sys_def_myFavorites)
- LogUtil.info(TAG, "insert sys_def_myFavorites success")
await rdbStore.insert(TableName.FolderTable, SysDefData.sys_def_recentDeletes)
- LogUtil.info(TAG, "insert sys_def_recentDeletes success")
await rdbStore.insert(TableName.FolderTable, SysDefData.sys_def_personal)
- LogUtil.info(TAG, "insert sys_def_personal success")
await rdbStore.insert(TableName.FolderTable, SysDefData.sys_def_life)
- LogUtil.info(TAG, "insert sys_def_life success")
await rdbStore.insert(TableName.FolderTable, SysDefData.sys_def_work)
- LogUtil.info(TAG, "insert sys_def_work success")
+ LogUtil.info(TAG, "insert system defined folder success")
// insert system defined note and attachment
await rdbStore.insert(TableName.NoteTable, SysDefData.sys_def_note1)
- LogUtil.info(TAG, "insert sys_def_note1 success")
await rdbStore.insert(TableName.NoteTable, SysDefData.sys_def_note2)
- LogUtil.info(TAG, "insert sys_def_note2 success")
await rdbStore.insert(TableName.NoteTable, SysDefData.sys_def_note3)
- LogUtil.info(TAG, "insert sys_def_note3 success")
await rdbStore.insert(TableName.NoteTable, SysDefData.sys_def_note4)
- LogUtil.info(TAG, "insert sys_def_note4 success")
+ LogUtil.info(TAG, "insert system defined note and attachment success")
// add sys-def folder and note to AppStorage
let folderDataArray = []
@@ -78,6 +70,8 @@ export default {
sysDefFolder.modified_time)
folderDataArray.push(folderData)
})
+ LogUtil.info(TAG, "folderDataArray[sysdef] : " + folderDataArray.length)
+
let noteDataArray = []
let sysDefNoteArray = [SysDefData.sys_def_note1, SysDefData.sys_def_note2,
SysDefData.sys_def_note3, SysDefData.sys_def_note4]
@@ -87,28 +81,20 @@ export default {
sysDefNote.is_deleted, sysDefNote.created_time, sysDefNote.modified_time, sysDefNote.deleted_time)
noteDataArray.push(noteData)
})
- LogUtil.info(TAG, "folderDataArray[sysdef] : " + folderDataArray.length)
- for (let folderData of folderDataArray) {
- LogUtil.info(TAG, "folderData[sysdef] : " + JSON.stringify(folderData))
- }
LogUtil.info(TAG, "noteDataArray[sysdef] : " + noteDataArray.length)
- for (let noteData of noteDataArray) {
- LogUtil.info(TAG, "noteData[sysdef] : " + JSON.stringify(noteData))
- }
+
AppStorage.SetOrCreate('AllFolderArray', folderDataArray)
AppStorage.SetOrCreate('AllNoteArray', noteDataArray)
+ LogUtil.info(TAG, "AppStorage[sysdef] set AllFolderArray and AllNoteArray success")
- // 迁移
+ // save continue data
let isContinue = AppStorage.Get('IsContinue');
LogUtil.info(TAG, "createRdbStore, isContinue is " + isContinue)
if (isContinue != undefined && isContinue == 1) {
console.info("RdbStoreUtil createRdbStore, IsContinue true")
let continueFolder: string = AppStorage.Get('ContinueFolder')
- console.log("RdbStoreUtil createRdbStore, continueFolder is " + continueFolder)
let continueNote: string = AppStorage.Get('ContinueNote')
- console.log("RdbStoreUtil createRdbStore, continueNote is " + continueNote)
let continueSection = AppStorage.Get('ContinueSection')
- console.log("RdbStoreUtil createRdbStore, continueSection is " + continueSection)
let folderObj = JSON.parse(continueFolder)
let folderData = new FolderData(folderObj.uuid, folderObj.name, folderObj.uuid, folderObj.color,
@@ -119,7 +105,27 @@ export default {
noteObj.content_text, noteObj.content_img, noteObj.note_type, noteObj.is_top, noteObj.is_favorite,
noteObj.is_deleted, noteObj.created_time, noteObj.modified_time, noteObj.deleted_time)
- AppStorage.SetOrCreate('Folder', folderData)
+ // if not exit this note
+ let exist = false
+ let folderUuid = ""
+ for (let note of noteDataArray) {
+ if (noteData.created_time == note.created_time) {
+ exist = true
+ folderUuid = note.folder_uuid
+ break
+ }
+ }
+ console.log("RdbStoreUtil initAppStorage, exist : " + exist)
+ // 迁移过来的笔记在本地不存在,则保存在未分类文件夹
+ if (!exist) {
+ noteData.folder_uuid = SysDefFolderUuid.UnClassified
+ noteDataArray.push(noteData)
+ AppStorage.SetOrCreate('AllNoteArray', noteDataArray)
+ this.insert(TableName.NoteTable, noteData.toNoteObject(), null)
+ AppStorage.SetOrCreate('Folder', FolderUtil.getFolderData(folderDataArray, SysDefFolderUuid.UnClassified))
+ } else {
+ AppStorage.SetOrCreate('Folder', FolderUtil.getFolderData(folderDataArray, folderUuid))
+ }
AppStorage.SetOrCreate('Note', noteData)
AppStorage.SetOrCreate('Section', continueSection)
} else {
@@ -162,7 +168,7 @@ export default {
let folderData = new FolderData(id, name, uuid, color, folder_type, is_deleted, created_time, modified_time)
folderDataArray.push(folderData)
}
- LogUtil.info(TAG, "query folder table success")
+ LogUtil.info(TAG, "folderDataArray[query] : " + folderDataArray.length)
// query note
let columns_note = []
let predicates_note = new ohosDataRdb.RdbPredicates(TableName.NoteTable)
@@ -184,29 +190,19 @@ export default {
let noteData = new NoteData(id, title, uuid, folder_uuid, content_text, content_img, noteType, is_top, is_favorite, is_deleted, created_time, modified_time, deleted_time)
noteDataArray.push(noteData)
}
- LogUtil.info(TAG, "query note table success")
- LogUtil.info(TAG, "folderDataArray[query] : " + folderDataArray.length)
- for (let folderData of folderDataArray) {
- LogUtil.info(TAG, "folderData[query] : " + JSON.stringify(folderData))
- }
LogUtil.info(TAG, "noteDataArray[query] : " + noteDataArray.length)
- for (let noteData of noteDataArray) {
- LogUtil.info(TAG, "noteData[query] : " + JSON.stringify(noteData))
- }
+
AppStorage.SetOrCreate('AllFolderArray', folderDataArray)
AppStorage.SetOrCreate('AllNoteArray', noteDataArray)
+ LogUtil.info(TAG, "AppStorage[query] set AllFolderArray and AllNoteArray success")
// 迁移
let isContinue = AppStorage.Get('IsContinue');
LogUtil.info(TAG, "initAppStorage, isContinue is " + isContinue)
if (isContinue != undefined && isContinue == 1) {
- console.info("RdbStoreUtil initAppStorage, IsContinue true")
let continueFolder: string = AppStorage.Get('ContinueFolder')
- console.log("RdbStoreUtil initAppStorage, continueFolder is " + continueFolder)
let continueNote: string = AppStorage.Get('ContinueNote')
- console.log("RdbStoreUtil initAppStorage, continueNote is " + continueNote)
let continueSection = AppStorage.Get('ContinueSection')
- console.log("RdbStoreUtil initAppStorage, continueSection is " + continueSection)
let folderObj = JSON.parse(continueFolder)
let folderData = new FolderData(folderObj.uuid, folderObj.name, folderObj.uuid, folderObj.color,
@@ -217,7 +213,27 @@ export default {
noteObj.content_text, noteObj.content_img, noteObj.note_type, noteObj.is_top, noteObj.is_favorite,
noteObj.is_deleted, noteObj.created_time, noteObj.modified_time, noteObj.deleted_time)
- AppStorage.SetOrCreate('Folder', folderData)
+ // if not exit this note
+ let exist = false
+ let folderUuid = ""
+ for (let note of noteDataArray) {
+ if (noteData.created_time == note.created_time) {
+ exist = true
+ folderUuid = note.folder_uuid
+ break
+ }
+ }
+ console.log("RdbStoreUtil initAppStorage, exist : " + exist)
+ // 迁移过来的笔记在本地不存在,则保存在未分类文件夹
+ if (!exist) {
+ noteData.folder_uuid = SysDefFolderUuid.UnClassified
+ noteDataArray.push(noteData)
+ AppStorage.SetOrCreate('AllNoteArray', noteDataArray)
+ this.insert(TableName.NoteTable, noteData.toNoteObject(), null)
+ AppStorage.SetOrCreate('Folder', FolderUtil.getFolderData(folderDataArray, SysDefFolderUuid.UnClassified))
+ } else {
+ AppStorage.SetOrCreate('Folder', FolderUtil.getFolderData(folderDataArray, folderUuid))
+ }
AppStorage.SetOrCreate('Note', noteData)
AppStorage.SetOrCreate('Section', continueSection)
} else {
diff --git a/common/utils/src/main/ets/default/baseUtil/WebViewUtil.ets b/common/utils/src/main/ets/default/baseUtil/WebViewUtil.ets
new file mode 100644
index 0000000..27dd60f
--- /dev/null
+++ b/common/utils/src/main/ets/default/baseUtil/WebViewUtil.ets
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * WebView Util
+ */
+export class WebViewUtil {
+ private static controllerShow: WebController
+
+ private constructor() {
+
+ }
+
+ public static getWebController(): WebController{
+ console.info('WebViewUtil, getWebController')
+ if (!this.controllerShow) {
+ console.info('WebViewUtil, controllerShow is null')
+ this.controllerShow = new WebController()
+ }
+ return this.controllerShow
+ }
+
+}
\ No newline at end of file
diff --git a/common/utils/src/main/ets/default/constants/StyleConstants.ets b/common/utils/src/main/ets/default/constants/StyleConstants.ets
index 22c8f67..094d05b 100644
--- a/common/utils/src/main/ets/default/constants/StyleConstants.ets
+++ b/common/utils/src/main/ets/default/constants/StyleConstants.ets
@@ -19,7 +19,7 @@ export default class StyleConstants {
public static PERCENTAGE_0: string = '0%'
public static SPACE_24: number = 24
public static NOTE_LIST_BACKGROUND: string = "#f1f3f5"
- public static DELETE_DEADLINE: number = 2592000000 // 30 days (30 * 24 * 60 * 60 * 1000)ms
+ public static DELETE_DEADLINE: number = 2592000000 // 30 days (30 * 24 * 60 * 60 * 1000)ms
public static OPACITY_10: number = 0.1
public static OPACITY_20: number = 0.2
public static OPACITY_40: number = 0.4
diff --git a/common/utils/src/main/ets/default/model/NoteBaseData.ets b/common/utils/src/main/ets/default/model/NoteBaseData.ets
index adc169a..92aa876 100644
--- a/common/utils/src/main/ets/default/model/NoteBaseData.ets
+++ b/common/utils/src/main/ets/default/model/NoteBaseData.ets
@@ -25,6 +25,7 @@ export const circleColorArray: string[] = [
"#3f56ea", // 深蓝
"#8a2be2", // 紫色
]
+
export const fontColorArray: string[] = [
"#e84026", // 深红
"#ffbf00", // 黄色
@@ -60,16 +61,16 @@ export const selectedNoteBgColorMap = {
}
export const folderTextMap = {
- "sys_def_allNotes_uuid": $r('app.string.allNotes'),
- "sys_def_unClassified_uuid": $r('app.string.unClassified'),
- "sys_def_myFavorites_uuid": $r('app.string.myFavorites'),
+ "sys_def_allNotes_uuid": $r('app.string.allNotes'),
+ "sys_def_unClassified_uuid": $r('app.string.unClassified'),
+ "sys_def_myFavorites_uuid": $r('app.string.myFavorites'),
"sys_def_recentDeletes_uuid": $r('app.string.recentDeletes'),
}
export const folderIconMap = {
- "sys_def_allNotes_uuid": $r('app.media.allNotes'),
- "sys_def_unClassified_uuid": $r('app.media.unClassified'),
- "sys_def_myFavorites_uuid": $r('app.media.favorite_cancel'),
+ "sys_def_allNotes_uuid": $r('app.media.allNotes'),
+ "sys_def_unClassified_uuid": $r('app.media.unClassified'),
+ "sys_def_myFavorites_uuid": $r('app.media.favorite_cancel'),
"sys_def_recentDeletes_uuid": $r('app.media.delete'),
}
@@ -84,8 +85,9 @@ export class WidthWeightMessage {
noteListVisibility: number
noteCotentWeight: string
noteCotentVisibility: number
+
constructor(folderListWeight: string, folderListVisibility: number, noteListWeight: string, noteListVisibility: number,
- noteCotentWeight: string, noteCotentVisibility: number) {
+ noteCotentWeight: string, noteCotentVisibility: number) {
this.folderListWeight = folderListWeight
this.folderListVisibility = folderListVisibility
this.noteListWeight = noteListWeight
@@ -98,6 +100,7 @@ export class WidthWeightMessage {
let widthWeightOneSection: WidthWeightMessage = new WidthWeightMessage("0%", 0, "0%", 0, "100%", 1)
let widthWeightTwoSection = new WidthWeightMessage("0%", 0, "34%", 1, "66%", 1)
let widthWeightThreeSection = new WidthWeightMessage("16%", 1, "34%", 1, "50%", 1)
+
export const widthWeightMessageMap = {
1: widthWeightOneSection,
2: widthWeightTwoSection,
diff --git a/common/utils/src/main/ets/default/model/databaseModel/EnumData.ets b/common/utils/src/main/ets/default/model/databaseModel/EnumData.ets
index 8249041..b89c5ef 100644
--- a/common/utils/src/main/ets/default/model/databaseModel/EnumData.ets
+++ b/common/utils/src/main/ets/default/model/databaseModel/EnumData.ets
@@ -53,7 +53,7 @@ export enum NoteTableColumn {
IsDeleted = "is_deleted", // 是否被删除
CreatedTime = "created_time", // 创建时间
ModifiedTime = "modified_time", // 修改时间
- DeletedTime = "deleted_time" // 删除时间
+ DeletedTime = "deleted_time" // 删除时间
}
/**
@@ -156,8 +156,8 @@ export enum SysDefFolderUuid {
* folder type
*/
export enum FolderType {
- SysDef, // System definition
- CusDef, // User defined
+ SysDef, // System definition
+ CusDef, // User defined
FeatureDef // feature defined: MyFavorites & RecentDeletes
}
diff --git a/common/utils/src/main/ets/default/model/searchModel/SearchModel.ets b/common/utils/src/main/ets/default/model/searchModel/SearchModel.ets
index 077cdd5..c963d99 100644
--- a/common/utils/src/main/ets/default/model/searchModel/SearchModel.ets
+++ b/common/utils/src/main/ets/default/model/searchModel/SearchModel.ets
@@ -43,7 +43,7 @@ export class SearchModel {
let searchData: NoteData[] = [];
noteDataArray.forEach((noteData) => {
if (noteData.content_text.toLowerCase().indexOf(query.toLowerCase()) != -1
- || noteData.title.toLowerCase().indexOf(query.toLowerCase()) != -1) {
+ || noteData.title.toLowerCase().indexOf(query.toLowerCase()) != -1) {
LogUtil.info(TAG, "uuid " + noteData.uuid)
searchData.push(noteData);
}
@@ -81,4 +81,5 @@ export class SearchModel {
}
let searchModel = new SearchModel()
+
export default searchModel as SearchModel
\ No newline at end of file
diff --git a/figures/ds_build_haps.png b/figures/ds_build_haps.png
new file mode 100644
index 0000000..dfba2d4
Binary files /dev/null and b/figures/ds_build_haps.png differ
diff --git a/figures/ds_hilog_window.png b/figures/ds_hilog_window.png
new file mode 100644
index 0000000..ac0f2db
Binary files /dev/null and b/figures/ds_hilog_window.png differ
diff --git a/figures/ds_ohosbuild_output_dir_release.png b/figures/ds_ohosbuild_output_dir_release.png
new file mode 100644
index 0000000..91bf233
Binary files /dev/null and b/figures/ds_ohosbuild_output_dir_release.png differ
diff --git a/figures/ds_ohosbuild_variants.png b/figures/ds_ohosbuild_variants.png
new file mode 100644
index 0000000..67773eb
Binary files /dev/null and b/figures/ds_ohosbuild_variants.png differ
diff --git a/figures/hdc_std.png b/figures/hdc_std.png
new file mode 100644
index 0000000..20a65dc
Binary files /dev/null and b/figures/hdc_std.png differ
diff --git a/figures/install.png b/figures/install.png
new file mode 100644
index 0000000..eb663b0
Binary files /dev/null and b/figures/install.png differ
diff --git a/figures/note.png b/figures/note.png
new file mode 100644
index 0000000..cd285dc
Binary files /dev/null and b/figures/note.png differ
diff --git a/figures/signature_1.png b/figures/signature_1.png
new file mode 100644
index 0000000..42aeb45
Binary files /dev/null and b/figures/signature_1.png differ
diff --git a/figures/signature_2.png b/figures/signature_2.png
new file mode 100644
index 0000000..6c4490e
Binary files /dev/null and b/figures/signature_2.png differ
diff --git a/figures/signature_3.png b/figures/signature_3.png
new file mode 100644
index 0000000..9816207
Binary files /dev/null and b/figures/signature_3.png differ
diff --git a/product/pc/src/main/config.json b/product/pc/src/main/config.json
index 5ea1c85..31502bc 100644
--- a/product/pc/src/main/config.json
+++ b/product/pc/src/main/config.json
@@ -37,9 +37,9 @@
"name": "com.ohos.note.MainAbility",
"icon": "$media:note",
"description": "$string:description_mainability",
- "label":"$string:entry_MainAbility",
+ "label": "$string:entry_MainAbility",
"type": "page",
- "launchType": "singleton",
+ "launchType": "standard",
"srcPath": "MainAbility",
"srcLanguage": "ets",
"metaData": {
diff --git a/product/phone/src/main/config.json b/product/phone/src/main/config.json
index 200e41d..d3f9ca3 100644
--- a/product/phone/src/main/config.json
+++ b/product/phone/src/main/config.json
@@ -37,9 +37,9 @@
"name": "com.ohos.note.MainAbility",
"icon": "$media:note",
"description": "$string:description_mainability",
- "label":"$string:entry_MainAbility",
+ "label": "$string:entry_MainAbility",
"type": "page",
- "launchType": "singleton",
+ "launchType": "standard",
"srcPath": "MainAbility",
"srcLanguage": "ets",
"metaData": {
diff --git a/product/phone/src/main/ets/AbilityStage.ts b/product/phone/src/main/ets/AbilityStage.ts
new file mode 100644
index 0000000..9eb7993
--- /dev/null
+++ b/product/phone/src/main/ets/AbilityStage.ts
@@ -0,0 +1,7 @@
+import AbilityStage from "@ohos.application.AbilityStage"
+
+export default class MyAbilityStage extends AbilityStage {
+ onCreate() {
+ console.log("MyAbilityStage onCreate")
+ }
+}
\ No newline at end of file
diff --git a/product/phone/src/main/ets/MainAbility/MainAbility.ts b/product/phone/src/main/ets/MainAbility/MainAbility.ts
new file mode 100644
index 0000000..5500153
--- /dev/null
+++ b/product/phone/src/main/ets/MainAbility/MainAbility.ts
@@ -0,0 +1,28 @@
+import Ability from '@ohos.application.Ability'
+
+export default class MainAbility extends Ability {
+ onCreate(want, launchParam) {
+ console.log("MainAbility onCreate, launchReason is " + launchParam.launchReason)
+ }
+
+ onDestroy() {
+ console.log("MainAbility onDestroy")
+ }
+
+ onWindowStageCreate(windowStage) {
+ console.log("MainAbility onWindowStageCreate")
+ windowStage.setUIContent(this.context, "pages/MyNoteHome", null)
+ }
+
+ onWindowStageDestroy() {
+ console.log("MainAbility onWindowStageDestroy")
+ }
+
+ onForeground() {
+ console.log("MainAbility onForeground")
+ }
+
+ onBackground() {
+ console.log("MainAbility onBackground")
+ }
+};
diff --git a/product/phone/src/main/ets/MainAbility/pages/MyNoteHome.ets b/product/phone/src/main/ets/MainAbility/pages/MyNoteHome.ets
index 77fc64d..c4753e0 100644
--- a/product/phone/src/main/ets/MainAbility/pages/MyNoteHome.ets
+++ b/product/phone/src/main/ets/MainAbility/pages/MyNoteHome.ets
@@ -23,14 +23,14 @@ import RdbStoreUtil from '../../../../../../../common/utils/src/main/ets/default
@Component
export struct MyNoteHomeComp {
@StorageLink('DBQueryFinished') dBQueryFinished: number = 0
- @Provide('PortraitModel') portraitModel:boolean = true
+ @Provide('PortraitModel') portraitModel: boolean = true
private context = getContext(this)
TAG = "MyNoteHomeComp"
build() {
Flex() {
if (this.dBQueryFinished == 1) {
- if (this.portraitModel == true){
+ if (this.portraitModel == true) {
NoteHomePortraitComp()
} else {
NoteHomeComp()
diff --git a/product/phone/src/main/ets/MainAbility/pages/NoteHome.ets b/product/phone/src/main/ets/MainAbility/pages/NoteHome.ets
index 45c5ec0..a89a12c 100644
--- a/product/phone/src/main/ets/MainAbility/pages/NoteHome.ets
+++ b/product/phone/src/main/ets/MainAbility/pages/NoteHome.ets
@@ -33,12 +33,11 @@ export struct NoteHomeComp {
@StorageLink('AllFolderArray') AllFolderArray: FolderData[] = AppStorage.Link('AllFolderArray')
@StorageLink('CheckedNoteArray') CheckedNoteArray: NoteData[] = []
- // 当前文件夹、笔记、分栏
+// 当前文件夹、笔记、分栏
@Provide('SelectedFolderData') selectedFolderData: FolderData = AppStorage.Get('Folder')
@Provide('SelectedNoteData') selectedNoteData: NoteData = AppStorage.Get('Note')
- @Provide('SectionStatus') sectionStatus: number = AppStorage.Get('Section');
-
- @Provide('SelectedColor') selectedColor: string = circleColorArray[0];
+ @Provide('SectionStatus') sectionStatus: number = AppStorage.Get('Section')
+ @Provide('SelectedColor') selectedColor: string = circleColorArray[0]
@Provide('Longpress') longpress: boolean = false // 第二栏长按状态
@Provide('ExpandStatus') expandStatus: boolean = false // 笔记本折叠展开状态
@Provide('ChooseNote') chooseNote: boolean = true // 是否选择笔记进行打开
@@ -80,7 +79,8 @@ export struct NoteHomeComp {
.height(StyleConstants.PERCENTAGE_100)
.visibility(
LayoutUtil.getWidthWeightMessage(this.sectionStatus)
- .noteListVisibility == 0 ? Visibility.None : Visibility.Visible);
+ .noteListVisibility == 0 ? Visibility.None : Visibility.Visible)
+
Divider()
.vertical(true)
.strokeWidth(1)
diff --git a/product/phone/src/main/ets/MainAbility/pages/NoteHomePortrait.ets b/product/phone/src/main/ets/MainAbility/pages/NoteHomePortrait.ets
index 9424d77..cdc6742 100644
--- a/product/phone/src/main/ets/MainAbility/pages/NoteHomePortrait.ets
+++ b/product/phone/src/main/ets/MainAbility/pages/NoteHomePortrait.ets
@@ -15,12 +15,15 @@
import {FolderListComp} from '../../../../../../../common/component/src/main/ets/default/FolderListComp.ets'
import {NoteListComp} from '../../../../../../../common/component/src/main/ets/default/NoteListComp.ets'
-import {NoteContentComp} from '../../../../../../../common/component/src/main/ets/default/NoteContentComp'
+import {NoteContentCompPortrait} from '../../../../../../../common/component/src/main/ets/default/NoteContentCompPortrait.ets'
import StyleConstants from '../../../../../../../common/utils/src/main/ets/default/constants/StyleConstants.ets'
import LogUtil from '../../../../../../../common/utils/src/main/ets/default/baseUtil/LogUtil.ets'
import {circleColorArray} from '../../../../../../../common/utils/src/main/ets/default/model/NoteBaseData.ets'
import FolderData from '../../../../../../../common/utils/src/main/ets/default/model/databaseModel/FolderData.ets'
import NoteData from '../../../../../../../common/utils/src/main/ets/default/model/databaseModel/NoteData.ets'
+import {SysDefFolderUuid} from '../../../../../../../common/utils/src/main/ets/default/model/databaseModel/EnumData.ets'
+import LayoutUtil from '../../../../../../../common/utils/src/main/ets/default/baseUtil/LayoutUtil.ets'
+import NoteUtil from '../../../../../../../common/utils/src/main/ets/default/baseUtil/NoteUtil.ets'
@Entry
@Component
@@ -30,18 +33,21 @@ export struct NoteHomePortraitComp {
@StorageLink('AllFolderArray') AllFolderArray: FolderData[] = AppStorage.Link('AllFolderArray')
@StorageLink('CheckedNoteArray') CheckedNoteArray: NoteData[] = []
- // 当前文件夹、笔记、分栏
+
+// 当前文件夹、笔记、分栏
@Provide('SelectedFolderData') selectedFolderData: FolderData = AppStorage.Get('Folder')
@Provide('SelectedNoteData') selectedNoteData: NoteData = AppStorage.Get('Note')
- @Provide('SectionStatus') sectionStatus: number = AppStorage.Get('Section');
-
+ @Provide('SectionStatus') sectionStatus: number = 1; // 表示分栏状态, 3表示三分栏, 2表示二分栏,1表示一分栏
+ @Provide('LastSectionStatus') lastSectionStatus: number = 1; // 记录分栏上一次的状态
@Provide('SelectedColor') selectedColor: string = circleColorArray[0];
@Provide('Longpress') longpress: boolean = false // 第二栏长按状态
@Provide('ExpandStatus') expandStatus: boolean = false // 笔记本折叠展开状态
@Provide('ChooseNote') chooseNote: boolean = false // 是否选择笔记进行打开
@Provide('Search') search: boolean = false // 是否处于搜索状态
- @Provide('SearchResultList') searchResultList: NoteData[] = [] // 搜索得到的笔记列表
+ @Provide('SearchResultList') searchResultList: NoteData[] = [] // 搜索得到的笔记列表
@Provide('InputKeyword') inputKeyword: string = '' // 搜索的字串
+ @Provide('SelectedAll') selectedAll:boolean = false;
+ @Provide('EditModel') editModel: boolean = false
TAG = "NoteHomeComp"
@@ -56,24 +62,25 @@ export struct NoteHomePortraitComp {
.height(StyleConstants.PERCENTAGE_100)
.enabled(this.expandStatus ? false : true)
- //Folder list display area
+ //Folder list display area
Flex({ direction: FlexDirection.Column, wrap: FlexWrap.NoWrap, justifyContent: FlexAlign.Center }) {
FolderListComp()
}
.backgroundColor($r("app.color.folderlist_bgcolor_f1f3f5"))
.width(StyleConstants.PERCENTAGE_60)
.height(StyleConstants.PERCENTAGE_100)
- .visibility(this.expandStatus == false ? Visibility.None:Visibility.Visible)
+ .visibility(this.expandStatus == false ? Visibility.None : Visibility.Visible)
// Note content display area
- Flex({ direction: FlexDirection.Column, wrap: FlexWrap.Wrap, justifyContent: FlexAlign.Start }) {
- NoteContentComp()
+ if(this.chooseNote == true ) {
+ Flex({ direction: FlexDirection.Column, wrap: FlexWrap.Wrap, justifyContent: FlexAlign.Start }) {
+ NoteContentCompPortrait()
+ }
+ .backgroundColor($r("app.color.notecontent_color_ffffff"))
+ .width(StyleConstants.PERCENTAGE_100)
+ .height(StyleConstants.PERCENTAGE_100)
}
- .backgroundColor($r("app.color.notecontent_color_ffffff"))
- .width(StyleConstants.PERCENTAGE_100)
- .height(StyleConstants.PERCENTAGE_100)
- .visibility(this.chooseNote == false ? Visibility.None:Visibility.Visible)
}
.width(StyleConstants.PERCENTAGE_100).height(StyleConstants.PERCENTAGE_100)
}
diff --git a/product/phone/src/main/ets/MainAbility/res/cake.png b/product/phone/src/main/ets/MainAbility/res/cake.png
index e56343f..35a79e9 100644
Binary files a/product/phone/src/main/ets/MainAbility/res/cake.png and b/product/phone/src/main/ets/MainAbility/res/cake.png differ
diff --git a/product/phone/src/main/resources/base/element/color.json b/product/phone/src/main/resources/base/element/color.json
index 69a86f1..6e6bbda 100644
--- a/product/phone/src/main/resources/base/element/color.json
+++ b/product/phone/src/main/resources/base/element/color.json
@@ -87,6 +87,10 @@
{
"name": "button_color_f86d05",
"value": "#f86d05"
+ },
+ {
+ "name": "font_stylecolor_AD182431",
+ "value": "#AD182431"
}
]
}
\ No newline at end of file
diff --git a/product/phone/src/main/resources/base/element/string.json b/product/phone/src/main/resources/base/element/string.json
index db8ce11..fb355ba 100644
--- a/product/phone/src/main/resources/base/element/string.json
+++ b/product/phone/src/main/resources/base/element/string.json
@@ -139,6 +139,30 @@
{
"name": "editNoteTitle",
"value": "修改标题"
+ },
+ {
+ "name": "list",
+ "value": "清单"
+ },
+ {
+ "name": "style",
+ "value": "样式"
+ },
+ {
+ "name": "photo",
+ "value": "相册"
+ },
+ {
+ "name": "title",
+ "value": "标题"
+ },
+ {
+ "name": "empty_note",
+ "value": "笔记内容为空"
+ },
+ {
+ "name": "restore",
+ "value": "已恢复"
}
]
}
\ No newline at end of file
diff --git a/product/phone/src/main/resources/rawfile/cake.png b/product/phone/src/main/resources/rawfile/cake.png
new file mode 100644
index 0000000..35a79e9
Binary files /dev/null and b/product/phone/src/main/resources/rawfile/cake.png differ
diff --git a/product/phone/src/main/resources/rawfile/editor.html b/product/phone/src/main/resources/rawfile/editor.html
new file mode 100644
index 0000000..5daf07b
--- /dev/null
+++ b/product/phone/src/main/resources/rawfile/editor.html
@@ -0,0 +1,27 @@
+
+
+
+
+ "editorJs"
+
+
+
+
+
+
+
+
+
+
+
diff --git a/product/phone/src/main/resources/rawfile/editor_style.css b/product/phone/src/main/resources/rawfile/editor_style.css
new file mode 100644
index 0000000..4a01ed4
--- /dev/null
+++ b/product/phone/src/main/resources/rawfile/editor_style.css
@@ -0,0 +1,89 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+html {
+ height: 100%;
+ font-family: sans-serif;
+ -webkit-text-size-adjust: 100%;
+}
+
+body {
+ overflow: scroll;
+ display: table;
+ table-layout: fixed;
+ width: 100%;
+ min-height:100%;
+ color: #333333;
+ margin: 0;
+}
+
+#editorjs {
+ padding-left: 24px;
+ padding-right: 24px;
+ width:100%;
+ display: table-cell;
+ outline: 0px solid transparent;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: cover;
+ color: #333333;
+ font-size:40px;
+}
+
+#editorjs[placeholder]:empty:not(:focus):before {
+ content: attr(placeholder);
+ font-size:40px;
+ color: #9b9b9b;
+}
+
+.note-checkbox:checked {
+ background: #F88805;
+ border: 2px solid #F88805;
+ outline: none;
+ margin-left:0px;
+ margin-right:0px;
+ opacity: 1;
+}
+
+.note-checkbox {
+ width: 23px;
+ height: 23px;
+ background-color: #ffffff;
+ border: 2px solid #555555;
+-webkit-border-radius: 50%;
+-webkit-appearance: none;
+-webkit-user-select: none;
+ border-radius: 50%;
+ font-size: 0.8rem;
+ margin-left:0px;
+ margin-top:10px;
+ margin-right:0px;
+ margin-bottom:0px;
+ outline: none;
+ padding: 0;
+ position: relative;
+ display: inline-block;
+-webkit-transition: background-color ease 0.1s;
+ transition: background-color ease 0.1s;
+ vertical-align: top;
+ cursor: default;
+ user-select: none;
+}
+
+.note-checkbox:checked+span{
+ text-decoration: line-through;
+ color:#F88805;
+ opacity: 0.4;
+}
diff --git a/product/phone/src/main/resources/rawfile/lvyou.png b/product/phone/src/main/resources/rawfile/lvyou.png
new file mode 100644
index 0000000..5a4c05f
Binary files /dev/null and b/product/phone/src/main/resources/rawfile/lvyou.png differ
diff --git a/product/phone/src/main/resources/rawfile/rich_editor.js b/product/phone/src/main/resources/rawfile/rich_editor.js
new file mode 100644
index 0000000..2828609
--- /dev/null
+++ b/product/phone/src/main/resources/rawfile/rich_editor.js
@@ -0,0 +1,306 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var RICH_EDITOR = {};
+
+RICH_EDITOR.editor = document.getElementById('editorjs');
+
+RICH_EDITOR.setHtml = function(contents) {
+ RICH_EDITOR.editor.innerHTML = decodeURIComponent(contents.replace(/\+/g, '%20'));
+}
+
+RICH_EDITOR.getHtml = function() {
+ return RICH_EDITOR.editor.innerHTML;
+}
+
+RICH_EDITOR.getText = function() {
+ console.log(RICH_EDITOR.editor.innerText);
+ return RICH_EDITOR.editor.innerText;
+}
+
+RICH_EDITOR.setBaseTextColor = function(color) {
+ RICH_EDITOR.editor.style.color = color;
+}
+
+RICH_EDITOR.setBaseFontSize = function(size) {
+ RICH_EDITOR.editor.style.fontSize = size;
+}
+
+RICH_EDITOR.undo = function() {
+ document.execCommand('undo', false, null);
+}
+
+RICH_EDITOR.redo = function() {
+ document.execCommand('redo', false, null);
+}
+
+RICH_EDITOR.setBold = function() {
+ document.execCommand('bold');
+}
+
+RICH_EDITOR.setItalic = function() {
+ document.execCommand('italic', false, null);
+}
+
+RICH_EDITOR.setSubscript = function() {
+ document.execCommand('subscript', false, null);
+}
+
+RICH_EDITOR.setSuperscript = function() {
+ document.execCommand('superscript', false, null);
+}
+
+RICH_EDITOR.setStrikeThrough = function() {
+ document.execCommand('strikeThrough', false, null);
+}
+
+RICH_EDITOR.setUnderline = function() {
+ document.execCommand('underline', false, null);
+}
+
+RICH_EDITOR.setNumbers = function () {
+ document.execCommand('insertOrderedList', false, null);
+ var selection, type;
+ if (window.getSelection) {
+ selection = getSelection();
+ }
+ if (selection) {
+ var range = selection.getRangeAt ? selection.getRangeAt(0) : selection.createRange();
+ try {
+ var child = range.commonAncestorContainer.parentNode;
+ for (var i = 0; i < 10; i++) {
+ if (child.nodeName == "OL") {
+ child.style["list-style"] = "decimal";
+ break;
+ }
+ if (child.parentNode) {
+ child = child.parentNode
+ }
+ }
+ } catch (err) {
+
+ }
+ }
+}
+
+RICH_EDITOR.setABC = function () {
+ document.execCommand('insertOrderedList', false, null);
+ var selection, type;
+ if (window.getSelection) {
+ selection = getSelection();
+ }
+ if (selection) {
+ var range = selection.getRangeAt ? selection.getRangeAt(0) : selection.createRange();
+ try {
+ var child = range.commonAncestorContainer.parentNode;
+ for (var i = 0; i < 10; i++) {
+ if (child.nodeName == "OL") {
+ child.style["list-style"] = "lower-alpha";
+ break;
+ }
+ if (child.parentNode) {
+ child = child.parentNode
+ }
+ }
+ } catch (err) {
+
+ }
+ }
+}
+
+RICH_EDITOR.setBullets = function () {
+ document.execCommand('insertUnorderedList', false, null);
+ var selection, type;
+ if (window.getSelection) {
+ selection = getSelection();
+ }
+ if (selection) {
+ var range = selection.getRangeAt ? selection.getRangeAt(0) : selection.createRange();
+ try {
+ var child = range.commonAncestorContainer.parentNode;
+ for (var i = 0; i < 10; i++) {
+ if (child.nodeName == "UL") {
+ child.style["list-style"] = "disc";
+ break;
+ }
+ if (child.parentNode) {
+ child = child.parentNode
+ }
+ }
+ } catch (err) {
+
+ }
+ }
+}
+
+RICH_EDITOR.setSquare = function () {
+ document.execCommand('insertUnorderedList', false, null);
+ var selection, type;
+ if (window.getSelection) {
+ selection = getSelection();
+ }
+ if (selection) {
+ var range = selection.getRangeAt ? selection.getRangeAt(0) : selection.createRange();
+ try {
+ var child = range.commonAncestorContainer.parentNode;
+ for (var i = 0; i < 10; i++) {
+ if (child.nodeName == "UL") {
+ child.style["list-style"] = "square";
+ break;
+ }
+ if (child.parentNode) {
+ child = child.parentNode
+ }
+ }
+ } catch (err) {
+
+ }
+ }
+}
+
+RICH_EDITOR.setTextColor = function (color) {
+ document.execCommand('foreColor', false, color);
+}
+
+RICH_EDITOR.setTextBackgroundColor = function(color) {
+ RICH_EDITOR.restorerange();
+ document.execCommand("styleWithCSS", null, true);
+ document.execCommand('hiliteColor', false, color);
+ document.execCommand("styleWithCSS", null, false);
+}
+
+RICH_EDITOR.setFontSize = function(fontSize){
+ document.execCommand("fontSize", false, fontSize);
+}
+
+RICH_EDITOR.execFontSize = function (size, unit) {
+ document.execCommand("fontSize", false, "7");
+ var fontElements = window.getSelection().anchorNode.parentNode
+ fontElements.removeAttribute("size");
+ fontElements.style.fontSize = size + 'px'
+};
+
+RICH_EDITOR.setHeading = function(heading) {
+ document.execCommand('formatBlock', false, '');
+}
+
+RICH_EDITOR.setIndent = function() {
+ document.execCommand('indent', false, null);
+}
+
+RICH_EDITOR.setOutdent = function() {
+ document.execCommand('outdent', false, null);
+}
+
+RICH_EDITOR.setJustifyLeft = function() {
+ document.execCommand('justifyLeft', false, null);
+}
+
+RICH_EDITOR.setJustifyCenter = function() {
+ document.execCommand('justifyCenter', false, null);
+}
+
+RICH_EDITOR.setJustifyRight = function() {
+ document.execCommand('justifyRight', false, null);
+}
+
+RICH_EDITOR.setBlockquote = function() {
+ document.execCommand('formatBlock', false, '');
+}
+
+RICH_EDITOR.insertImage = function() {
+ var url = './shuxue.png';
+ var html = '
';
+ RICH_EDITOR.insertHTML(html);
+ RICH_EDITOR.editor.scrollIntoView(false)
+}
+
+RICH_EDITOR.insertHTML = function(html) {
+ RICH_EDITOR.restorerange();
+ document.execCommand('insertHTML', false, html);
+}
+
+RICH_EDITOR.setDone = function() {
+ var html = ' ';
+ document.execCommand('insertHTML', false, html);
+}
+
+RICH_EDITOR.addTodo=function(e){
+ KEY_ENTER=13;
+ if(e.which == KEY_ENTER){
+ var node=RICH_EDITOR.getSelectedAnchorNode();
+ if(node&&node.nodeName=="#text"){
+ node=node.parentElement;
+ }
+ if(node&&node.nodeName=="SPAN"&&node.previousElementSibling&&node.previousElementSibling.className=='note-checkbox'){
+ RICH_EDITOR.setTodo();
+ e.preventDefault();
+ }
+ }
+}
+
+RICH_EDITOR.setTodo = function () {
+ var parent = document.getElementById('editorjs')
+ var isContentEmpty = parent.innerHTML.trim().length == 0 || parent.innerHTML == '
';
+ var html = (isContentEmpty ? '' : '
') + ' ';
+ document.execCommand('insertHTML', false, html);
+}
+
+function onCheckChange(checkbox) {
+ if (checkbox.checked == true) {
+ checkbox.setAttribute("checked", "checked");
+ } else {
+ checkbox.removeAttribute("checked");
+ }
+}
+
+RICH_EDITOR.restorerange = function(){
+ var selection = window.getSelection();
+ selection.removeAllRanges();
+ var range = document.createRange();
+ range.setStart(RICH_EDITOR.currentSelection.startContainer, RICH_EDITOR.currentSelection.startOffset);
+ range.setEnd(RICH_EDITOR.currentSelection.endContainer, RICH_EDITOR.currentSelection.endOffset);
+ selection.addRange(range);
+}
+
+//获取光标开始位置归属节点
+RICH_EDITOR.getSelectedAnchorNode=function(){
+ var node,selection;
+ if (window.getSelection) {
+ selection = getSelection();
+ node = selection.anchorNode;
+ }
+ if (!node && document.selection) {
+ selection = document.selection
+ var range = selection.getRangeAt ? selection.getRangeAt(0) : selection.createRange();
+ node = range.commonAncestorContainer ? range.commonAncestorContainer :
+ range.parentElement ? range.parentElement() : range.item(0);
+ }
+ return node;
+}
+
+function get_html_content() {
+ console.log('hhh Ark WebComponent');
+ var htmlString = encodeURI(RICH_EDITOR.getHtml())
+ var str = callBackToApp.callbackhtml(htmlString)
+ console.log('hhh objName.test result:' + str);
+}
+
+function save_html_content() {
+ console.log('hhh Ark WebComponent');
+ var htmlString = encodeURI(RICH_EDITOR.getHtml())
+ var str = callBackToApp.callbackhtmlSave(htmlString)
+ console.log('hhh objName.test result:' + str);
+}
\ No newline at end of file
diff --git a/product/phone/src/main/resources/rawfile/shuxue.png b/product/phone/src/main/resources/rawfile/shuxue.png
new file mode 100644
index 0000000..8af342a
Binary files /dev/null and b/product/phone/src/main/resources/rawfile/shuxue.png differ
diff --git a/product/tablet/src/main/config.json b/product/tablet/src/main/config.json
index 8e41de7..43f93b7 100644
--- a/product/tablet/src/main/config.json
+++ b/product/tablet/src/main/config.json
@@ -37,9 +37,9 @@
"name": "com.ohos.note.MainAbility",
"icon": "$media:note",
"description": "$string:description_mainability",
- "label":"$string:entry_MainAbility",
+ "label": "$string:entry_MainAbility",
"type": "page",
- "launchType": "singleton",
+ "launchType": "standard",
"srcPath": "MainAbility",
"srcLanguage": "ets",
"metaData": {
diff --git a/product/tablet/src/main/ets/AbilityStage.ts b/product/tablet/src/main/ets/AbilityStage.ts
index 71e62c4..9eb7993 100644
--- a/product/tablet/src/main/ets/AbilityStage.ts
+++ b/product/tablet/src/main/ets/AbilityStage.ts
@@ -1,18 +1,3 @@
-/**
- * Copyright (c) 2021 Huawei Device Co., Ltd.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
import AbilityStage from "@ohos.application.AbilityStage"
export default class MyAbilityStage extends AbilityStage {
diff --git a/product/tablet/src/main/ets/MainAbility/MainAbility.ts b/product/tablet/src/main/ets/MainAbility/MainAbility.ts
index 483c514..99e76c7 100644
--- a/product/tablet/src/main/ets/MainAbility/MainAbility.ts
+++ b/product/tablet/src/main/ets/MainAbility/MainAbility.ts
@@ -1,19 +1,5 @@
-/**
- * Copyright (c) 2021 Huawei Device Co., Ltd.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
import Ability from '@ohos.application.Ability'
+import {WebViewUtil} from './WebViewUtil.ets'
export default class MainAbility extends Ability {
onCreate(want, launchParam) {
@@ -23,16 +9,13 @@ export default class MainAbility extends Ability {
let continueFolder: string = want.parameters["ContinueFolder"]
let continueNote: string = want.parameters["ContinueNote"]
let continueSection: number = want.parameters["ContinueSection"]
- console.log("MainAbility launchReason = 3, continueFolder is " + continueFolder)
- console.log("MainAbility launchReason = 3, continueNote is " + continueNote)
- console.log("MainAbility launchReason = 3, continueSection is " + continueSection)
// 迁移数据存入AppStorage
AppStorage.SetOrCreate('ContinueFolder', continueFolder)
AppStorage.SetOrCreate('ContinueNote', continueNote)
AppStorage.SetOrCreate('ContinueSection', continueSection)
// 设置迁移标记
AppStorage.SetOrCreate('IsContinue', 1)
- this.context.restoreWindowStage(null);
+ this.context.restoreWindowStage(null)
}
}
@@ -55,37 +38,42 @@ export default class MainAbility extends Ability {
onBackground() {
console.log("MainAbility onBackground")
+ let controllerShow = WebViewUtil.getWebController()
+ if (controllerShow == undefined || controllerShow == null) {
+ console.info("MainAbility onBackground, controllerShow is error")
+ }
+ console.log("MainAbility controllerShow : " + controllerShow)
+ controllerShow.runJavaScript({
+ script: "get_html_content()"
+ })
+ console.log("MainAbility controllerShow end")
}
onContinue(wantParam: { [key: string]: any }) {
console.log("MainAbility onContinue")
-
// 获取本端的迁移数据
let continueFolder = AppStorage.Get('ContinueFolder')
if (continueFolder == undefined || continueFolder == null) {
console.log("MainAbility onContinue, continue first folder")
continueFolder = JSON.stringify(AppStorage.Get('AllFolderArray')[0].toFolderObject())
}
- console.log("MainAbility onContinue, continueFolder is " + continueFolder)
let continueNote = AppStorage.Get('ContinueNote')
if (continueNote == undefined || continueNote == null) {
console.log("MainAbility onContinue, continue first note")
continueNote = JSON.stringify(AppStorage.Get('AllNoteArray')[0].toNoteObject())
}
- console.log("MainAbility onContinue, continueNote is " + continueNote)
let continueSection = AppStorage.Get('ContinueSection')
if (continueSection == undefined || continueSection == null) {
console.log("MainAbility onContinue, continue section 3")
continueSection = 3
}
- console.log("MainAbility onContinue, continueSection is " + continueSection)
// 保存本端的迁移数据
- wantParam["ContinueFolder"] = continueFolder;
- wantParam["ContinueNote"] = continueNote;
- wantParam["ContinueSection"] = continueSection;
+ wantParam["ContinueFolder"] = continueFolder
+ wantParam["ContinueNote"] = continueNote
+ wantParam["ContinueSection"] = continueSection
return true
}
diff --git a/product/tablet/src/main/ets/MainAbility/WebViewUtil.ets b/product/tablet/src/main/ets/MainAbility/WebViewUtil.ets
new file mode 100644
index 0000000..27dd60f
--- /dev/null
+++ b/product/tablet/src/main/ets/MainAbility/WebViewUtil.ets
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * WebView Util
+ */
+export class WebViewUtil {
+ private static controllerShow: WebController
+
+ private constructor() {
+
+ }
+
+ public static getWebController(): WebController{
+ console.info('WebViewUtil, getWebController')
+ if (!this.controllerShow) {
+ console.info('WebViewUtil, controllerShow is null')
+ this.controllerShow = new WebController()
+ }
+ return this.controllerShow
+ }
+
+}
\ No newline at end of file
diff --git a/product/tablet/src/main/ets/MainAbility/pages/MyNoteHome.ets b/product/tablet/src/main/ets/MainAbility/pages/MyNoteHome.ets
index 541557a..8f6a548 100644
--- a/product/tablet/src/main/ets/MainAbility/pages/MyNoteHome.ets
+++ b/product/tablet/src/main/ets/MainAbility/pages/MyNoteHome.ets
@@ -37,7 +37,8 @@ export struct MyNoteHomeComp {
}
}
}
- .width('100%').height('100%')
+ .width('100%')
+ .height('100%')
}
aboutToAppear(): void{
diff --git a/product/tablet/src/main/ets/MainAbility/pages/NoteHome.ets b/product/tablet/src/main/ets/MainAbility/pages/NoteHome.ets
index e0b0220..a316dcf 100644
--- a/product/tablet/src/main/ets/MainAbility/pages/NoteHome.ets
+++ b/product/tablet/src/main/ets/MainAbility/pages/NoteHome.ets
@@ -24,6 +24,7 @@ import NoteData from '../../../../../../../common/utils/src/main/ets/default/mod
import {SysDefFolderUuid} from '../../../../../../../common/utils/src/main/ets/default/model/databaseModel/EnumData.ets'
import LayoutUtil from '../../../../../../../common/utils/src/main/ets/default/baseUtil/LayoutUtil.ets'
import NoteUtil from '../../../../../../../common/utils/src/main/ets/default/baseUtil/NoteUtil.ets'
+import {WebViewUtil} from '../../../../../../../common/utils/src/main/ets/default/baseUtil/WebViewUtil.ets'
@Entry
@Component
@@ -33,22 +34,21 @@ export struct NoteHomeComp {
@StorageLink('AllFolderArray') AllFolderArray: FolderData[] = AppStorage.Link('AllFolderArray')
@StorageLink('CheckedNoteArray') CheckedNoteArray: NoteData[] = []
- // 当前文件夹、笔记、分栏
+// 当前文件夹、笔记、分栏
@Provide('SelectedFolderData') selectedFolderData: FolderData = AppStorage.Get('Folder')
@Provide('SelectedNoteData') selectedNoteData: NoteData = AppStorage.Get('Note')
- @Provide('SectionStatus') sectionStatus: number = AppStorage.Get('Section');
-
- @Provide('SelectedColor') selectedColor: string = circleColorArray[0];
- @Provide('LastSectionStatus') lastSectionStatus: number = 3; // 记录分栏上一次的状态
+ @Provide('SectionStatus') sectionStatus: number = AppStorage.Get('Section')
+ @Provide('SelectedColor') selectedColor: string = circleColorArray[0]
+ @Provide('LastSectionStatus') lastSectionStatus: number = 3 // 记录分栏上一次的状态
@Provide('Longpress') longpress: boolean = false // 第二栏长按状态
@Provide('ExpandStatus') expandStatus: boolean = false // 笔记本折叠展开状态
@Provide('ChooseNote') chooseNote: boolean = true // 是否选择笔记进行打开
@Provide('Search') search: boolean = false // 是否处于搜索状态
@Provide('SearchResultList') searchResultList: NoteData[] = [] // 搜索得到的笔记列表
@Provide('InputKeyword') inputKeyword: string = '' // 搜索的字串
- @Provide('SelectedAll') selectedAll: boolean = false;
+ @Provide('SelectedAll') selectedAll: boolean = false
@Provide('EditModel') editModel: boolean = false //编辑模式:临时方案
- private controllerShow: WebController = new WebController() //第三栏展示
+ private controllerShow: WebController = WebViewUtil.getWebController() //第三栏展示
TAG = "NoteHomeComp"
@@ -56,7 +56,7 @@ export struct NoteHomeComp {
Flex({ justifyContent: FlexAlign.Start }) {
// Folder list display area
Flex({ direction: FlexDirection.Column, wrap: FlexWrap.NoWrap, justifyContent: FlexAlign.Center }) {
- FolderListComp({controllerShow: this.controllerShow})
+ FolderListComp({ controllerShow: this.controllerShow })
}
.flexShrink(0)
.backgroundColor($r("app.color.folderlist_bgcolor_f1f3f5"))
@@ -76,7 +76,7 @@ export struct NoteHomeComp {
.opacity(StyleConstants.OPACITY_10)
// Note list display area
Flex({ direction: FlexDirection.Column, wrap: FlexWrap.Wrap, justifyContent: FlexAlign.Start }) {
- NoteListComp({controllerShow: this.controllerShow})
+ NoteListComp({ controllerShow: this.controllerShow })
}
.flexShrink(0)
.backgroundColor($r("app.color.notelist_bgcolor_f1f3f5"))
@@ -84,7 +84,8 @@ export struct NoteHomeComp {
.height(StyleConstants.PERCENTAGE_100)
.visibility(
LayoutUtil.getWidthWeightMessage(this.sectionStatus)
- .noteListVisibility == 0 ? Visibility.None : Visibility.Visible);
+ .noteListVisibility == 0 ? Visibility.None : Visibility.Visible)
+
Divider()
.vertical(true)
.strokeWidth(1)
@@ -93,7 +94,7 @@ export struct NoteHomeComp {
.opacity(StyleConstants.OPACITY_10)
// Note content display area
Flex({ direction: FlexDirection.Column, wrap: FlexWrap.Wrap, justifyContent: FlexAlign.Start }) {
- NoteContentComp({controllerShow: this.controllerShow})
+ NoteContentComp({ controllerShow: this.controllerShow })
}
.flexShrink(0)
.backgroundColor(this.search && this.inputKeyword.length == 0 ? $r("app.color.notecontent_color_000000") : $r("app.color.notecontent_color_ffffff"))
@@ -102,7 +103,8 @@ export struct NoteHomeComp {
.opacity(this.longpress ? StyleConstants.OPACITY_40 : this.search && this.inputKeyword.length == 0 ? StyleConstants.OPACITY_20 : StyleConstants.OPACITY_100)
.enabled(this.longpress || this.search && this.inputKeyword.length == 0 ? false : true)
}
- .width(StyleConstants.PERCENTAGE_100).height(StyleConstants.PERCENTAGE_100)
+ .width(StyleConstants.PERCENTAGE_100)
+ .height(StyleConstants.PERCENTAGE_100)
}
aboutToAppear(): void{
diff --git a/product/tablet/src/main/ets/MainAbility/pages/NoteHomePortrait.ets b/product/tablet/src/main/ets/MainAbility/pages/NoteHomePortrait.ets
index 31fc6c1..123fd53 100644
--- a/product/tablet/src/main/ets/MainAbility/pages/NoteHomePortrait.ets
+++ b/product/tablet/src/main/ets/MainAbility/pages/NoteHomePortrait.ets
@@ -30,17 +30,16 @@ export struct NoteHomePortraitComp {
@StorageLink('AllFolderArray') AllFolderArray: FolderData[] = AppStorage.Link('AllFolderArray')
@StorageLink('CheckedNoteArray') CheckedNoteArray: NoteData[] = []
- // 当前文件夹、笔记、分栏
+// 当前文件夹、笔记、分栏
@Provide('SelectedFolderData') selectedFolderData: FolderData = AppStorage.Get('Folder')
@Provide('SelectedNoteData') selectedNoteData: NoteData = AppStorage.Get('Note')
- @Provide('SectionStatus') sectionStatus: number = AppStorage.Get('Section');
-
- @Provide('SelectedColor') selectedColor: string = circleColorArray[0];
+ @Provide('SectionStatus') sectionStatus: number = AppStorage.Get('Section')
+ @Provide('SelectedColor') selectedColor: string = circleColorArray[0]
@Provide('Longpress') longpress: boolean = false // 第二栏长按状态
@Provide('ExpandStatus') expandStatus: boolean = false // 笔记本折叠展开状态
@Provide('ChooseNote') chooseNote: boolean = true // 是否选择笔记进行打开
@Provide('Search') search: boolean = false // 是否处于搜索状态
- @Provide('SearchResultList') searchResultList: NoteData[] = [] // 搜索得到的笔记列表
+ @Provide('SearchResultList') searchResultList: NoteData[] = [] // 搜索得到的笔记列表
@Provide('InputKeyword') inputKeyword: string = '' // 搜索的字串
TAG = "NoteHomeComp"
@@ -56,14 +55,14 @@ export struct NoteHomePortraitComp {
.height(StyleConstants.PERCENTAGE_100)
.enabled(this.expandStatus ? false : true)
- //Folder list display area
+ //Folder list display area
Flex({ direction: FlexDirection.Column, wrap: FlexWrap.NoWrap, justifyContent: FlexAlign.Center }) {
FolderListComp()
}
.backgroundColor($r("app.color.folderlist_bgcolor_f1f3f5"))
.width(StyleConstants.PERCENTAGE_60)
.height(StyleConstants.PERCENTAGE_100)
- .visibility(this.expandStatus == false ? Visibility.None:Visibility.Visible)
+ .visibility(this.expandStatus == false ? Visibility.None : Visibility.Visible)
// Note content display area
@@ -73,9 +72,10 @@ export struct NoteHomePortraitComp {
.backgroundColor($r("app.color.notecontent_color_ffffff"))
.width(StyleConstants.PERCENTAGE_100)
.height(StyleConstants.PERCENTAGE_100)
- .visibility(this.chooseNote == false ? Visibility.None:Visibility.Visible)
+ .visibility(this.chooseNote == false ? Visibility.None : Visibility.Visible)
}
- .width(StyleConstants.PERCENTAGE_100).height(StyleConstants.PERCENTAGE_100)
+ .width(StyleConstants.PERCENTAGE_100)
+ .height(StyleConstants.PERCENTAGE_100)
}
aboutToAppear(): void{
diff --git a/product/tablet/src/main/ets/MainAbility/res/cake.png b/product/tablet/src/main/ets/MainAbility/res/cake.png
index e56343f..35a79e9 100644
Binary files a/product/tablet/src/main/ets/MainAbility/res/cake.png and b/product/tablet/src/main/ets/MainAbility/res/cake.png differ
diff --git a/product/tablet/src/main/resources/base/element/color.json b/product/tablet/src/main/resources/base/element/color.json
index 69a86f1..6e6bbda 100644
--- a/product/tablet/src/main/resources/base/element/color.json
+++ b/product/tablet/src/main/resources/base/element/color.json
@@ -87,6 +87,10 @@
{
"name": "button_color_f86d05",
"value": "#f86d05"
+ },
+ {
+ "name": "font_stylecolor_AD182431",
+ "value": "#AD182431"
}
]
}
\ No newline at end of file
diff --git a/product/tablet/src/main/resources/base/element/string.json b/product/tablet/src/main/resources/base/element/string.json
index db8ce11..fb355ba 100644
--- a/product/tablet/src/main/resources/base/element/string.json
+++ b/product/tablet/src/main/resources/base/element/string.json
@@ -139,6 +139,30 @@
{
"name": "editNoteTitle",
"value": "修改标题"
+ },
+ {
+ "name": "list",
+ "value": "清单"
+ },
+ {
+ "name": "style",
+ "value": "样式"
+ },
+ {
+ "name": "photo",
+ "value": "相册"
+ },
+ {
+ "name": "title",
+ "value": "标题"
+ },
+ {
+ "name": "empty_note",
+ "value": "笔记内容为空"
+ },
+ {
+ "name": "restore",
+ "value": "已恢复"
}
]
}
\ No newline at end of file
diff --git a/product/tablet/src/main/resources/rawfile/baidu.png b/product/tablet/src/main/resources/rawfile/baidu.png
deleted file mode 100644
index 510f111..0000000
Binary files a/product/tablet/src/main/resources/rawfile/baidu.png and /dev/null differ
diff --git a/product/tablet/src/main/resources/rawfile/cake.png b/product/tablet/src/main/resources/rawfile/cake.png
index e56343f..35a79e9 100644
Binary files a/product/tablet/src/main/resources/rawfile/cake.png and b/product/tablet/src/main/resources/rawfile/cake.png differ
diff --git a/product/tablet/src/main/resources/rawfile/editor.html b/product/tablet/src/main/resources/rawfile/editor.html
new file mode 100644
index 0000000..5daf07b
--- /dev/null
+++ b/product/tablet/src/main/resources/rawfile/editor.html
@@ -0,0 +1,27 @@
+
+
+
+
+ "editorJs"
+
+
+
+
+
+
+
+
+
+
+
diff --git a/product/tablet/src/main/resources/rawfile/editor_style.css b/product/tablet/src/main/resources/rawfile/editor_style.css
new file mode 100644
index 0000000..6eba633
--- /dev/null
+++ b/product/tablet/src/main/resources/rawfile/editor_style.css
@@ -0,0 +1,89 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+html {
+ height: 100%;
+ font-family: sans-serif;
+-webkit-text-size-adjust: 100%;
+}
+
+body {
+ overflow: scroll;
+ display: table;
+ table-layout: fixed;
+ width: 100%;
+ min-height:100%;
+ color: #333333;
+ margin: 0;
+}
+
+#editorjs {
+ padding-left: 24px;
+ padding-right: 24px;
+ width:100%;
+ display: table-cell;
+ outline: 0px solid transparent;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: cover;
+ color: #333333;
+ font-size:40px;
+}
+
+#editorjs[placeholder]:empty:not(:focus):before {
+ content: attr(placeholder);
+ font-size:40px;
+ color: #9b9b9b;
+}
+
+.note-checkbox:checked {
+ background: #F88805;
+ border: 2px solid #F88805;
+ outline: none;
+ margin-left:0px;
+ margin-right:0px;
+ opacity: 1;
+}
+
+.note-checkbox {
+ width: 23px;
+ height: 23px;
+ background-color: #ffffff;
+ border: 2px solid #555555;
+-webkit-border-radius: 50%;
+-webkit-appearance: none;
+-webkit-user-select: none;
+ border-radius: 50%;
+ font-size: 0.8rem;
+ margin-left:0px;
+ margin-top:10px;
+ margin-right:0px;
+ margin-bottom:0px;
+ outline: none;
+ padding: 0;
+ position: relative;
+ display: inline-block;
+-webkit-transition: background-color ease 0.1s;
+ transition: background-color ease 0.1s;
+ vertical-align: top;
+ cursor: default;
+ user-select: none;
+}
+
+.note-checkbox:checked+span{
+ text-decoration: line-through;
+ color:#F88805;
+ opacity: 0.4;
+}
diff --git a/product/tablet/src/main/resources/rawfile/rich_editor.js b/product/tablet/src/main/resources/rawfile/rich_editor.js
new file mode 100644
index 0000000..2828609
--- /dev/null
+++ b/product/tablet/src/main/resources/rawfile/rich_editor.js
@@ -0,0 +1,306 @@
+/**
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var RICH_EDITOR = {};
+
+RICH_EDITOR.editor = document.getElementById('editorjs');
+
+RICH_EDITOR.setHtml = function(contents) {
+ RICH_EDITOR.editor.innerHTML = decodeURIComponent(contents.replace(/\+/g, '%20'));
+}
+
+RICH_EDITOR.getHtml = function() {
+ return RICH_EDITOR.editor.innerHTML;
+}
+
+RICH_EDITOR.getText = function() {
+ console.log(RICH_EDITOR.editor.innerText);
+ return RICH_EDITOR.editor.innerText;
+}
+
+RICH_EDITOR.setBaseTextColor = function(color) {
+ RICH_EDITOR.editor.style.color = color;
+}
+
+RICH_EDITOR.setBaseFontSize = function(size) {
+ RICH_EDITOR.editor.style.fontSize = size;
+}
+
+RICH_EDITOR.undo = function() {
+ document.execCommand('undo', false, null);
+}
+
+RICH_EDITOR.redo = function() {
+ document.execCommand('redo', false, null);
+}
+
+RICH_EDITOR.setBold = function() {
+ document.execCommand('bold');
+}
+
+RICH_EDITOR.setItalic = function() {
+ document.execCommand('italic', false, null);
+}
+
+RICH_EDITOR.setSubscript = function() {
+ document.execCommand('subscript', false, null);
+}
+
+RICH_EDITOR.setSuperscript = function() {
+ document.execCommand('superscript', false, null);
+}
+
+RICH_EDITOR.setStrikeThrough = function() {
+ document.execCommand('strikeThrough', false, null);
+}
+
+RICH_EDITOR.setUnderline = function() {
+ document.execCommand('underline', false, null);
+}
+
+RICH_EDITOR.setNumbers = function () {
+ document.execCommand('insertOrderedList', false, null);
+ var selection, type;
+ if (window.getSelection) {
+ selection = getSelection();
+ }
+ if (selection) {
+ var range = selection.getRangeAt ? selection.getRangeAt(0) : selection.createRange();
+ try {
+ var child = range.commonAncestorContainer.parentNode;
+ for (var i = 0; i < 10; i++) {
+ if (child.nodeName == "OL") {
+ child.style["list-style"] = "decimal";
+ break;
+ }
+ if (child.parentNode) {
+ child = child.parentNode
+ }
+ }
+ } catch (err) {
+
+ }
+ }
+}
+
+RICH_EDITOR.setABC = function () {
+ document.execCommand('insertOrderedList', false, null);
+ var selection, type;
+ if (window.getSelection) {
+ selection = getSelection();
+ }
+ if (selection) {
+ var range = selection.getRangeAt ? selection.getRangeAt(0) : selection.createRange();
+ try {
+ var child = range.commonAncestorContainer.parentNode;
+ for (var i = 0; i < 10; i++) {
+ if (child.nodeName == "OL") {
+ child.style["list-style"] = "lower-alpha";
+ break;
+ }
+ if (child.parentNode) {
+ child = child.parentNode
+ }
+ }
+ } catch (err) {
+
+ }
+ }
+}
+
+RICH_EDITOR.setBullets = function () {
+ document.execCommand('insertUnorderedList', false, null);
+ var selection, type;
+ if (window.getSelection) {
+ selection = getSelection();
+ }
+ if (selection) {
+ var range = selection.getRangeAt ? selection.getRangeAt(0) : selection.createRange();
+ try {
+ var child = range.commonAncestorContainer.parentNode;
+ for (var i = 0; i < 10; i++) {
+ if (child.nodeName == "UL") {
+ child.style["list-style"] = "disc";
+ break;
+ }
+ if (child.parentNode) {
+ child = child.parentNode
+ }
+ }
+ } catch (err) {
+
+ }
+ }
+}
+
+RICH_EDITOR.setSquare = function () {
+ document.execCommand('insertUnorderedList', false, null);
+ var selection, type;
+ if (window.getSelection) {
+ selection = getSelection();
+ }
+ if (selection) {
+ var range = selection.getRangeAt ? selection.getRangeAt(0) : selection.createRange();
+ try {
+ var child = range.commonAncestorContainer.parentNode;
+ for (var i = 0; i < 10; i++) {
+ if (child.nodeName == "UL") {
+ child.style["list-style"] = "square";
+ break;
+ }
+ if (child.parentNode) {
+ child = child.parentNode
+ }
+ }
+ } catch (err) {
+
+ }
+ }
+}
+
+RICH_EDITOR.setTextColor = function (color) {
+ document.execCommand('foreColor', false, color);
+}
+
+RICH_EDITOR.setTextBackgroundColor = function(color) {
+ RICH_EDITOR.restorerange();
+ document.execCommand("styleWithCSS", null, true);
+ document.execCommand('hiliteColor', false, color);
+ document.execCommand("styleWithCSS", null, false);
+}
+
+RICH_EDITOR.setFontSize = function(fontSize){
+ document.execCommand("fontSize", false, fontSize);
+}
+
+RICH_EDITOR.execFontSize = function (size, unit) {
+ document.execCommand("fontSize", false, "7");
+ var fontElements = window.getSelection().anchorNode.parentNode
+ fontElements.removeAttribute("size");
+ fontElements.style.fontSize = size + 'px'
+};
+
+RICH_EDITOR.setHeading = function(heading) {
+ document.execCommand('formatBlock', false, '');
+}
+
+RICH_EDITOR.setIndent = function() {
+ document.execCommand('indent', false, null);
+}
+
+RICH_EDITOR.setOutdent = function() {
+ document.execCommand('outdent', false, null);
+}
+
+RICH_EDITOR.setJustifyLeft = function() {
+ document.execCommand('justifyLeft', false, null);
+}
+
+RICH_EDITOR.setJustifyCenter = function() {
+ document.execCommand('justifyCenter', false, null);
+}
+
+RICH_EDITOR.setJustifyRight = function() {
+ document.execCommand('justifyRight', false, null);
+}
+
+RICH_EDITOR.setBlockquote = function() {
+ document.execCommand('formatBlock', false, '');
+}
+
+RICH_EDITOR.insertImage = function() {
+ var url = './shuxue.png';
+ var html = '
';
+ RICH_EDITOR.insertHTML(html);
+ RICH_EDITOR.editor.scrollIntoView(false)
+}
+
+RICH_EDITOR.insertHTML = function(html) {
+ RICH_EDITOR.restorerange();
+ document.execCommand('insertHTML', false, html);
+}
+
+RICH_EDITOR.setDone = function() {
+ var html = ' ';
+ document.execCommand('insertHTML', false, html);
+}
+
+RICH_EDITOR.addTodo=function(e){
+ KEY_ENTER=13;
+ if(e.which == KEY_ENTER){
+ var node=RICH_EDITOR.getSelectedAnchorNode();
+ if(node&&node.nodeName=="#text"){
+ node=node.parentElement;
+ }
+ if(node&&node.nodeName=="SPAN"&&node.previousElementSibling&&node.previousElementSibling.className=='note-checkbox'){
+ RICH_EDITOR.setTodo();
+ e.preventDefault();
+ }
+ }
+}
+
+RICH_EDITOR.setTodo = function () {
+ var parent = document.getElementById('editorjs')
+ var isContentEmpty = parent.innerHTML.trim().length == 0 || parent.innerHTML == '
';
+ var html = (isContentEmpty ? '' : '
') + ' ';
+ document.execCommand('insertHTML', false, html);
+}
+
+function onCheckChange(checkbox) {
+ if (checkbox.checked == true) {
+ checkbox.setAttribute("checked", "checked");
+ } else {
+ checkbox.removeAttribute("checked");
+ }
+}
+
+RICH_EDITOR.restorerange = function(){
+ var selection = window.getSelection();
+ selection.removeAllRanges();
+ var range = document.createRange();
+ range.setStart(RICH_EDITOR.currentSelection.startContainer, RICH_EDITOR.currentSelection.startOffset);
+ range.setEnd(RICH_EDITOR.currentSelection.endContainer, RICH_EDITOR.currentSelection.endOffset);
+ selection.addRange(range);
+}
+
+//获取光标开始位置归属节点
+RICH_EDITOR.getSelectedAnchorNode=function(){
+ var node,selection;
+ if (window.getSelection) {
+ selection = getSelection();
+ node = selection.anchorNode;
+ }
+ if (!node && document.selection) {
+ selection = document.selection
+ var range = selection.getRangeAt ? selection.getRangeAt(0) : selection.createRange();
+ node = range.commonAncestorContainer ? range.commonAncestorContainer :
+ range.parentElement ? range.parentElement() : range.item(0);
+ }
+ return node;
+}
+
+function get_html_content() {
+ console.log('hhh Ark WebComponent');
+ var htmlString = encodeURI(RICH_EDITOR.getHtml())
+ var str = callBackToApp.callbackhtml(htmlString)
+ console.log('hhh objName.test result:' + str);
+}
+
+function save_html_content() {
+ console.log('hhh Ark WebComponent');
+ var htmlString = encodeURI(RICH_EDITOR.getHtml())
+ var str = callBackToApp.callbackhtmlSave(htmlString)
+ console.log('hhh objName.test result:' + str);
+}
\ No newline at end of file
diff --git a/product/tablet/src/main/resources/rawfile/text_format_manager.js b/product/tablet/src/main/resources/rawfile/text_format_manager.js
deleted file mode 100644
index bf39392..0000000
--- a/product/tablet/src/main/resources/rawfile/text_format_manager.js
+++ /dev/null
@@ -1,344 +0,0 @@
-/**
- * Copyright (c) 2021 Huawei Device Co., Ltd.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var mNeedToUpdateToolbarState = false;
-
-function command(name) {
- document.execCommand(name);
-}
-
-function setFontSize(value) {
- console.log("setFontSize() value : " + value);
- document.execCommand("fontSize", false, value);
-}
-
-/** Font size change feature */
-function getFontSize() {
- var fontSize = document.queryCommandValue('fontSize');
- console.log("get current fontSize : " + fontSize);
- fontSize = getSupportedFontSize(fontSize);
- return fontSize;
-}
-
-function getSupportedFontSize(fontSize) {
- var result = 16;
- switch (parseInt(fontSize)) {
- case 1:
- result = 12;
- break;
- case 2:
- result = 14;
- break;
- case 3:
- result = 16;
- break;
- case 4:
- result = 18;
- break;
- case 5:
- result = 20;
- break;
- case 6:
- result = 22;
- break;
- default:
- break;
- }
- console.log("get supported fontSize : " + result);
- return result;
-}
-
-function setForeColor(value) {
- console.log("setForeColor() value : " + value);
- document.execCommand("foreColor", false, value);
-}
-
-function getFontColor() {
- var fontColor = document.queryCommandValue('foreColor');
- console.log("get current fontColor : " + fontColor);
- return fontColor;
-}
-
-function updateRichTextState() {
- var result = 0x0;
- var boldState = getCurrentBoldState();
- result |= boldState;
-
- var italicState = getCurrentItalicState();
- result |= italicState;
-
- var underlineState = getCurrentUnderlineState();
- result |= underlineState;
-
- var orderedListState = getCurrentOrderedListState();
- result |= orderedListState;
-
- var unorderedListState = getCurrentUnorderedListState();
- result |= unorderedListState;
-
- var alignLeftState = getCurrentAlignLeftState();
- result |= alignLeftState;
-
- var alignCenterState = getCurrentAlignCenterState();
- result |= alignCenterState;
-
- var alignRightState = getCurrentAlignRightState();
- result |= alignRightState;
-
- // font size
- var fontSize = getFontSize();
-
- // font color
- var foreColor = getFontColor();
-
- var undoState = getCurrentUndoState();
- result |= undoState;
-
- var redoState = getCurrentRedoState();
- result |= redoState;
-
- if (window.updateRichEditStateFinished && window.updateRichEditStateFinished.call) {
- updateRichEditStateFinished.call(result + "&" + fontSize + "&" + foreColor);
- }
-}
-
-function getCurrentUndoState() {
- var undoState = 0x0;
- var canUndo = document.queryCommandEnabled("undo");
- if (canUndo == true) {
- undoState |= 0x400;
- }
- return undoState;
-}
-
-function getCurrentRedoState() {
- var redoState = 0x0;
- var canRedo = document.queryCommandEnabled("redo");
- if (canRedo == true) {
- redoState |= 0x800;
- }
- return redoState;
-}
-
-function getCurrentAlignLeftState() {
- var alignLeftState = 0x0;
- var state = document.queryCommandState("justifyLeft");
- var indeterm = document.queryCommandIndeterm("justifyLeft");
- if (state == true) {
- alignLeftState |= 0x1000;
- } else if (state == false) {
- if (indeterm == true) {
- alignLeftState |= 0x2000;
- } else {
- alignLeftState |= 0x0;
- }
- } else if (state == null) {
- alignLeftState |= 0x0;
- }
- return alignLeftState;
-}
-
-function getCurrentAlignCenterState() {
- var alignCenterState = 0x0;
- var state = document.queryCommandState("justifyCenter");
- var indeterm = document.queryCommandIndeterm("justifyCenter");
- if (state == true) {
- alignCenterState |= 0x4000;
- } else if (state == false) {
- if (indeterm == true) {
- alignCenterState |= 0x8000;
- } else {
- alignCenterState |= 0x0;
- }
- } else if (state == null) {
- alignCenterState |= 0x0;
- }
- return alignCenterState;
-}
-
-function getCurrentAlignRightState() {
- var alignRightState = 0x0;
- var state = document.queryCommandState("justifyRight");
- var indeterm = document.queryCommandIndeterm("justifyRight");
- if (state == true) {
- alignRightState |= 0x10000;
- } else if (state == false) {
- if (indeterm == true) {
- alignRightState |= 0x20000;
- } else {
- alignRightState |= 0x0;
- }
- } else if (state == null) {
- alignRightState |= 0x0;
- }
- return alignRightState;
-}
-
-function getCurrentOrderedListState() {
- var orderedListState = 0x0;
- var state = document.queryCommandState("insertOrderedList");
- var indeterm = document.queryCommandIndeterm("insertOrderedList");
-
- var selection, type;
- if (window.getSelection) {
- selection = getSelection();
- }
- if (selection) {
- var range = selection.getRangeAt ? selection.getRangeAt(0) : selection.createRange();
- try {
- var child = range.commonAncestorContainer.parentNode;
- for (var i = 0; i < 10; i++) {
- if (child.nodeName == "OL") {
- type = child.style["list-style"];
- break;
- }
- if (child.parentNode) {
- child = child.parentNode
- }
- }
- } catch (err) {
-
- }
- }
- if (state == true) {
- if (type == "lower-alpha") {
- orderedListState |= 0x40000;
- } else {
- orderedListState |= 0x40;
- }
- } else if (state == false) {
- if (indeterm == true) {
- orderedListState |= 0x80;
- } else {
- orderedListState |= 0x0;
- }
- } else if (state == null) {
- orderedListState |= 0x0;
- }
- return orderedListState;
-}
-
-function getCurrentUnorderedListState() {
- var unorderedListState = 0x0;
- var state = document.queryCommandState("insertUnorderedList");
- var indeterm = document.queryCommandIndeterm("insertUnorderedList");
-
- var selection, type;
- if (window.getSelection) {
- selection = getSelection();
- }
- if (selection) {
- var range = selection.getRangeAt ? selection.getRangeAt(0) : selection.createRange();
- try {
- var child = range.commonAncestorContainer.parentNode;
- for (var i = 0; i < 10; i++) {
- if (child.nodeName == "UL") {
- type = child.style["list-style"];
- break;
- }
- if (child.parentNode) {
- child = child.parentNode
- }
- }
- } catch (err) {
-
- }
- }
- if (state == true) {
- if (type == "square") {
- unorderedListState |= 0x100000;
- } else {
- unorderedListState |= 0x100;
- }
- } else if (state == false) {
- if (indeterm == true) {
- unorderedListState |= 0x200;
- } else {
- unorderedListState |= 0x0;
- }
- } else if (state == null) {
- unorderedListState |= 0x0;
- }
- return unorderedListState;
-}
-
-function getCurrentUnderlineState() {
- var underlineState = 0x0;
- var state = document.queryCommandState("underline");
- var indeterm = document.queryCommandIndeterm("underline");
- if (state == true) {
- underlineState |= 0x10;
- } else if (state == false) {
- if (indeterm == true) {
- underlineState |= 0x20;
- } else {
- underlineState |= 0x0;
- }
- } else if (state == null) {
- underlineState |= 0x0;
- }
- return underlineState;
-}
-
-function getCurrentItalicState() {
- var italicState = 0x0;
- var state = document.queryCommandState("italic");
- var indeterm = document.queryCommandIndeterm("italic");
- if (state == true) {
- italicState |= 0x4;
- } else if (state == false) {
- if (indeterm == true) {
- italicState |= 0x8;
- } else {
- italicState |= 0x0;
- }
- } else if (state == null) {
- italicState |= 0x0;
- }
- return italicState;
-}
-
-function getCurrentBoldState() {
- var boldState = 0x0;
- var state = document.queryCommandState("bold");
- var indeterm = document.queryCommandIndeterm("bold");
- if (state == true) {
- boldState |= 0x1;
- } else if (state == false) {
- if (indeterm == true) {
- boldState |= 0x2;
- } else {
- boldState |= 0x0;
- }
- } else if (state == null) {
- boldState |= 0x0;
- }
- return boldState;
-}
-
-function onSelectionChanged(event) {
- switch (event.type) {
- case "selectstart":
- mNeedToUpdateToolbarState = true;
- break;
- case "selectionchange":
- {
- if (mNeedToUpdateToolbarState) {
- updateRichTextState();
- }
- }
- break;
- }
-}
\ No newline at end of file