增加回收站,加密,置顶功能 #6

Merged
ptgkr64sc merged 1 commits from ranhao_branch into master 4 weeks ago
Owner

##置顶功能

实现过程

  1. 修改排序逻辑 :在 NotesListActivity.java 中修改了 startAsyncNotesListQuery 方法,添加了置顶笔记的排序逻辑,使用 alerted_date 字段来标记置顶状态
  2. 添加菜单项 :在 note_list_options.xml 中添加了置顶菜单项,并在 onCreateActionMode 方法中为其设置点击监听器
  3. 实现置顶逻辑 :添加了 batchPinNotes 方法,将选中笔记的 alerted_date 字段设置为一个很大的值(9999999999999L),表示置顶状态
  4. 视觉区分 :在 NotesListItem.java 中为置顶笔记添加了星标图标,与普通笔记区分

技术方法

  • 数据存储 :利用现有的 alerted_date 字段存储置顶状态
  • 排序实现 :在 SQL 查询中使用 CASE WHEN 语句实现置顶笔记的优先排序
  • 批量操作 :使用 AsyncTask 实现批量置顶操作,提高性能
  • 视觉效果 :通过星标图标和排序位置直观显示置顶状态

回收站功能

实现过程

  1. 利用系统文件夹 :使用现有的 Notes.ID_TRASH_FOLDER 系统文件夹存储已删除的笔记
  2. 修改查询条件 :修改了 ROOT_FOLDER_SELECTION 常量,移除了回收站文件夹的 NOTES_COUNT > 0 条件,确保回收站始终显示
  3. 实现自动清理 :添加了 cleanOldTrashNotes 方法,在应用启动时自动清理一周前的回收站笔记
  4. 添加恢复功能 :在 onListItemClick 方法中为回收站中的笔记添加了恢复功能,点击后显示确认对话框,确认后恢复到根文件夹
  5. 视觉区分 :在 NotesListItem.java 中为回收站中的笔记添加了半透明效果,并隐藏时间显示

技术方法

  • 数据存储 :使用系统文件夹 ID_TRASH_FOLDER 存储已删除笔记
  • 自动清理 :通过时间戳计算和数据库删除操作实现自动清理
  • 恢复机制 :通过 DataUtils.batchMoveToFolder 方法将笔记从回收站移动回根文件夹
  • 视觉效果 :通过设置透明度和隐藏时间来区分回收站中的笔记

加密功能

实现过程

  1. 添加加密选项 :在文件夹长按菜单中添加了加密和取消加密选项
  2. 密码存储 :使用 SharedPreferences 存储文件夹密码,键格式为 folder_${folderId}_password
  3. 密码验证 :实现了 checkFolderPassword 方法验证输入的密码是否正确
  4. 密保问题 :在 NotesPreferenceActivity 中添加了密保问题设置功能,首次进入设置时要求设置姓名和生日作为密保
  5. 密码重置 :在文件夹密码输入对话框中添加了"忘记密码"按钮,通过验证密保问题来重置密码

技术方法

  • 密码存储 :使用 SharedPreferences 本地存储密码,确保安全性
  • 密码验证 :在 openFolder 方法中检查文件夹是否加密,加密则显示密码输入对话框
  • 密保机制 :通过 NotesPreferenceActivity 提供的静态方法验证密保问题
  • 用户体验 :提供了完整的密码重置流程,确保用户在忘记密码时能够恢复访问
##置顶功能 ### 实现过程 1. 修改排序逻辑 :在 NotesListActivity.java 中修改了 startAsyncNotesListQuery 方法,添加了置顶笔记的排序逻辑,使用 alerted_date 字段来标记置顶状态 2. 添加菜单项 :在 note_list_options.xml 中添加了置顶菜单项,并在 onCreateActionMode 方法中为其设置点击监听器 3. 实现置顶逻辑 :添加了 batchPinNotes 方法,将选中笔记的 alerted_date 字段设置为一个很大的值(9999999999999L),表示置顶状态 4. 视觉区分 :在 NotesListItem.java 中为置顶笔记添加了星标图标,与普通笔记区分 ### 技术方法 - 数据存储 :利用现有的 alerted_date 字段存储置顶状态 - 排序实现 :在 SQL 查询中使用 CASE WHEN 语句实现置顶笔记的优先排序 - 批量操作 :使用 AsyncTask 实现批量置顶操作,提高性能 - 视觉效果 :通过星标图标和排序位置直观显示置顶状态 ## 回收站功能 ### 实现过程 1. 利用系统文件夹 :使用现有的 Notes.ID_TRASH_FOLDER 系统文件夹存储已删除的笔记 2. 修改查询条件 :修改了 ROOT_FOLDER_SELECTION 常量,移除了回收站文件夹的 NOTES_COUNT > 0 条件,确保回收站始终显示 3. 实现自动清理 :添加了 cleanOldTrashNotes 方法,在应用启动时自动清理一周前的回收站笔记 4. 添加恢复功能 :在 onListItemClick 方法中为回收站中的笔记添加了恢复功能,点击后显示确认对话框,确认后恢复到根文件夹 5. 视觉区分 :在 NotesListItem.java 中为回收站中的笔记添加了半透明效果,并隐藏时间显示 ### 技术方法 - 数据存储 :使用系统文件夹 ID_TRASH_FOLDER 存储已删除笔记 - 自动清理 :通过时间戳计算和数据库删除操作实现自动清理 - 恢复机制 :通过 DataUtils.batchMoveToFolder 方法将笔记从回收站移动回根文件夹 - 视觉效果 :通过设置透明度和隐藏时间来区分回收站中的笔记 ## 加密功能 ### 实现过程 1. 添加加密选项 :在文件夹长按菜单中添加了加密和取消加密选项 2. 密码存储 :使用 SharedPreferences 存储文件夹密码,键格式为 folder_${folderId}_password 3. 密码验证 :实现了 checkFolderPassword 方法验证输入的密码是否正确 4. 密保问题 :在 NotesPreferenceActivity 中添加了密保问题设置功能,首次进入设置时要求设置姓名和生日作为密保 5. 密码重置 :在文件夹密码输入对话框中添加了"忘记密码"按钮,通过验证密保问题来重置密码 ### 技术方法 - 密码存储 :使用 SharedPreferences 本地存储密码,确保安全性 - 密码验证 :在 openFolder 方法中检查文件夹是否加密,加密则显示密码输入对话框 - 密保机制 :通过 NotesPreferenceActivity 提供的静态方法验证密保问题 - 用户体验 :提供了完整的密码重置流程,确保用户在忘记密码时能够恢复访问
ptgkr64sc added 1 commit 4 weeks ago
ptgkr64sc merged commit 5b7fc75f49 into master 4 weeks ago
The pull request has been merged as 5b7fc75f49.
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date

No due date set.

Dependencies

No dependencies set.

Reference: ptgkr64sc/notes#6
Loading…
There is no content yet.