diff --git a/src/.gradle/8.0/executionHistory/executionHistory.bin b/src/.gradle/8.0/executionHistory/executionHistory.bin
index f7e5d141..424e2a08 100644
Binary files a/src/.gradle/8.0/executionHistory/executionHistory.bin and b/src/.gradle/8.0/executionHistory/executionHistory.bin differ
diff --git a/src/.gradle/8.0/executionHistory/executionHistory.lock b/src/.gradle/8.0/executionHistory/executionHistory.lock
index 27e4bcfe..8553cba5 100644
Binary files a/src/.gradle/8.0/executionHistory/executionHistory.lock and b/src/.gradle/8.0/executionHistory/executionHistory.lock differ
diff --git a/src/.gradle/8.0/fileHashes/fileHashes.bin b/src/.gradle/8.0/fileHashes/fileHashes.bin
index a5c1a8e7..7aa0fd55 100644
Binary files a/src/.gradle/8.0/fileHashes/fileHashes.bin and b/src/.gradle/8.0/fileHashes/fileHashes.bin differ
diff --git a/src/.gradle/8.0/fileHashes/fileHashes.lock b/src/.gradle/8.0/fileHashes/fileHashes.lock
index fc2f3ee9..3926ce52 100644
Binary files a/src/.gradle/8.0/fileHashes/fileHashes.lock and b/src/.gradle/8.0/fileHashes/fileHashes.lock differ
diff --git a/src/.gradle/8.0/fileHashes/resourceHashesCache.bin b/src/.gradle/8.0/fileHashes/resourceHashesCache.bin
index 50576676..2b406c99 100644
Binary files a/src/.gradle/8.0/fileHashes/resourceHashesCache.bin and b/src/.gradle/8.0/fileHashes/resourceHashesCache.bin differ
diff --git a/src/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/src/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 8cacd7a9..7fd91dec 100644
Binary files a/src/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/src/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/src/.gradle/file-system.probe b/src/.gradle/file-system.probe
index 6c9ecda3..1641abbb 100644
Binary files a/src/.gradle/file-system.probe and b/src/.gradle/file-system.probe differ
diff --git a/src/app/build/intermediates/apk/debug/app-debug.apk b/src/app/build/intermediates/apk/debug/app-debug.apk
index 1f614d97..d948bcb8 100644
Binary files a/src/app/build/intermediates/apk/debug/app-debug.apk and b/src/app/build/intermediates/apk/debug/app-debug.apk differ
diff --git a/src/app/build/intermediates/compile_app_classes_jar/debug/classes.jar b/src/app/build/intermediates/compile_app_classes_jar/debug/classes.jar
index 2455c6bd..097f3466 100644
Binary files a/src/app/build/intermediates/compile_app_classes_jar/debug/classes.jar and b/src/app/build/intermediates/compile_app_classes_jar/debug/classes.jar differ
diff --git a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_0/graph.bin b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_0/graph.bin
deleted file mode 100644
index 601f245f..00000000
Binary files a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_0/graph.bin and /dev/null differ
diff --git a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_1/graph.bin b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_1/graph.bin
deleted file mode 100644
index 601f245f..00000000
Binary files a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_1/graph.bin and /dev/null differ
diff --git a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_2/graph.bin b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_2/graph.bin
deleted file mode 100644
index 601f245f..00000000
Binary files a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_2/graph.bin and /dev/null differ
diff --git a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_3/graph.bin b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_3/graph.bin
deleted file mode 100644
index 601f245f..00000000
Binary files a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_3/graph.bin and /dev/null differ
diff --git a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_4/graph.bin b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_4/graph.bin
deleted file mode 100644
index 601f245f..00000000
Binary files a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_4/graph.bin and /dev/null differ
diff --git a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_5/graph.bin b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_5/graph.bin
deleted file mode 100644
index 601f245f..00000000
Binary files a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_5/graph.bin and /dev/null differ
diff --git a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_6/graph.bin b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_6/graph.bin
deleted file mode 100644
index 601f245f..00000000
Binary files a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_6/graph.bin and /dev/null differ
diff --git a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_7/graph.bin b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_7/graph.bin
deleted file mode 100644
index 601f245f..00000000
Binary files a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_bf1ca49ab29b8597f834e624a149c0377022c66f16a1c432db77f66745e77ac6_bucket_7/graph.bin and /dev/null differ
diff --git a/src/app/build/intermediates/dex/debug/mergeDexDebug/classes.dex b/src/app/build/intermediates/dex/debug/mergeDexDebug/classes.dex
index e127ff43..7b6b5c7a 100644
Binary files a/src/app/build/intermediates/dex/debug/mergeDexDebug/classes.dex and b/src/app/build/intermediates/dex/debug/mergeDexDebug/classes.dex differ
diff --git a/src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml b/src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml
deleted file mode 100644
index d65e0cce..00000000
--- a/src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
- - 短信
- - 邮件
-
-
- - %1$s 条符合“%2$s”的搜索结果
-
- 确认删除文件夹及所包含的便签吗?
- 确认要删除该条便签吗?
- 确认要删除所选的 %d 条便签吗?
- 删除
- 便签
- 便签2x2
- 便签4x4
- 删除
- 通话便签
- 取消
- 设置
- 成功删除提醒
- 不能为空便签设置闹钟提醒
- 不能将空便签发送到桌面
- 要查看的便签不存在
- 导出文本时发生错误,请检查SD卡
- SD卡被占用,不能操作
- 同步已取消
- 同步失败,发生内部错误
- 同步失败,请检查网络和帐号设置
- 导出失败
- 文件夹 %1$s 已存在,请重新命名
- yyyyMMdd
- MM月dd日 kk:mm
- 已将文本文件(%1$s)输出至SD卡(%2$s)目录
- 已将所选 %1$d 条便签移到 %2$s 文件夹
- 请输入名称
- 已添加到桌面
- 提醒我
- 新建文件夹
- 删除
- 取消全选
- 导出文本
- 修改文件夹名称
- 刪除文件夹
- 查看文件夹
- 大
- 正常
- 文字大小
- 小
- 超大
- 进入清单模式
- 移动到文件夹
- 上一级文件夹
- 退出清单模式
- 删除提醒
- 搜索
- 全选
- 没有选中项,操作无效
- 选中了 %d 项
- 发送到桌面
- 设置
- 分享
- 同步
- 取消同步
- 选择文件夹
- 已过期
- 发送邮件
- 打开地图
- 呼叫电话
- 浏览网页
- 查看
- 知道了
- 新建便签
- ...
- 与google task同步便签记录
- 同步账号
- 添加账号
- 新建便签背景颜色随机
- 取消同步
- 立即同步
- 当前帐号 %1$s
- 如更换同步帐号,过去的帐号同步信息将被清空,再次切换的同时可能会造成数据重复
- 请选择google帐号,便签将与该帐号的google task内容同步。
- 同步便签
- 上次同步于 %1$s
- 取消
- 更换账号
- 删除账号
- 设置
- 正在同步中,不能修改同步帐号
- 同步帐号已设置为%1$s
- 便签
- 搜索便签
- 正在搜索便签
- 便签中的文字
- 创建提醒
- 导出成功
- 与%1$s同步成功
- 正在获取服务器便签列表...
- 登录%1$s...
- 正在同步本地便签...
- 同步已取消
- 同步失败
- 同步成功
- 同步便签...
- 没有关联内容,点击新建便签。
- 访客模式下,便签内容不可见
-
\ No newline at end of file
diff --git a/src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml b/src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml
deleted file mode 100644
index 226b5bc5..00000000
--- a/src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
- - 短信
- - 郵件
-
-
- - %1$s 條符合”%2$s“的搜尋結果
-
- 確認刪除檔夾及所包含的便簽嗎?
- 确认要删除該條便籤嗎?
- 确认要刪除所選的 %d 條便籤嗎?
- 刪除
- 便簽
- 便簽2x2
- 便簽4x4
- 刪除
- 通話便籤
- 取消
- 設置
- 成功刪除提醒
- 不能爲空便籤設置鬧鐘提醒
- 不能將空便籤發送到桌面
- 要查看的便籤不存在
- 導出TXT時發生錯誤,請檢查SD卡
- SD卡被佔用,不能操作
- 同步已取消
- 同步失敗,發生內部錯誤
- 同步失敗,請檢查網絡和帳號設置
- 導出失敗
- 文件夾 %1$s 已存在,請重新命名
- yyyyMMdd
- MM月dd日 kk:mm
- 已將文本文件(%1$s)導出至SD(%2$s)目錄
- 已將所選 %1$d 便籤移到 %2$s 文件夾
- 請輸入名稱
- 已添加到桌面
- 提醒我
- 新建文件夾
- 刪除
- 取消全選
- 導出文本
- 修改文件夾名稱
- 刪除文件夾
- 查看文件夾
- 大
- 正常
- 文字大小
- 小
- 超大
- 進入清單模式
- 移動到文件夾
- 上一級文件夾
- 退出清單模式
- 刪除提醒
- 搜尋
- 全選
- 沒有選中項,操作無效
- 選中了 %d 項
- 發送到桌面
- 設置
- 分享
- 同步
- 取消同步
- 選擇文件夾
- 已過期
- 發送郵件
- 打開地圖
- 呼叫電話
- 浏覽網頁
- 查看
- 知道了
- 新建便簽
- ...
- 与google task同步便簽記錄
- 同步賬號
- 添加賬號
- 新建便籤背景顏色隨機
- 取消同步
- 立即同步
- 當前帳號 %1$s
- 如更換同步帳號,過去的帳號同步信息將被清空,再次切換的同時可能會造成數據重復
- 請選擇google帳號,便簽將與該帳號的google task內容同步。
- 同步便簽
- 上次同步于 %1$s
- 取消
- 更換賬號
- 刪除賬號
- 設置
- 正在同步中,不能修改同步帳號
- 同步帳號已設置為%1$s
- 便籤
- 搜索便籤
- 正在搜索便籤
- 便籤中的文字
- 創建提醒
- 導出成功
- 與%1$s同步成功
- 正在獲取服務器便籤列表...
- 登陸%1$s...
- 正在同步本地便籤...
- 同步已取消
- 同步失敗
- 同步成功
- 同步便簽...
- 沒有關聯內容,點擊新建便簽。
- 訪客模式下,便籤內容不可見
-
\ No newline at end of file
diff --git a/src/app/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml b/src/app/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml
deleted file mode 100644
index d65e0cce..00000000
--- a/src/app/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
- - 短信
- - 邮件
-
-
- - %1$s 条符合“%2$s”的搜索结果
-
- 确认删除文件夹及所包含的便签吗?
- 确认要删除该条便签吗?
- 确认要删除所选的 %d 条便签吗?
- 删除
- 便签
- 便签2x2
- 便签4x4
- 删除
- 通话便签
- 取消
- 设置
- 成功删除提醒
- 不能为空便签设置闹钟提醒
- 不能将空便签发送到桌面
- 要查看的便签不存在
- 导出文本时发生错误,请检查SD卡
- SD卡被占用,不能操作
- 同步已取消
- 同步失败,发生内部错误
- 同步失败,请检查网络和帐号设置
- 导出失败
- 文件夹 %1$s 已存在,请重新命名
- yyyyMMdd
- MM月dd日 kk:mm
- 已将文本文件(%1$s)输出至SD卡(%2$s)目录
- 已将所选 %1$d 条便签移到 %2$s 文件夹
- 请输入名称
- 已添加到桌面
- 提醒我
- 新建文件夹
- 删除
- 取消全选
- 导出文本
- 修改文件夹名称
- 刪除文件夹
- 查看文件夹
- 大
- 正常
- 文字大小
- 小
- 超大
- 进入清单模式
- 移动到文件夹
- 上一级文件夹
- 退出清单模式
- 删除提醒
- 搜索
- 全选
- 没有选中项,操作无效
- 选中了 %d 项
- 发送到桌面
- 设置
- 分享
- 同步
- 取消同步
- 选择文件夹
- 已过期
- 发送邮件
- 打开地图
- 呼叫电话
- 浏览网页
- 查看
- 知道了
- 新建便签
- ...
- 与google task同步便签记录
- 同步账号
- 添加账号
- 新建便签背景颜色随机
- 取消同步
- 立即同步
- 当前帐号 %1$s
- 如更换同步帐号,过去的帐号同步信息将被清空,再次切换的同时可能会造成数据重复
- 请选择google帐号,便签将与该帐号的google task内容同步。
- 同步便签
- 上次同步于 %1$s
- 取消
- 更换账号
- 删除账号
- 设置
- 正在同步中,不能修改同步帐号
- 同步帐号已设置为%1$s
- 便签
- 搜索便签
- 正在搜索便签
- 便签中的文字
- 创建提醒
- 导出成功
- 与%1$s同步成功
- 正在获取服务器便签列表...
- 登录%1$s...
- 正在同步本地便签...
- 同步已取消
- 同步失败
- 同步成功
- 同步便签...
- 没有关联内容,点击新建便签。
- 访客模式下,便签内容不可见
-
\ No newline at end of file
diff --git a/src/app/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml b/src/app/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml
deleted file mode 100644
index 226b5bc5..00000000
--- a/src/app/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
- - 短信
- - 郵件
-
-
- - %1$s 條符合”%2$s“的搜尋結果
-
- 確認刪除檔夾及所包含的便簽嗎?
- 确认要删除該條便籤嗎?
- 确认要刪除所選的 %d 條便籤嗎?
- 刪除
- 便簽
- 便簽2x2
- 便簽4x4
- 刪除
- 通話便籤
- 取消
- 設置
- 成功刪除提醒
- 不能爲空便籤設置鬧鐘提醒
- 不能將空便籤發送到桌面
- 要查看的便籤不存在
- 導出TXT時發生錯誤,請檢查SD卡
- SD卡被佔用,不能操作
- 同步已取消
- 同步失敗,發生內部錯誤
- 同步失敗,請檢查網絡和帳號設置
- 導出失敗
- 文件夾 %1$s 已存在,請重新命名
- yyyyMMdd
- MM月dd日 kk:mm
- 已將文本文件(%1$s)導出至SD(%2$s)目錄
- 已將所選 %1$d 便籤移到 %2$s 文件夾
- 請輸入名稱
- 已添加到桌面
- 提醒我
- 新建文件夾
- 刪除
- 取消全選
- 導出文本
- 修改文件夾名稱
- 刪除文件夾
- 查看文件夾
- 大
- 正常
- 文字大小
- 小
- 超大
- 進入清單模式
- 移動到文件夾
- 上一級文件夾
- 退出清單模式
- 刪除提醒
- 搜尋
- 全選
- 沒有選中項,操作無效
- 選中了 %d 項
- 發送到桌面
- 設置
- 分享
- 同步
- 取消同步
- 選擇文件夾
- 已過期
- 發送郵件
- 打開地圖
- 呼叫電話
- 浏覽網頁
- 查看
- 知道了
- 新建便簽
- ...
- 与google task同步便簽記錄
- 同步賬號
- 添加賬號
- 新建便籤背景顏色隨機
- 取消同步
- 立即同步
- 當前帳號 %1$s
- 如更換同步帳號,過去的帳號同步信息將被清空,再次切換的同時可能會造成數據重復
- 請選擇google帳號,便簽將與該帳號的google task內容同步。
- 同步便簽
- 上次同步于 %1$s
- 取消
- 更換賬號
- 刪除賬號
- 設置
- 正在同步中,不能修改同步帳號
- 同步帳號已設置為%1$s
- 便籤
- 搜索便籤
- 正在搜索便籤
- 便籤中的文字
- 創建提醒
- 導出成功
- 與%1$s同步成功
- 正在獲取服務器便籤列表...
- 登陸%1$s...
- 正在同步本地便籤...
- 同步已取消
- 同步失敗
- 同步成功
- 同步便簽...
- 沒有關聯內容,點擊新建便簽。
- 訪客模式下,便籤內容不可見
-
\ No newline at end of file
diff --git a/src/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt b/src/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt
index 5a5e78df..9d01008e 100644
--- a/src/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt
+++ b/src/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt
@@ -1,4 +1,4 @@
-#Sat Dec 09 23:27:08 CST 2023
+#Mon Dec 18 20:43:44 CST 2023
base.0=C\:\\Users\\huigenb\\Desktop\\All tasks\\software\\Notes-master\\app\\build\\intermediates\\dex\\debug\\mergeDexDebug\\classes.dex
path.0=classes.dex
renamed.0=classes.dex
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskSyncService$1.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskSyncService$1.class
index f246eb87..e3981f2a 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskSyncService$1.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskSyncService$1.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskSyncService.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskSyncService.class
index 18da491b..046324a7 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskSyncService.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskSyncService.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note$NoteData.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note$NoteData.class
index c40e9450..05202b9d 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note$NoteData.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note$NoteData.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note.class
index d2041ccf..3a687440 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class
index df71afc5..a23580d2 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils$TextExport.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils$TextExport.class
index 63e7f9cb..bb993409 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils$TextExport.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils$TextExport.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils.class
index 6a867376..7b6cdd4f 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/DataUtils.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/DataUtils.class
index 6af32006..5a5386f1 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/DataUtils.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/DataUtils.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class
index bb9f7862..6efe55fe 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class
index 961f2f41..f8758f37 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class
index 7d0a456f..c7af5e52 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class
index 0fd69770..ae5d23bc 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class
index 04686521..62b7e431 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class
index 54fa5723..0c3614ba 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class
index 062ecb51..708e26c4 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class
index c2178731..3adfefed 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class
index d3dbb603..003aae65 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class
index 8f0a21b4..e7be3591 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class
index 3d4e8b10..c8bc735d 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class
index 83dc6c88..8dc90586 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskSyncService$1.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskSyncService$1.dex
index e65e5b68..fe366b5d 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskSyncService$1.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskSyncService$1.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskSyncService.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskSyncService.dex
index cc8addfa..178513c4 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskSyncService.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskSyncService.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note$NoteData.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note$NoteData.dex
index 234fe748..61e3ab4e 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note$NoteData.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note$NoteData.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note.dex
index 00800a07..abb001b4 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote.dex
index 2c8f09ce..ab0f2222 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils$TextExport.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils$TextExport.dex
index 4ec8e868..a1ad97ac 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils$TextExport.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils$TextExport.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils.dex
index d474cc6e..2c653154 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/DataUtils.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/DataUtils.dex
index b6874340..f0905957 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/DataUtils.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/DataUtils.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$2.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$2.dex
index bc46bd9a..b3ef6456 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$2.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$2.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$3.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$3.dex
index 6e546854..281f990e 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$3.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$3.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity.dex
index 16b73733..5edfc87b 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$3.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$3.dex
index ad34861e..5e89704b 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$3.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$3.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$4.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$4.dex
index a0a58e1e..a97d10b9 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$4.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$4.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$5.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$5.dex
index b419ff20..2ab53856 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$5.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$5.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$6.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$6.dex
index 8e51dd73..006a084e 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$6.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$6.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$7.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$7.dex
index 1519f8d3..4335f4f9 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$7.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$7.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$8.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$8.dex
index 09676c5e..99c2d6f1 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$8.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$8.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$9.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$9.dex
index 79b3edd0..36aed4df 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$9.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$9.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex
index 39389fda..ae574777 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex differ
diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity.dex
index 0f4a76ca..a2905fc0 100644
Binary files a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity.dex and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity.dex differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/AlarmAlertActivity.class.uniqueId60 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/AlarmAlertActivity.class.uniqueId27
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/AlarmAlertActivity.class.uniqueId60
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/AlarmAlertActivity.class.uniqueId27
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/AlarmInitReceiver.class.uniqueId14 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/AlarmInitReceiver.class.uniqueId14
deleted file mode 100644
index a1d202d1..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/AlarmInitReceiver.class.uniqueId14 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/BackupUtils$TextExport.class.uniqueId40 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/BackupUtils$TextExport.class.uniqueId5
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/BackupUtils$TextExport.class.uniqueId40
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/BackupUtils$TextExport.class.uniqueId5
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/BackupUtils.class.uniqueId47 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/BackupUtils.class.uniqueId11
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/BackupUtils.class.uniqueId47
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/BackupUtils.class.uniqueId11
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Contact.class.uniqueId42 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Contact.class.uniqueId42
deleted file mode 100644
index a7948fd1..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Contact.class.uniqueId42 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/DataUtils.class.uniqueId51 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/DataUtils.class.uniqueId14
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/DataUtils.class.uniqueId51
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/DataUtils.class.uniqueId14
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/FoldersListAdapter$FolderListItem.class.uniqueId24 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/FoldersListAdapter$FolderListItem.class.uniqueId24
deleted file mode 100644
index fad34429..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/FoldersListAdapter$FolderListItem.class.uniqueId24 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/FoldersListAdapter.class.uniqueId29 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/FoldersListAdapter.class.uniqueId29
deleted file mode 100644
index 023f716f..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/FoldersListAdapter.class.uniqueId29 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GTaskASyncTask$1.class.uniqueId1 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GTaskASyncTask$1.class.uniqueId1
deleted file mode 100644
index 520d1dad..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GTaskASyncTask$1.class.uniqueId1 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GTaskASyncTask$OnCompleteListener.class.uniqueId4 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GTaskASyncTask$OnCompleteListener.class.uniqueId4
deleted file mode 100644
index f73069cb..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GTaskASyncTask$OnCompleteListener.class.uniqueId4 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GTaskASyncTask.class.uniqueId19 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GTaskASyncTask.class.uniqueId19
deleted file mode 100644
index dea216da..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GTaskASyncTask.class.uniqueId19 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GTaskManager.class.uniqueId63 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GTaskManager.class.uniqueId30
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GTaskManager.class.uniqueId63
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GTaskManager.class.uniqueId30
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Note$NoteData.class.uniqueId15 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Note$NoteData.class.uniqueId10
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Note$NoteData.class.uniqueId15
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Note$NoteData.class.uniqueId10
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Note.class.uniqueId53 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Note.class.uniqueId16
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Note.class.uniqueId53
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Note.class.uniqueId16
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$1.class.uniqueId41 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$1.class.uniqueId6
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$1.class.uniqueId41
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$1.class.uniqueId6
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$2.class.uniqueId6 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$2.class.uniqueId3
similarity index 87%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$2.class.uniqueId6
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$2.class.uniqueId3
index bb9f7862..6efe55fe 100644
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$2.class.uniqueId6 and b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$2.class.uniqueId3 differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$3.class.uniqueId25 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$3.class.uniqueId21
similarity index 83%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$3.class.uniqueId25
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$3.class.uniqueId21
index 961f2f41..f8758f37 100644
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$3.class.uniqueId25 and b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$3.class.uniqueId21 differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$HeadViewHolder.class.uniqueId66 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$HeadViewHolder.class.uniqueId32
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$HeadViewHolder.class.uniqueId66
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$HeadViewHolder.class.uniqueId32
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity.class.uniqueId3 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity.class.uniqueId0
similarity index 91%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity.class.uniqueId3
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity.class.uniqueId0
index 7d0a456f..c7af5e52 100644
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity.class.uniqueId3 and b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity.class.uniqueId0 differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteItemData.class.uniqueId27 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteItemData.class.uniqueId23
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteItemData.class.uniqueId27
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteItemData.class.uniqueId23
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteWidgetProvider.class.uniqueId18 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteWidgetProvider.class.uniqueId18
deleted file mode 100644
index a00281f2..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteWidgetProvider.class.uniqueId18 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteWidgetProvider_2x.class.uniqueId55 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteWidgetProvider_2x.class.uniqueId55
deleted file mode 100644
index 043e4101..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteWidgetProvider_2x.class.uniqueId55 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteWidgetProvider_4x.class.uniqueId52 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteWidgetProvider_4x.class.uniqueId52
deleted file mode 100644
index ee3fd402..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteWidgetProvider_4x.class.uniqueId52 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes$CallNote.class.uniqueId39 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes$CallNote.class.uniqueId39
deleted file mode 100644
index 42394b73..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes$CallNote.class.uniqueId39 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes$DataColumns.class.uniqueId7 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes$DataColumns.class.uniqueId7
deleted file mode 100644
index 569dbdc1..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes$DataColumns.class.uniqueId7 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes$DataConstants.class.uniqueId49 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes$DataConstants.class.uniqueId49
deleted file mode 100644
index 76ef96eb..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes$DataConstants.class.uniqueId49 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes$NoteColumns.class.uniqueId11 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes$NoteColumns.class.uniqueId11
deleted file mode 100644
index 36c8d495..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes$NoteColumns.class.uniqueId11 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes$TextNote.class.uniqueId50 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes$TextNote.class.uniqueId50
deleted file mode 100644
index 42461a28..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes$TextNote.class.uniqueId50 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes.class.uniqueId36 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes.class.uniqueId36
deleted file mode 100644
index 413745e5..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Notes.class.uniqueId36 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesDatabaseHelper$TABLE.class.uniqueId32 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesDatabaseHelper$TABLE.class.uniqueId32
deleted file mode 100644
index 64fe9eb5..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesDatabaseHelper$TABLE.class.uniqueId32 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesDatabaseHelper.class.uniqueId43 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesDatabaseHelper.class.uniqueId43
deleted file mode 100644
index 0b075b48..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesDatabaseHelper.class.uniqueId43 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$1.class.uniqueId9 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$1.class.uniqueId7
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$1.class.uniqueId9
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$1.class.uniqueId7
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$2.class.uniqueId56 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$2.class.uniqueId20
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$2.class.uniqueId56
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$2.class.uniqueId20
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$3.class.uniqueId35 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$3.class.uniqueId1
similarity index 85%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$3.class.uniqueId35
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$3.class.uniqueId1
index 0fd69770..ae5d23bc 100644
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$3.class.uniqueId35 and b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$3.class.uniqueId1 differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$4.class.uniqueId20 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$4.class.uniqueId15
similarity index 92%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$4.class.uniqueId20
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$4.class.uniqueId15
index 04686521..62b7e431 100644
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$4.class.uniqueId20 and b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$4.class.uniqueId15 differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$5.class.uniqueId61 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$5.class.uniqueId28
similarity index 83%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$5.class.uniqueId61
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$5.class.uniqueId28
index 54fa5723..0c3614ba 100644
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$5.class.uniqueId61 and b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$5.class.uniqueId28 differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$6.class.uniqueId44 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$6.class.uniqueId9
similarity index 90%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$6.class.uniqueId44
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$6.class.uniqueId9
index 062ecb51..708e26c4 100644
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$6.class.uniqueId44 and b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$6.class.uniqueId9 differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$7.class.uniqueId38 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$7.class.uniqueId4
similarity index 88%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$7.class.uniqueId38
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$7.class.uniqueId4
index c2178731..3adfefed 100644
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$7.class.uniqueId38 and b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$7.class.uniqueId4 differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$8.class.uniqueId64 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$8.class.uniqueId31
similarity index 82%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$8.class.uniqueId64
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$8.class.uniqueId31
index d3dbb603..003aae65 100644
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$8.class.uniqueId64 and b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$8.class.uniqueId31 differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$9.class.uniqueId16 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$9.class.uniqueId13
similarity index 88%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$9.class.uniqueId16
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$9.class.uniqueId13
index 8f0a21b4..e7be3591 100644
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$9.class.uniqueId16 and b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$9.class.uniqueId13 differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$BackgroundQueryHandler.class.uniqueId30 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$BackgroundQueryHandler.class.uniqueId25
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$BackgroundQueryHandler.class.uniqueId30
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$BackgroundQueryHandler.class.uniqueId25
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$ListEditState.class.uniqueId28 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$ListEditState.class.uniqueId24
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$ListEditState.class.uniqueId28
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$ListEditState.class.uniqueId24
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$ModeCallback$1.class.uniqueId62 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$ModeCallback$1.class.uniqueId29
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$ModeCallback$1.class.uniqueId62
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$ModeCallback$1.class.uniqueId29
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$ModeCallback$2.class.uniqueId21 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$ModeCallback$2.class.uniqueId17
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$ModeCallback$2.class.uniqueId21
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$ModeCallback$2.class.uniqueId17
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$ModeCallback.class.uniqueId5 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$ModeCallback.class.uniqueId2
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$ModeCallback.class.uniqueId5
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$ModeCallback.class.uniqueId2
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$NewNoteOnTouchListener.class.uniqueId22 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$NewNoteOnTouchListener.class.uniqueId18
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$NewNoteOnTouchListener.class.uniqueId22
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$NewNoteOnTouchListener.class.uniqueId18
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$OnListItemClickListener.class.uniqueId54 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$OnListItemClickListener.class.uniqueId19
similarity index 92%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$OnListItemClickListener.class.uniqueId54
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$OnListItemClickListener.class.uniqueId19
index 3d4e8b10..c8bc735d 100644
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$OnListItemClickListener.class.uniqueId54 and b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity$OnListItemClickListener.class.uniqueId19 differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity.class.uniqueId10 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity.class.uniqueId8
similarity index 92%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity.class.uniqueId10
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity.class.uniqueId8
index 83dc6c88..8dc90586 100644
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity.class.uniqueId10 and b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListActivity.class.uniqueId8 differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListAdapter$AppWidgetAttribute.class.uniqueId67 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListAdapter$AppWidgetAttribute.class.uniqueId67
deleted file mode 100644
index 2bdb58bc..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListAdapter$AppWidgetAttribute.class.uniqueId67 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListAdapter.class.uniqueId13 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListAdapter.class.uniqueId13
deleted file mode 100644
index 5e432e90..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListAdapter.class.uniqueId13 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListItem.class.uniqueId26 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListItem.class.uniqueId22
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListItem.class.uniqueId26
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListItem.class.uniqueId22
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$1.class.uniqueId57 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$1.class.uniqueId57
deleted file mode 100644
index 362fa059..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$1.class.uniqueId57 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$2.class.uniqueId33 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$2.class.uniqueId33
deleted file mode 100644
index 85232285..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$2.class.uniqueId33 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$3.class.uniqueId17 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$3.class.uniqueId17
deleted file mode 100644
index d91bc851..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$3.class.uniqueId17 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$4.class.uniqueId58 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$4.class.uniqueId58
deleted file mode 100644
index 99c7a64f..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$4.class.uniqueId58 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$5.class.uniqueId37 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$5.class.uniqueId37
deleted file mode 100644
index 17e4d3bb..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$5.class.uniqueId37 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$6.class.uniqueId23 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$6.class.uniqueId23
deleted file mode 100644
index 7b800360..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$6.class.uniqueId23 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$7.class.uniqueId0 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$7.class.uniqueId0
deleted file mode 100644
index d9abeb93..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$7.class.uniqueId0 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$8.class.uniqueId46 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$8.class.uniqueId46
deleted file mode 100644
index 39e534ac..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$8.class.uniqueId46 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$GTaskReceiver.class.uniqueId2 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$GTaskReceiver.class.uniqueId2
deleted file mode 100644
index eb938cfd..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity$GTaskReceiver.class.uniqueId2 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity.class.uniqueId8 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity.class.uniqueId8
deleted file mode 100644
index 0937be27..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesPreferenceActivity.class.uniqueId8 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesProvider.class.uniqueId65 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesProvider.class.uniqueId65
deleted file mode 100644
index 1d3de0ea..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesProvider.class.uniqueId65 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/SqlData.class.uniqueId31 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/SqlData.class.uniqueId31
deleted file mode 100644
index 099f3bac..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/SqlData.class.uniqueId31 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/SqlNote.class.uniqueId34 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/SqlNote.class.uniqueId34
deleted file mode 100644
index 2783ae32..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/SqlNote.class.uniqueId34 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Task.class.uniqueId45 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Task.class.uniqueId45
deleted file mode 100644
index 5aaf1d4e..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/Task.class.uniqueId45 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/TaskList.class.uniqueId12 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/TaskList.class.uniqueId12
deleted file mode 100644
index 359609e5..00000000
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/TaskList.class.uniqueId12 and /dev/null differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/WorkingNote$NoteSettingChangedListener.class.uniqueId59 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/WorkingNote$NoteSettingChangedListener.class.uniqueId26
similarity index 100%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/WorkingNote$NoteSettingChangedListener.class.uniqueId59
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/WorkingNote$NoteSettingChangedListener.class.uniqueId26
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/WorkingNote.class.uniqueId48 b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/WorkingNote.class.uniqueId12
similarity index 73%
rename from src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/WorkingNote.class.uniqueId48
rename to src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/WorkingNote.class.uniqueId12
index df71afc5..a23580d2 100644
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/WorkingNote.class.uniqueId48 and b/src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/WorkingNote.class.uniqueId12 differ
diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin b/src/app/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin
index 28c082b3..e77c9354 100644
Binary files a/src/app/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin and b/src/app/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin differ
diff --git a/src/app/src/main/java/net/micode/notes/model/Note.java b/src/app/src/main/java/net/micode/notes/model/Note.java
index 6706cf67..d5f62a16 100644
--- a/src/app/src/main/java/net/micode/notes/model/Note.java
+++ b/src/app/src/main/java/net/micode/notes/model/Note.java
@@ -13,6 +13,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+/*
+主要是进行以便签为单位的操作
+什么是final类?
+Java中有一些类,如String,Math等,就是final类的典型例子。
+虽然在Java编程中并不经常使用final类和final方法,但它们有着与众不同的特点,
+即final类不能被继承,不能被覆盖,以及final类在执行速度方面比一般类快。
+ */
+
package net.micode.notes.model;
import android.content.ContentProviderOperation;
@@ -41,8 +49,15 @@ public class Note {
/**
* Create a new note id for adding a new note to databases
*/
+ /**
+ * 从数据库获取一个新的便签 ID。
+ *
+ * @param context 应用程序的上下文。
+ * @param folderId 将要创建便签的文件夹 ID。
+ * @return 新创建的便签 ID。
+ */
public static synchronized long getNewNoteId(Context context, long folderId) {
- // Create a new note in the database
+ // 在数据库中创建一个新的便签
ContentValues values = new ContentValues();
long createdTime = System.currentTimeMillis();
values.put(NoteColumns.CREATED_DATE, createdTime);
@@ -56,20 +71,30 @@ public class Note {
try {
noteId = Long.valueOf(uri.getPathSegments().get(1));
} catch (NumberFormatException e) {
- Log.e(TAG, "Get note id error :" + e.toString());
+ Log.e(TAG, "获取便签 ID 出错:" + e.toString());
noteId = 0;
}
if (noteId == -1) {
- throw new IllegalStateException("Wrong note id:" + noteId);
+ throw new IllegalStateException("错误的便签 ID:" + noteId);
}
return noteId;
}
+ /**
+ * 便签类的构造方法。
+ * 初始化 mNoteDiffValues 和 mNoteData。
+ */
public Note() {
mNoteDiffValues = new ContentValues();
mNoteData = new NoteData();
}
+ /**
+ * 用于设置便签数值的方法。
+ *
+ * @param key 要设置的数值的键。
+ * @param value 要设置的数值。
+ */
public void setNoteValue(String key, String value) {
mNoteDiffValues.put(key, value);
mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1);
@@ -100,36 +125,44 @@ public class Note {
return mNoteDiffValues.size() > 0 || mNoteData.isLocalModified();
}
+
+
+
public boolean syncNote(Context context, long noteId) {
+ // 检查传入的noteId是否合法,如果不合法则抛出异常
if (noteId <= 0) {
throw new IllegalArgumentException("Wrong note id:" + noteId);
}
-
+
+ // 检查当前笔记是否有本地修改的内容,如果没有则直接返回true
if (!isLocalModified()) {
return true;
}
-
- /**
- * In theory, once data changed, the note should be updated on {@link NoteColumns#LOCAL_MODIFIED} and
- * {@link NoteColumns#MODIFIED_DATE}. For data safety, though update note fails, we also update the
- * note data info
- */
+
+ // 使用ContentResolver的update方法更新指定noteId的笔记数据,如果返回值为0,则表示更新失败
if (context.getContentResolver().update(
ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), mNoteDiffValues, null,
null) == 0) {
Log.e(TAG, "Update note error, should not happen");
- // Do not return, fall through
+ // 如果更新笔记失败,记录错误日志,但不立即返回,而是继续执行后面的逻辑
}
+
+ // 清空mNoteDiffValues,表示已经将本地修改的内容同步到了设备数据库
mNoteDiffValues.clear();
-
+
+ // 检查NoteData对象是否有本地修改的内容,如果有则将修改的内容推送到设备数据库中,如果返回值为null表示推送失败,则返回false
if (mNoteData.isLocalModified()
&& (mNoteData.pushIntoContentResolver(context, noteId) == null)) {
return false;
}
-
+
+ // 如果同步操作成功,则返回true
return true;
}
+
+
+
private class NoteData {
private long mTextDataId;
@@ -179,22 +212,29 @@ public class Note {
}
Uri pushIntoContentResolver(Context context, long noteId) {
- /**
- * Check for safety
- */
+ // 检查传入的noteId是否合法,如果不合法则抛出异常
if (noteId <= 0) {
throw new IllegalArgumentException("Wrong note id:" + noteId);
}
-
+
+ // 创建一个操作列表,用于存储要执行的ContentProvider操作
ArrayList operationList = new ArrayList();
ContentProviderOperation.Builder builder = null;
-
+
+ // 如果mTextDataValues中有内容,则进行处理
if(mTextDataValues.size() > 0) {
+ // 设置mTextDataValues中的NOTE_ID字段为传入的noteId
mTextDataValues.put(DataColumns.NOTE_ID, noteId);
+
+ // 判断mTextDataId是否为0,如果为0说明是新创建的文本数据,需要执行插入操作
if (mTextDataId == 0) {
+ // 设置mTextDataValues中的MIME_TYPE字段为TextNote的内容类型
mTextDataValues.put(DataColumns.MIME_TYPE, TextNote.CONTENT_ITEM_TYPE);
- Uri uri = context.getContentResolver().insert(Notes.CONTENT_DATA_URI,
- mTextDataValues);
+
+ // 使用ContentResolver的insert方法将mTextDataValues插入到设备数据库中,并获取插入的记录的Uri
+ Uri uri = context.getContentResolver().insert(Notes.CONTENT_DATA_URI, mTextDataValues);
+
+ // 解析uri中的pathSegments获取插入的记录的ID,并将其设置为mTextDataId
try {
setTextDataId(Long.valueOf(uri.getPathSegments().get(1)));
} catch (NumberFormatException e) {
@@ -203,14 +243,18 @@ public class Note {
return null;
}
} else {
+ // 如果mTextDataId不为0,说明是已存在的文本数据,需要执行更新操作
builder = ContentProviderOperation.newUpdate(ContentUris.withAppendedId(
Notes.CONTENT_DATA_URI, mTextDataId));
builder.withValues(mTextDataValues);
operationList.add(builder.build());
}
+
+ // 清空mTextDataValues,表示mTextDataValues的内容已经处理完成
mTextDataValues.clear();
}
-
+
+ // 如果mCallDataValues中有内容,则进行处理(处理逻辑与上述的文本数据类似)
if(mCallDataValues.size() > 0) {
mCallDataValues.put(DataColumns.NOTE_ID, noteId);
if (mCallDataId == 0) {
@@ -232,11 +276,17 @@ public class Note {
}
mCallDataValues.clear();
}
-
+
+ // 如果操作列表中有操作,则执行applyBatch方法将操作应用到设备数据库中
if (operationList.size() > 0) {
try {
+ // 使用ContentResolver的applyBatch方法将操作应用到设备数据库中,并获取操作结果
ContentProviderResult[] results = context.getContentResolver().applyBatch(
Notes.AUTHORITY, operationList);
+
+ // 根据操作结果确定返回值
+ // 如果结果为null、长度为0或第一个结果为null,则返回null
+ // 否则返回指定noteId的笔记的Uri
return (results == null || results.length == 0 || results[0] == null) ? null
: ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId);
} catch (RemoteException e) {
@@ -247,6 +297,8 @@ public class Note {
return null;
}
}
+
+ // 如果操作列表为空,则直接返回null
return null;
}
}
diff --git a/src/app/src/main/java/net/micode/notes/model/WorkingNote.java b/src/app/src/main/java/net/micode/notes/model/WorkingNote.java
index 76d2c129..06119892 100644
--- a/src/app/src/main/java/net/micode/notes/model/WorkingNote.java
+++ b/src/app/src/main/java/net/micode/notes/model/WorkingNote.java
@@ -124,46 +124,52 @@ public class WorkingNote {
loadNote();
}
+ /**
+ * 加载笔记数据
+ */
private void loadNote() {
Cursor cursor = mContext.getContentResolver().query(
ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, mNoteId), NOTE_PROJECTION, null,
null, null);
-
+
if (cursor != null) {
if (cursor.moveToFirst()) {
- mFolderId = cursor.getLong(NOTE_PARENT_ID_COLUMN);
- mBgColorId = cursor.getInt(NOTE_BG_COLOR_ID_COLUMN);
- mWidgetId = cursor.getInt(NOTE_WIDGET_ID_COLUMN);
- mWidgetType = cursor.getInt(NOTE_WIDGET_TYPE_COLUMN);
- mAlertDate = cursor.getLong(NOTE_ALERTED_DATE_COLUMN);
- mModifiedDate = cursor.getLong(NOTE_MODIFIED_DATE_COLUMN);
+ mFolderId = cursor.getLong(NOTE_PARENT_ID_COLUMN); // 获取笔记所属文件夹 ID
+ mBgColorId = cursor.getInt(NOTE_BG_COLOR_ID_COLUMN); // 获取笔记背景颜色 ID
+ mWidgetId = cursor.getInt(NOTE_WIDGET_ID_COLUMN); // 获取笔记小部件 ID
+ mWidgetType = cursor.getInt(NOTE_WIDGET_TYPE_COLUMN); // 获取笔记小部件类型
+ mAlertDate = cursor.getLong(NOTE_ALERTED_DATE_COLUMN); // 获取笔记提醒日期
+ mModifiedDate = cursor.getLong(NOTE_MODIFIED_DATE_COLUMN); // 获取笔记修改日期
}
cursor.close();
} else {
Log.e(TAG, "No note with id:" + mNoteId);
throw new IllegalArgumentException("Unable to find note with id " + mNoteId);
}
- loadNoteData();
+ loadNoteData(); // 加载笔记数据
}
-
+
+ /**
+ * 加载笔记的具体数据
+ */
private void loadNoteData() {
Cursor cursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI, DATA_PROJECTION,
DataColumns.NOTE_ID + "=?", new String[] {
String.valueOf(mNoteId)
}, null);
-
+
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
- String type = cursor.getString(DATA_MIME_TYPE_COLUMN);
+ String type = cursor.getString(DATA_MIME_TYPE_COLUMN); // 获取数据类型
if (DataConstants.NOTE.equals(type)) {
- mContent = cursor.getString(DATA_CONTENT_COLUMN);
- mMode = cursor.getInt(DATA_MODE_COLUMN);
- mNote.setTextDataId(cursor.getLong(DATA_ID_COLUMN));
+ mContent = cursor.getString(DATA_CONTENT_COLUMN); // 获取笔记文本内容
+ mMode = cursor.getInt(DATA_MODE_COLUMN); // 获取笔记模式
+ mNote.setTextDataId(cursor.getLong(DATA_ID_COLUMN)); // 设置笔记文本数据 ID
} else if (DataConstants.CALL_NOTE.equals(type)) {
- mNote.setCallDataId(cursor.getLong(DATA_ID_COLUMN));
+ mNote.setCallDataId(cursor.getLong(DATA_ID_COLUMN)); // 设置通话数据 ID
} else {
- Log.d(TAG, "Wrong note type with type:" + type);
+ Log.d(TAG, "Wrong note type with type:" + type); // 记录错误的数据类型
}
} while (cursor.moveToNext());
}
@@ -174,59 +180,90 @@ public class WorkingNote {
}
}
+ /**
+ * 创建一个空的笔记对象
+ *
+ * @param context 上下文对象
+ * @param folderId 笔记所属文件夹 ID
+ * @param widgetId 笔记小部件 ID
+ * @param widgetType 笔记小部件类型
+ * @param defaultBgColorId 默认背景颜色 ID
+ * @return 创建的空白笔记对象
+ */
public static WorkingNote createEmptyNote(Context context, long folderId, int widgetId,
int widgetType, int defaultBgColorId) {
- WorkingNote note = new WorkingNote(context, folderId);
- note.setBgColorId(defaultBgColorId);
- note.setWidgetId(widgetId);
- note.setWidgetType(widgetType);
+ WorkingNote note = new WorkingNote(context, folderId); // 创建一个工作笔记对象
+ note.setBgColorId(defaultBgColorId); // 设置默认背景颜色 ID
+ note.setWidgetId(widgetId); // 设置小部件 ID
+ note.setWidgetType(widgetType); // 设置小部件类型
return note;
}
-
+
+ /**
+ * 根据 ID 从数据库加载笔记对象
+ *
+ * @param context 上下文对象
+ * @param id 笔记 ID
+ * @return 加载的笔记对象
+ */
public static WorkingNote load(Context context, long id) {
- return new WorkingNote(context, id, 0);
+ return new WorkingNote(context, id, 0); // 根据 ID 创建工作笔记对象
}
-
+
+ /**
+ * 保存笔记对象到数据库
+ *
+ * @return 保存是否成功
+ */
public synchronized boolean saveNote() {
if (isWorthSaving()) {
- if (!existInDatabase()) {
+ if (!existInDatabase()) { // 如果笔记不存在于数据库中
if ((mNoteId = Note.getNewNoteId(mContext, mFolderId)) == 0) {
Log.e(TAG, "Create new note fail with id:" + mNoteId);
- return false;
+ return false; // 创建新笔记失败
}
}
-
- mNote.syncNote(mContext, mNoteId);
-
- /**
- * Update widget content if there exist any widget of this note
- */
+ mNote.syncNote(mContext, mNoteId); // 同步笔记到数据库
if (mWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID
&& mWidgetType != Notes.TYPE_WIDGET_INVALIDE
&& mNoteSettingStatusListener != null) {
- mNoteSettingStatusListener.onWidgetChanged();
+ mNoteSettingStatusListener.onWidgetChanged(); // 更新小部件状态
}
- return true;
+ return true; // 保存成功
} else {
- return false;
+ return false; // 未值得保存,保存失败
}
}
+ /**
+ * 检查笔记是否存在于数据库中
+ * @return 笔记是否存在于数据库中
+ */
public boolean existInDatabase() {
return mNoteId > 0;
}
-
+
+ /**
+ * 检查笔记是否值得保存
+ * 笔记不值得保存的情况包括:已被标记删除、(不存在于数据库且内容为空)、(存在于数据库且没有本地修改)
+ * @return 笔记是否值得保存
+ */
private boolean isWorthSaving() {
if (mIsDeleted || (!existInDatabase() && TextUtils.isEmpty(mContent))
|| (existInDatabase() && !mNote.isLocalModified())) {
- return false;
+ return false; // 不值得保存
} else {
- return true;
+ return true; // 值得保存
}
}
-
+
+ /**
+ * 设置笔记设置状态改变监听器
+ *
+ * @param l 笔记设置状态改变监听器
+ */
public void setOnSettingStatusChangedListener(NoteSettingChangedListener l) {
- mNoteSettingStatusListener = l;
+ mNoteSettingStatusListener = l; // 设置笔记设置状态改变监听器
}
public void setAlertDate(long date, boolean set) {
@@ -316,31 +353,45 @@ public class WorkingNote {
}
}
+ /**
+ * 设置小部件类型
+ * @param type 小部件类型
+ */
public void setWidgetType(int type) {
if (type != mWidgetType) {
mWidgetType = type;
- mNote.setNoteValue(NoteColumns.WIDGET_TYPE, String.valueOf(mWidgetType));
+ mNote.setNoteValue(NoteColumns.WIDGET_TYPE, String.valueOf(mWidgetType)); // 设置笔记值中的小部件类型
}
}
-
+ /**
+ * 设置小部件 ID
+ * @param id 小部件 ID
+ */
public void setWidgetId(int id) {
if (id != mWidgetId) {
mWidgetId = id;
- mNote.setNoteValue(NoteColumns.WIDGET_ID, String.valueOf(mWidgetId));
+ mNote.setNoteValue(NoteColumns.WIDGET_ID, String.valueOf(mWidgetId)); // 设置笔记值中的小部件 ID
}
}
-
+ /**
+ * 设置工作文本
+ * @param text 文本内容
+ */
public void setWorkingText(String text) {
if (!TextUtils.equals(mContent, text)) {
mContent = text;
- mNote.setTextData(DataColumns.CONTENT, mContent);
+ mNote.setTextData(DataColumns.CONTENT, mContent); // 设置笔记的文本数据
}
}
-
+ /**
+ * 转换为通话记录类型的笔记
+ * @param phoneNumber 电话号码
+ * @param callDate 通话日期
+ */
public void convertToCallNote(String phoneNumber, long callDate) {
- mNote.setCallData(CallNote.CALL_DATE, String.valueOf(callDate));
- mNote.setCallData(CallNote.PHONE_NUMBER, phoneNumber);
- mNote.setNoteValue(NoteColumns.PARENT_ID, String.valueOf(Notes.ID_CALL_RECORD_FOLDER));
+ mNote.setCallData(CallNote.CALL_DATE, String.valueOf(callDate)); // 设置通话数据中的通话日期
+ mNote.setCallData(CallNote.PHONE_NUMBER, phoneNumber); // 设置通话数据中的电话号码
+ mNote.setNoteValue(NoteColumns.PARENT_ID, String.valueOf(Notes.ID_CALL_RECORD_FOLDER)); // 设置笔记值中的父文件夹 ID
}
public boolean hasClockAlert() {
diff --git a/src/app/src/main/java/net/micode/notes/tool/BackupUtils.java b/src/app/src/main/java/net/micode/notes/tool/BackupUtils.java
index 39f6ec47..0267be12 100644
--- a/src/app/src/main/java/net/micode/notes/tool/BackupUtils.java
+++ b/src/app/src/main/java/net/micode/notes/tool/BackupUtils.java
@@ -140,24 +140,28 @@ public class BackupUtils {
* Export the folder identified by folder id to text
*/
private void exportFolderToText(String folderId, PrintStream ps) {
- // Query notes belong to this folder
+ // 查询属于该文件夹的笔记
Cursor notesCursor = mContext.getContentResolver().query(Notes.CONTENT_NOTE_URI,
NOTE_PROJECTION, NoteColumns.PARENT_ID + "=?", new String[] {
- folderId
+ folderId
}, null);
-
+
+ // 如果notesCursor不为null,则进行处理
if (notesCursor != null) {
+ // 如果notesCursor中有数据,则继续循环处理每个笔记
if (notesCursor.moveToFirst()) {
do {
- // Print note's last modified date
+ // 打印笔记的最后修改日期
ps.println(String.format(getFormat(FORMAT_NOTE_DATE), DateFormat.format(
mContext.getString(R.string.format_datetime_mdhm),
notesCursor.getLong(NOTE_COLUMN_MODIFIED_DATE))));
- // Query data belong to this note
+ // 查询属于该笔记的数据
String noteId = notesCursor.getString(NOTE_COLUMN_ID);
exportNoteToText(noteId, ps);
} while (notesCursor.moveToNext());
}
+
+ // 关闭notesCursor
notesCursor.close();
}
}
@@ -166,46 +170,55 @@ public class BackupUtils {
* Export note identified by id to a print stream
*/
private void exportNoteToText(String noteId, PrintStream ps) {
+ // 查询属于该笔记的数据
Cursor dataCursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI,
DATA_PROJECTION, DataColumns.NOTE_ID + "=?", new String[] {
- noteId
+ noteId
}, null);
-
+
+ // 如果dataCursor不为null,则进行处理
if (dataCursor != null) {
+ // 如果dataCursor中有数据,则继续循环处理每个数据项
if (dataCursor.moveToFirst()) {
do {
+ // 获取数据的mimeType
String mimeType = dataCursor.getString(DATA_COLUMN_MIME_TYPE);
if (DataConstants.CALL_NOTE.equals(mimeType)) {
- // Print phone number
+ // 如果是电话笔记,则打印电话号码、通话日期和通话位置
String phoneNumber = dataCursor.getString(DATA_COLUMN_PHONE_NUMBER);
long callDate = dataCursor.getLong(DATA_COLUMN_CALL_DATE);
String location = dataCursor.getString(DATA_COLUMN_CONTENT);
-
+
+ // 如果电话号码不为空,则打印电话号码
if (!TextUtils.isEmpty(phoneNumber)) {
ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT),
phoneNumber));
}
- // Print call date
+ // 打印通话日期
ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), DateFormat
.format(mContext.getString(R.string.format_datetime_mdhm),
callDate)));
- // Print call attachment location
+ // 如果通话位置不为空,则打印通话位置
if (!TextUtils.isEmpty(location)) {
ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT),
location));
}
} else if (DataConstants.NOTE.equals(mimeType)) {
+ // 如果是普通笔记,则打印内容
String content = dataCursor.getString(DATA_COLUMN_CONTENT);
if (!TextUtils.isEmpty(content)) {
ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT),
content));
}
}
- } while (dataCursor.moveToNext());
+ } while (dataCursor.moveToNext()); // 移动到下一行继续处理
}
+
+ // 关闭dataCursor
dataCursor.close();
}
- // print a line separator between note
+
+ // 打印一个行分隔符来分割每个笔记的内容
try {
ps.write(new byte[] {
Character.LINE_SEPARATOR, Character.LETTER_NUMBER
@@ -219,126 +232,175 @@ public class BackupUtils {
* Note will be exported as text which is user readable
*/
public int exportToText() {
+ // 检查外部存储是否可用
if (!externalStorageAvailable()) {
Log.d(TAG, "Media was not mounted");
return STATE_SD_CARD_UNMOUONTED;
}
-
+
+ // 获取导出到文本的PrintStream对象
PrintStream ps = getExportToTextPrintStream();
if (ps == null) {
Log.e(TAG, "get print stream error");
return STATE_SYSTEM_ERROR;
}
- // First export folder and its notes
+
+ // 首先导出文件夹及其内部的笔记
Cursor folderCursor = mContext.getContentResolver().query(
Notes.CONTENT_NOTE_URI,
NOTE_PROJECTION,
"(" + NoteColumns.TYPE + "=" + Notes.TYPE_FOLDER + " AND "
+ NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER + ") OR "
+ NoteColumns.ID + "=" + Notes.ID_CALL_RECORD_FOLDER, null, null);
-
+
+ // 如果folderCursor不为null,则进行处理
if (folderCursor != null) {
+ // 如果folderCursor中有数据,则继续循环处理每个文件夹
if (folderCursor.moveToFirst()) {
do {
- // Print folder's name
+ // 打印文件夹的名称
String folderName = "";
if(folderCursor.getLong(NOTE_COLUMN_ID) == Notes.ID_CALL_RECORD_FOLDER) {
folderName = mContext.getString(R.string.call_record_folder_name);
} else {
folderName = folderCursor.getString(NOTE_COLUMN_SNIPPET);
}
+ // 如果文件夹名称不为空,则打印文件夹名称
if (!TextUtils.isEmpty(folderName)) {
ps.println(String.format(getFormat(FORMAT_FOLDER_NAME), folderName));
}
String folderId = folderCursor.getString(NOTE_COLUMN_ID);
+ // 导出文件夹及其内部的笔记
exportFolderToText(folderId, ps);
- } while (folderCursor.moveToNext());
+ } while (folderCursor.moveToNext()); // 移动到下一行继续处理
}
+ // 关闭folderCursor
folderCursor.close();
}
-
- // Export notes in root's folder
+
+ // 导出根文件夹下的笔记
Cursor noteCursor = mContext.getContentResolver().query(
Notes.CONTENT_NOTE_URI,
NOTE_PROJECTION,
NoteColumns.TYPE + "=" + +Notes.TYPE_NOTE + " AND " + NoteColumns.PARENT_ID
+ "=0", null, null);
-
+
+ // 如果noteCursor不为null,则进行处理
if (noteCursor != null) {
+ // 如果noteCursor中有数据,则继续循环处理每个笔记
if (noteCursor.moveToFirst()) {
do {
+ // 打印笔记的修改日期
ps.println(String.format(getFormat(FORMAT_NOTE_DATE), DateFormat.format(
mContext.getString(R.string.format_datetime_mdhm),
noteCursor.getLong(NOTE_COLUMN_MODIFIED_DATE))));
- // Query data belong to this note
+ // 查询属于该笔记的数据,并导出为文本
String noteId = noteCursor.getString(NOTE_COLUMN_ID);
exportNoteToText(noteId, ps);
- } while (noteCursor.moveToNext());
+ } while (noteCursor.moveToNext()); // 移动到下一行继续处理
}
+ // 关闭noteCursor
noteCursor.close();
}
+ // 关闭PrintStream
ps.close();
-
+
return STATE_SUCCESS;
- }
+ }
/**
* Get a print stream pointed to the file {@generateExportedTextFile}
*/
- private PrintStream getExportToTextPrintStream() {
- File file = generateFileMountedOnSDcard(mContext, R.string.file_path,
- R.string.file_name_txt_format);
- if (file == null) {
- Log.e(TAG, "create file to exported failed");
- return null;
- }
- mFileName = file.getName();
- mFileDirectory = mContext.getString(R.string.file_path);
- PrintStream ps = null;
- try {
- FileOutputStream fos = new FileOutputStream(file);
- ps = new PrintStream(fos);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- return null;
- } catch (NullPointerException e) {
- e.printStackTrace();
- return null;
- }
- return ps;
- }
+/**
+ * 获取用于导出文本的PrintStream对象
+ * @return 如果成功获取PrintStream对象,则返回该对象;如果获取过程中出现错误,则返回null
+ */
+private PrintStream getExportToTextPrintStream() {
+ // 调用generateFileMountedOnSDcard方法生成一个文件对象
+ File file = generateFileMountedOnSDcard(mContext, R.string.file_path, R.string.file_name_txt_format);
+ // 如果生成的文件对象为空,记录错误并返回null
+ if (file == null) {
+ Log.e(TAG, "create file to exported failed");
+ return null;
+ }
+
+ // 保存生成的文件名和文件路径到成员变量
+ mFileName = file.getName();
+ mFileDirectory = mContext.getString(R.string.file_path);
+
+ PrintStream ps = null;
+ try {
+ // 创建文件输出流,并将其封装为PrintStream对象
+ FileOutputStream fos = new FileOutputStream(file);
+ ps = new PrintStream(fos);
+ } catch (FileNotFoundException e) {
+ // 捕获FileNotFoundException,记录错误并返回null
+ e.printStackTrace();
+ return null;
+ } catch (NullPointerException e) {
+ // 捕获NullPointerException,记录错误并返回null
+ e.printStackTrace();
+ return null;
+ }
+ // 返回创建的PrintStream对象,如果在过程中出现其他问题则返回null
+ return ps;
+}
}
/**
* Generate the text file to store imported data
*/
- private static File generateFileMountedOnSDcard(Context context, int filePathResId, int fileNameFormatResId) {
- StringBuilder sb = new StringBuilder();
- sb.append(Environment.getExternalStorageDirectory());
- sb.append(context.getString(filePathResId));
- File filedir = new File(sb.toString());
- sb.append(context.getString(
- fileNameFormatResId,
- DateFormat.format(context.getString(R.string.format_date_ymd),
- System.currentTimeMillis())));
- File file = new File(sb.toString());
-
- try {
- if (!filedir.exists()) {
- filedir.mkdir();
- }
- if (!file.exists()) {
- file.createNewFile();
- }
- return file;
- } catch (SecurityException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
+/**
+ * 在SD卡上生成一个文件对象
+ * @param context 上下文对象
+ * @param filePathResId 文件路径的资源ID
+ * @param fileNameFormatResId 文件名格式的资源ID
+ * @return 如果成功生成文件对象,则返回该对象;如果生成过程中出现错误,则返回null
+ */
+private static File generateFileMountedOnSDcard(Context context, int filePathResId, int fileNameFormatResId) {
+ // 创建一个StringBuilder对象,用于拼接文件路径和文件名
+ StringBuilder sb = new StringBuilder();
+
+ // 获取SD卡的根目录,并将其添加到StringBuilder中
+ sb.append(Environment.getExternalStorageDirectory());
+
+ // 从资源中获取文件路径,并将其添加到StringBuilder中
+ sb.append(context.getString(filePathResId));
+
+ // 根据文件名格式资源ID和当前时间生成文件名,并将其添加到StringBuilder中
+ sb.append(context.getString(fileNameFormatResId, DateFormat.format(context.getString(R.string.format_date_ymd),
+ System.currentTimeMillis())));
+
+ // 根据StringBuilder中的路径创建一个文件夹对象
+ File filedir = new File(sb.toString());
+
+ // 根据StringBuilder中的完整路径创建一个文件对象
+ File file = new File(sb.toString());
+
+ try {
+ // 如果文件夹不存在,则创建文件夹
+ if (!filedir.exists()) {
+ filedir.mkdir();
}
-
- return null;
+
+ // 如果文件不存在,则创建文件
+ if (!file.exists()) {
+ file.createNewFile();
+ }
+
+ // 返回生成的文件对象
+ return file;
+ } catch (SecurityException e) {
+ // 捕获SecurityException异常,打印异常信息
+ e.printStackTrace();
+ } catch (IOException e) {
+ // 捕获IOException异常,打印异常信息
+ e.printStackTrace();
}
+
+ // 返回null表示生成文件过程中出现了错误
+ return null;
+}
}
diff --git a/src/app/src/main/java/net/micode/notes/tool/DataUtils.java b/src/app/src/main/java/net/micode/notes/tool/DataUtils.java
index 2a14982e..86d6c254 100644
--- a/src/app/src/main/java/net/micode/notes/tool/DataUtils.java
+++ b/src/app/src/main/java/net/micode/notes/tool/DataUtils.java
@@ -37,259 +37,382 @@ import java.util.HashSet;
public class DataUtils {
public static final String TAG = "DataUtils";
- public static boolean batchDeleteNotes(ContentResolver resolver, HashSet ids) {
- if (ids == null) {
- Log.d(TAG, "the ids is null");
- return true;
- }
- if (ids.size() == 0) {
- Log.d(TAG, "no id is in the hashset");
- return true;
- }
-
- ArrayList operationList = new ArrayList();
- for (long id : ids) {
- if(id == Notes.ID_ROOT_FOLDER) {
- Log.e(TAG, "Don't delete system folder root");
- continue;
- }
- ContentProviderOperation.Builder builder = ContentProviderOperation
- .newDelete(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id));
- operationList.add(builder.build());
- }
- try {
- ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList);
- if (results == null || results.length == 0 || results[0] == null) {
- Log.d(TAG, "delete notes failed, ids:" + ids.toString());
- return false;
- }
- return true;
- } catch (RemoteException e) {
- Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage()));
- } catch (OperationApplicationException e) {
- Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage()));
- }
- return false;
+/**
+ * 批量删除便签
+ * @param resolver 内容解析器
+ * @param ids 待删除便签的ID集合
+ * @return 如果删除成功删除所有指定的便签,则返回true;否则返回false
+ */
+public static boolean batchDeleteNotes(ContentResolver resolver, HashSet ids) {
+ if (ids == null) {
+ // 如果ids为null,记录调试信息并返回true
+ Log.d(TAG, "the ids is null");
+ return true;
}
-
- public static void moveNoteToFoler(ContentResolver resolver, long id, long srcFolderId, long desFolderId) {
- ContentValues values = new ContentValues();
- values.put(NoteColumns.PARENT_ID, desFolderId);
- values.put(NoteColumns.ORIGIN_PARENT_ID, srcFolderId);
- values.put(NoteColumns.LOCAL_MODIFIED, 1);
- resolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id), values, null, null);
+ if (ids.size() == 0) {
+ // 如果ids集合为空,记录调试信息并返回true
+ Log.d(TAG, "no id is in the hashset");
+ return true;
}
- public static boolean batchMoveToFolder(ContentResolver resolver, HashSet ids,
- long folderId) {
- if (ids == null) {
- Log.d(TAG, "the ids is null");
- return true;
- }
+ ArrayList operationList = new ArrayList();
- ArrayList operationList = new ArrayList();
- for (long id : ids) {
- ContentProviderOperation.Builder builder = ContentProviderOperation
- .newUpdate(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id));
- builder.withValue(NoteColumns.PARENT_ID, folderId);
- builder.withValue(NoteColumns.LOCAL_MODIFIED, 1);
- operationList.add(builder.build());
+ // 遍历待删除的便签ID集合
+ for (long id : ids) {
+ if(id == Notes.ID_ROOT_FOLDER) {
+ // 如果当前ID为系统文件夹根目录的ID,记录错误信息并跳过
+ Log.e(TAG, "Don't delete system folder root");
+ continue;
}
-
- try {
- ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList);
- if (results == null || results.length == 0 || results[0] == null) {
- Log.d(TAG, "delete notes failed, ids:" + ids.toString());
- return false;
- }
- return true;
- } catch (RemoteException e) {
- Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage()));
- } catch (OperationApplicationException e) {
- Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage()));
+ // 创建一个ContentProviderOperation.Builder用于构建删除指定ID的操作
+ ContentProviderOperation.Builder builder = ContentProviderOperation.newDelete(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id));
+ // 将操作添加到操作列表中
+ operationList.add(builder.build());
+ }
+ try {
+ // 应用操作列表中的所有操作来批量删除便签
+ ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList);
+ if (results == null || results.length == 0 || results[0] == null) {
+ // 如果删除操作失败,记录错误信息并返回false
+ Log.d(TAG, "delete notes failed, ids:" + ids.toString());
+ return false;
}
- return false;
+ // 删除操作成功完成,返回true
+ return true;
+ } catch (RemoteException e) {
+ // 捕获RemoteException异常,记录错误信息
+ Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage()));
+ } catch (OperationApplicationException e) {
+ // 捕获OperationApplicationException异常,记录错误信息
+ Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage()));
}
+ // 出现异常情况,返回false
+ return false;
+}
- /**
- * Get the all folder count except system folders {@link Notes#TYPE_SYSTEM}}
- */
- public static int getUserFolderCount(ContentResolver resolver) {
- Cursor cursor =resolver.query(Notes.CONTENT_NOTE_URI,
- new String[] { "COUNT(*)" },
- NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>?",
- new String[] { String.valueOf(Notes.TYPE_FOLDER), String.valueOf(Notes.ID_TRASH_FOLER)},
- null);
+/**
+ * 将指定 id 的笔记移动到指定文件夹中
+ *
+ * @param resolver ContentResolver 对象,用于访问应用程序数据
+ * @param id 要移动的笔记的 ID
+ * @param srcFolderId 源文件夹的 ID
+ * @param desFolderId 目标文件夹的 ID
+ */
+public static void moveNoteToFoler(ContentResolver resolver, long id, long srcFolderId, long desFolderId) {
+ // 创建包含要更新的内容的 ContentValues 对象
+ ContentValues values = new ContentValues();
+ values.put(NoteColumns.PARENT_ID, desFolderId); // 将笔记的父文件夹 ID 设置为目标文件夹的 ID
+ values.put(NoteColumns.ORIGIN_PARENT_ID, srcFolderId); // 设置笔记的原始父文件夹 ID 为源文件夹的 ID
+ values.put(NoteColumns.LOCAL_MODIFIED, 1); // 标记笔记已在本地修改
+ // 使用 ContentResolver 执行更新操作
+ resolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id), values, null, null);
+}
- int count = 0;
- if(cursor != null) {
- if(cursor.moveToFirst()) {
- try {
- count = cursor.getInt(0);
- } catch (IndexOutOfBoundsException e) {
- Log.e(TAG, "get folder count failed:" + e.toString());
- } finally {
- cursor.close();
- }
- }
- }
- return count;
+/**
+ * 批量将笔记移动到指定文件夹
+ *
+ * @param resolver ContentResolver 对象,用于访问应用程序数据
+ * @param ids 要移动的笔记的 ID 集合
+ * @param folderId 目标文件夹的 ID
+ * @return 操作是否成功的布尔值,true 表示成功,false 表示失败
+ */
+public static boolean batchMoveToFolder(ContentResolver resolver, HashSet ids, long folderId) {
+ if (ids == null) {
+ Log.d(TAG, "the ids is null");
+ return true;
}
- public static boolean visibleInNoteDatabase(ContentResolver resolver, long noteId, int type) {
- Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId),
- null,
- NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER,
- new String [] {String.valueOf(type)},
- null);
+ // 创建存储 ContentProviderOperation 的列表
+ ArrayList operationList = new ArrayList();
+ for (long id : ids) {
+ // 创建一个更新操作的 Builder
+ ContentProviderOperation.Builder builder = ContentProviderOperation.newUpdate(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id));
+ builder.withValue(NoteColumns.PARENT_ID, folderId); // 设置笔记的父文件夹 ID 为目标文件夹的 ID
+ builder.withValue(NoteColumns.LOCAL_MODIFIED, 1); // 标记笔记已在本地修改
+ operationList.add(builder.build()); // 将操作加入列表
+ }
- boolean exist = false;
- if (cursor != null) {
- if (cursor.getCount() > 0) {
- exist = true;
- }
- cursor.close();
+ try {
+ // 应用批量操作并获取结果
+ ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList);
+ if (results == null || results.length == 0 || results[0] == null) {
+ Log.d(TAG, "delete notes failed, ids:" + ids.toString());
+ return false;
}
- return exist;
+ return true;
+ } catch (RemoteException e) {
+ Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage()));
+ } catch (OperationApplicationException e) {
+ Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage()));
}
+ return false;
+}
+/**
+ * 获取所有用户文件夹的数量,不包括系统文件夹 {@link Notes#TYPE_SYSTEM}
+ *
+ * @param resolver ContentResolver 对象,用于访问应用程序数据
+ * @return 用户文件夹的数量
+ */
+public static int getUserFolderCount(ContentResolver resolver) {
+ // 查询数据库获取用户文件夹的数量
+ Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI,
+ new String[] { "COUNT(*)" },
+ NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>?",
+ new String[] { String.valueOf(Notes.TYPE_FOLDER), String.valueOf(Notes.ID_TRASH_FOLER)},
+ null);
- public static boolean existInNoteDatabase(ContentResolver resolver, long noteId) {
- Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId),
- null, null, null, null);
-
- boolean exist = false;
- if (cursor != null) {
- if (cursor.getCount() > 0) {
- exist = true;
+ int count = 0;
+ if (cursor != null) {
+ if (cursor.moveToFirst()) {
+ try {
+ count = cursor.getInt(0);
+ } catch (IndexOutOfBoundsException e) {
+ Log.e(TAG, "get folder count failed:" + e.toString());
+ } finally {
+ cursor.close();
}
- cursor.close();
}
- return exist;
}
+ return count;
+}
- public static boolean existInDataDatabase(ContentResolver resolver, long dataId) {
- Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId),
- null, null, null, null);
+/**
+ * 判断笔记是否在笔记数据库中可见
+ *
+ * @param resolver ContentResolver 对象,用于访问应用程序数据
+ * @param noteId 笔记的 ID
+ * @param type 笔记的类型
+ * @return 笔记是否可见的布尔值,true 表示可见,false 表示不可见
+ */
+public static boolean visibleInNoteDatabase(ContentResolver resolver, long noteId, int type) {
+ // 查询数据库判断笔记是否可见
+ Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId),
+ null,
+ NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER,
+ new String[] { String.valueOf(type) },
+ null);
- boolean exist = false;
- if (cursor != null) {
- if (cursor.getCount() > 0) {
- exist = true;
- }
- cursor.close();
+ boolean exist = false;
+ if (cursor != null) {
+ if (cursor.getCount() > 0) {
+ exist = true;
}
- return exist;
+ cursor.close();
}
+ return exist;
+}
- public static boolean checkVisibleFolderName(ContentResolver resolver, String name) {
- Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, null,
- NoteColumns.TYPE + "=" + Notes.TYPE_FOLDER +
- " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER +
- " AND " + NoteColumns.SNIPPET + "=?",
- new String[] { name }, null);
- boolean exist = false;
- if(cursor != null) {
- if(cursor.getCount() > 0) {
- exist = true;
- }
- cursor.close();
+/**
+ * 检查给定笔记 ID 对应的笔记是否存在于笔记数据库中
+ *
+ * @param resolver ContentResolver 对象,用于访问应用程序数据
+ * @param noteId 待查询的笔记 ID
+ * @return 笔记是否存在于数据库中的布尔值,true 表示存在,false 表示不存在
+ */
+public static boolean existInNoteDatabase(ContentResolver resolver, long noteId) {
+ // 使用ContentResolver对象进行查询
+ Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId),
+ null, null, null, null);
+
+ boolean exist = false;
+ // 检查结果集是否为空
+ if (cursor != null) {
+ if (cursor.getCount() > 0) {
+ exist = true;
}
- return exist;
+ // 关闭数据库查询结果游标
+ cursor.close();
}
+ return exist;
+}
- public static HashSet getFolderNoteWidget(ContentResolver resolver, long folderId) {
- Cursor c = resolver.query(Notes.CONTENT_NOTE_URI,
- new String[] { NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE },
- NoteColumns.PARENT_ID + "=?",
- new String[] { String.valueOf(folderId) },
- null);
+/**
+ * 检查给定数据 ID 对应的数据是否存在于数据数据库中
+ *
+ * @param resolver ContentResolver 对象,用于访问应用程序数据
+ * @param dataId 待查询的数据 ID
+ * @return 数据是否存在于数据库中的布尔值,true 表示存在,false 表示不存在
+ */
+public static boolean existInDataDatabase(ContentResolver resolver, long dataId) {
+ // 使用ContentResolver对象进行查询
+ Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId),
+ null, null, null, null);
- HashSet set = null;
- if (c != null) {
- if (c.moveToFirst()) {
- set = new HashSet();
- do {
- try {
- AppWidgetAttribute widget = new AppWidgetAttribute();
- widget.widgetId = c.getInt(0);
- widget.widgetType = c.getInt(1);
- set.add(widget);
- } catch (IndexOutOfBoundsException e) {
- Log.e(TAG, e.toString());
- }
- } while (c.moveToNext());
- }
- c.close();
+ boolean exist = false;
+ // 检查结果集是否为空
+ if (cursor != null) {
+ if (cursor.getCount() > 0) {
+ exist = true;
}
- return set;
+ // 关闭数据库查询结果游标
+ cursor.close();
}
+ return exist;
+}
- public static String getCallNumberByNoteId(ContentResolver resolver, long noteId) {
- Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI,
- new String [] { CallNote.PHONE_NUMBER },
- CallNote.NOTE_ID + "=? AND " + CallNote.MIME_TYPE + "=?",
- new String [] { String.valueOf(noteId), CallNote.CONTENT_ITEM_TYPE },
- null);
-
- if (cursor != null && cursor.moveToFirst()) {
- try {
- return cursor.getString(0);
- } catch (IndexOutOfBoundsException e) {
- Log.e(TAG, "Get call number fails " + e.toString());
- } finally {
- cursor.close();
- }
+/**
+ * 检查给定文件夹名称是否存在于笔记数据库中
+ *
+ * @param resolver ContentResolver 对象,用于访问应用程序数据
+ * @param name 待查询的文件夹名称
+ * @return 文件夹名称是否存在于数据库中的布尔值,true 表示存在,false 表示不存在
+ */
+public static boolean checkVisibleFolderName(ContentResolver resolver, String name) {
+ // 使用ContentResolver对象进行查询
+ Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, null,
+ NoteColumns.TYPE + "=" + Notes.TYPE_FOLDER +
+ " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER +
+ " AND " + NoteColumns.SNIPPET + "=?",
+ new String[] { name }, null);
+ boolean exist = false;
+ // 检查结果集是否为空
+ if(cursor != null) {
+ if(cursor.getCount() > 0) {
+ exist = true;
}
- return "";
+ // 关闭数据库查询结果游标
+ cursor.close();
}
+ return exist;
+}
- public static long getNoteIdByPhoneNumberAndCallDate(ContentResolver resolver, String phoneNumber, long callDate) {
- Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI,
- new String [] { CallNote.NOTE_ID },
- CallNote.CALL_DATE + "=? AND " + CallNote.MIME_TYPE + "=? AND PHONE_NUMBERS_EQUAL("
- + CallNote.PHONE_NUMBER + ",?)",
- new String [] { String.valueOf(callDate), CallNote.CONTENT_ITEM_TYPE, phoneNumber },
- null);
+/**
+ * 获取指定文件夹下的小部件属性集合
+ *
+ * @param resolver ContentResolver 对象,用于访问应用程序数据
+ * @param folderId 待查询的文件夹 ID
+ * @return 包含小部件属性的 HashSet,如果查询结果为空则返回 null
+ */
+public static HashSet getFolderNoteWidget(ContentResolver resolver, long folderId) {
+ // 使用ContentResolver对象进行查询
+ Cursor c = resolver.query(Notes.CONTENT_NOTE_URI,
+ new String[] {NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE},
+ NoteColumns.PARENT_ID + "=?",
+ new String[] {String.valueOf(folderId)},
+ null);
- if (cursor != null) {
- if (cursor.moveToFirst()) {
+ HashSet set = null;
+ if (c != null) {
+ if (c.moveToFirst()) {
+ set = new HashSet<>();
+ do {
try {
- return cursor.getLong(0);
+ AppWidgetAttribute widget = new AppWidgetAttribute();
+ widget.widgetId = c.getInt(0);
+ widget.widgetType = c.getInt(1);
+ set.add(widget);
} catch (IndexOutOfBoundsException e) {
- Log.e(TAG, "Get call note id fails " + e.toString());
+ Log.e(TAG, e.toString());
}
- }
- cursor.close();
+ } while (c.moveToNext());
}
- return 0;
+ c.close();
}
+ return set;
+}
- public static String getSnippetById(ContentResolver resolver, long noteId) {
- Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI,
- new String [] { NoteColumns.SNIPPET },
- NoteColumns.ID + "=?",
- new String [] { String.valueOf(noteId)},
- null);
+/**
+ * 根据笔记 ID 获取对应的通话号码
+ *
+ * @param resolver ContentResolver 对象,用于访问应用程序数据
+ * @param noteId 待查询的笔记 ID
+ * @return 笔记对应的通话号码,如果查询失败则返回空字符串
+ */
+public static String getCallNumberByNoteId(ContentResolver resolver, long noteId) {
+ Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI,
+ new String[] {CallNote.PHONE_NUMBER},
+ CallNote.NOTE_ID + "=? AND " + CallNote.MIME_TYPE + "=?",
+ new String[] {String.valueOf(noteId), CallNote.CONTENT_ITEM_TYPE},
+ null);
- if (cursor != null) {
- String snippet = "";
- if (cursor.moveToFirst()) {
- snippet = cursor.getString(0);
- }
+ if (cursor != null && cursor.moveToFirst()) {
+ try {
+ return cursor.getString(0);
+ } catch (IndexOutOfBoundsException e) {
+ Log.e(TAG, "Get call number fails " + e.toString());
+ } finally {
cursor.close();
- return snippet;
}
- throw new IllegalArgumentException("Note is not found with id: " + noteId);
}
+ return "";
+}
+
+/**
+ * 根据通话号码和通话日期获取对应的笔记 ID
+ *
+ * @param resolver ContentResolver 对象,用于访问应用程序数据
+ * @param phoneNumber 待查询的通话号码
+ * @param callDate 通话日期
+ * @return 笔记 ID,如果查询失败则返回 0
+ */
+/**
+ * 根据通话号码和通话日期获取对应的笔记 ID
+ *
+ * @param resolver ContentResolver 对象,用于访问应用程序数据
+ * @param phoneNumber 待查询的通话号码
+ * @param callDate 通话日期
+ * @return 笔记 ID,如果查询失败则返回 0
+ */
+public static long getNoteIdByPhoneNumberAndCallDate(ContentResolver resolver, String phoneNumber, long callDate) {
+ Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI,
+ new String[] {CallNote.NOTE_ID},
+ CallNote.CALL_DATE + "=? AND " + CallNote.MIME_TYPE + "=? AND PHONE_NUMBERS_EQUAL(" +
+ CallNote.PHONE_NUMBER + ",?)",
+ new String[] {String.valueOf(callDate), CallNote.CONTENT_ITEM_TYPE, phoneNumber},
+ null);
- public static String getFormattedSnippet(String snippet) {
- if (snippet != null) {
- snippet = snippet.trim();
- int index = snippet.indexOf('\n');
- if (index != -1) {
- snippet = snippet.substring(0, index);
+ if (cursor != null) {
+ if (cursor.moveToFirst()) {
+ try {
+ return cursor.getLong(0);
+ } catch (IndexOutOfBoundsException e) {
+ Log.e(TAG, "Get call note id fails " + e.toString());
}
}
+ cursor.close();
+ }
+ return 0;
+}
+
+/**
+ * 根据笔记 ID获取对应的摘要信息
+ *
+ * @param resolver ContentResolver 对象,用于访问应用程序数据
+ * @param noteId 待查询的笔记 ID
+ * @return 笔记对应的摘要信息,如果查询失败则抛出 IllegalArgumentException
+ */
+public static String getSnippetById(ContentResolver resolver, long noteId) {
+ Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI,
+ new String [] { NoteColumns.SNIPPET },
+ NoteColumns.ID + "=?",
+ new String [] { String.valueOf(noteId)},
+ null);
+
+ if (cursor != null) {
+ String snippet = "";
+ if (cursor.moveToFirst()) {
+ snippet = cursor.getString(0);
+ }
+ cursor.close();
return snippet;
}
+ throw new IllegalArgumentException("Note is not found with id: " + noteId);
+}
+
+/**
+ * 格式化摘要信息,只保留第一行内容并去除前后空格
+ *
+ * @param snippet 待格式化的摘要信息
+ * @return 格式化后的摘要信息
+ */
+public static String getFormattedSnippet(String snippet) {
+ if (snippet != null) {
+ snippet = snippet.trim();
+ int index = snippet.indexOf('\n');
+ if (index != -1) {
+ snippet = snippet.substring(0, index);
+ }
+ }
+ return snippet;
+}
}