diff --git a/doc/~$便签泛读报告.docx b/doc/~$便签泛读报告.docx deleted file mode 100644 index 8ae359a..0000000 Binary files a/doc/~$便签泛读报告.docx and /dev/null differ diff --git a/doc/代码标注分工.docx b/doc/代码标注分工.docx new file mode 100644 index 0000000..c98a254 Binary files /dev/null and b/doc/代码标注分工.docx differ diff --git a/doc/小米便签泛读报告.docx b/doc/小米便签泛读报告.docx index 9c1b7b9..b0d4bc9 100644 Binary files a/doc/小米便签泛读报告.docx and b/doc/小米便签泛读报告.docx differ diff --git a/doc/小米便签的代码标注.docx b/doc/小米便签的代码标注.docx new file mode 100644 index 0000000..9b86114 Binary files /dev/null and b/doc/小米便签的代码标注.docx differ diff --git a/src/Notes/.gradle/8.0/executionHistory/executionHistory.bin b/src/Notes/.gradle/8.0/executionHistory/executionHistory.bin index cfcf413..bb0f83e 100644 Binary files a/src/Notes/.gradle/8.0/executionHistory/executionHistory.bin and b/src/Notes/.gradle/8.0/executionHistory/executionHistory.bin differ diff --git a/src/Notes/.gradle/8.0/executionHistory/executionHistory.lock b/src/Notes/.gradle/8.0/executionHistory/executionHistory.lock index 1b7a6b2..a8a4684 100644 Binary files a/src/Notes/.gradle/8.0/executionHistory/executionHistory.lock and b/src/Notes/.gradle/8.0/executionHistory/executionHistory.lock differ diff --git a/src/Notes/.gradle/8.0/fileHashes/fileHashes.bin b/src/Notes/.gradle/8.0/fileHashes/fileHashes.bin index 9039f81..9f47349 100644 Binary files a/src/Notes/.gradle/8.0/fileHashes/fileHashes.bin and b/src/Notes/.gradle/8.0/fileHashes/fileHashes.bin differ diff --git a/src/Notes/.gradle/8.0/fileHashes/fileHashes.lock b/src/Notes/.gradle/8.0/fileHashes/fileHashes.lock index 3b75c96..2a4f76c 100644 Binary files a/src/Notes/.gradle/8.0/fileHashes/fileHashes.lock and b/src/Notes/.gradle/8.0/fileHashes/fileHashes.lock differ diff --git a/src/Notes/.gradle/8.0/fileHashes/resourceHashesCache.bin b/src/Notes/.gradle/8.0/fileHashes/resourceHashesCache.bin index 7df6906..285bc0c 100644 Binary files a/src/Notes/.gradle/8.0/fileHashes/resourceHashesCache.bin and b/src/Notes/.gradle/8.0/fileHashes/resourceHashesCache.bin differ diff --git a/src/Notes/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/src/Notes/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 90d166b..da7f435 100644 Binary files a/src/Notes/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/src/Notes/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/src/Notes/.gradle/buildOutputCleanup/outputFiles.bin b/src/Notes/.gradle/buildOutputCleanup/outputFiles.bin index 908624b..45267e7 100644 Binary files a/src/Notes/.gradle/buildOutputCleanup/outputFiles.bin and b/src/Notes/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/src/Notes/.gradle/file-system.probe b/src/Notes/.gradle/file-system.probe index c447823..b6d9802 100644 Binary files a/src/Notes/.gradle/file-system.probe and b/src/Notes/.gradle/file-system.probe differ diff --git a/src/Notes/app/build/intermediates/apk/debug/app-debug.apk b/src/Notes/app/build/intermediates/apk/debug/app-debug.apk index 744d756..82435ad 100644 Binary files a/src/Notes/app/build/intermediates/apk/debug/app-debug.apk and b/src/Notes/app/build/intermediates/apk/debug/app-debug.apk differ diff --git a/src/Notes/app/build/intermediates/apk_ide_redirect_file/debug/redirect.txt b/src/Notes/app/build/intermediates/apk_ide_redirect_file/debug/redirect.txt index 66652a5..46dacc6 100644 --- a/src/Notes/app/build/intermediates/apk_ide_redirect_file/debug/redirect.txt +++ b/src/Notes/app/build/intermediates/apk_ide_redirect_file/debug/redirect.txt @@ -1,2 +1,2 @@ #- File Locator - -listingFile=../../../outputs/apk/debug/output-metadata.json +listingFile=../../apk/debug/output-metadata.json diff --git a/src/Notes/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_0/graph.bin b/src/Notes/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_0/graph.bin index 5459333..8737910 100644 Binary files a/src/Notes/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_0/graph.bin and b/src/Notes/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_0/graph.bin differ diff --git a/src/Notes/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_3/graph.bin b/src/Notes/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_3/graph.bin index 85a5b3b..8fb5bea 100644 Binary files a/src/Notes/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_3/graph.bin and b/src/Notes/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_3/graph.bin differ diff --git a/src/Notes/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_5/graph.bin b/src/Notes/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_5/graph.bin index 89a6f39..a94134c 100644 Binary files a/src/Notes/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_5/graph.bin and b/src/Notes/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_5/graph.bin differ diff --git a/src/Notes/app/build/intermediates/dex/debug/mergeDexDebug/classes.dex b/src/Notes/app/build/intermediates/dex/debug/mergeDexDebug/classes.dex index 06bc5f8..1fe2149 100644 Binary files a/src/Notes/app/build/intermediates/dex/debug/mergeDexDebug/classes.dex and b/src/Notes/app/build/intermediates/dex/debug/mergeDexDebug/classes.dex differ diff --git a/src/Notes/app/build/intermediates/incremental/debug/mergeDebugResources/compile-file-map.properties b/src/Notes/app/build/intermediates/incremental/debug/mergeDebugResources/compile-file-map.properties index b631fe4..2215ade 100644 --- a/src/Notes/app/build/intermediates/incremental/debug/mergeDebugResources/compile-file-map.properties +++ b/src/Notes/app/build/intermediates/incremental/debug/mergeDebugResources/compile-file-map.properties @@ -1,4 +1,4 @@ -#Sun Nov 26 21:16:44 CST 2023 +#Fri Dec 22 19:43:31 CST 2023 net.micode.notes.app-main-6\:/color/primary_text_dark.xml=D\:\\Study\\SE\\MiNotes\\src\\Notes\\app\\build\\intermediates\\merged_res\\debug\\color_primary_text_dark.xml.flat net.micode.notes.app-main-6\:/color/secondary_text_dark.xml=D\:\\Study\\SE\\MiNotes\\src\\Notes\\app\\build\\intermediates\\merged_res\\debug\\color_secondary_text_dark.xml.flat net.micode.notes.app-main-6\:/drawable-hdpi/bg_btn_set_color.png=D\:\\Study\\SE\\MiNotes\\src\\Notes\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_bg_btn_set_color.png.flat diff --git a/src/Notes/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml b/src/Notes/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml deleted file mode 100644 index 226b5bc..0000000 --- a/src/Notes/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/Notes/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values/values.xml b/src/Notes/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values/values.xml index e49b0c3..0102458 100644 --- a/src/Notes/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values/values.xml +++ b/src/Notes/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values/values.xml @@ -133,7 +133,7 @@ 短信 邮件 diff --git a/src/Notes/app/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties b/src/Notes/app/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties index bf80e98..edd62ef 100644 --- a/src/Notes/app/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +++ b/src/Notes/app/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties @@ -1,4 +1,4 @@ -#Sun Nov 26 21:16:44 CST 2023 +#Fri Dec 22 19:43:31 CST 2023 net.micode.notes.app-main-5\:/color/primary_text_dark.xml=D\:\\Study\\SE\\MiNotes\\src\\Notes\\app\\build\\intermediates\\packaged_res\\debug\\color\\primary_text_dark.xml net.micode.notes.app-main-5\:/color/secondary_text_dark.xml=D\:\\Study\\SE\\MiNotes\\src\\Notes\\app\\build\\intermediates\\packaged_res\\debug\\color\\secondary_text_dark.xml net.micode.notes.app-main-5\:/drawable-hdpi/bg_btn_set_color.png=D\:\\Study\\SE\\MiNotes\\src\\Notes\\app\\build\\intermediates\\packaged_res\\debug\\drawable-hdpi-v4\\bg_btn_set_color.png diff --git a/src/Notes/app/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml b/src/Notes/app/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml deleted file mode 100644 index d65e0cc..0000000 --- a/src/Notes/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/Notes/app/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values/values.xml b/src/Notes/app/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values/values.xml index e49b0c3..0102458 100644 --- a/src/Notes/app/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values/values.xml +++ b/src/Notes/app/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values/values.xml @@ -133,7 +133,7 @@ 短信 邮件 diff --git a/src/Notes/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt b/src/Notes/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt index eacc80d..f56ec38 100644 --- a/src/Notes/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt +++ b/src/Notes/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt @@ -1,4 +1,4 @@ -#Sun Nov 26 21:19:33 CST 2023 +#Fri Dec 22 19:43:32 CST 2023 base.0=D\:\\Study\\SE\\MiNotes\\src\\Notes\\app\\build\\intermediates\\dex\\debug\\mergeDexDebug\\classes.dex path.0=classes.dex renamed.0=classes.dex diff --git a/src/Notes/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/androidResources b/src/Notes/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/androidResources index 1ec204b..8106485 100644 Binary files a/src/Notes/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/androidResources and b/src/Notes/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/androidResources differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Contact.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Contact.class index b46f52c..bac2d9e 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Contact.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Contact.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$CallNote.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$CallNote.class index c7c17ff..3afa321 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$CallNote.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$CallNote.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$DataConstants.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$DataConstants.class index 76ef96e..dc242b5 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$DataConstants.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$DataConstants.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$TextNote.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$TextNote.class index c895fb0..009e6aa 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$TextNote.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$TextNote.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes.class index 413745e..65a3efc 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class index 1d3de0e..f99eef0 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note$NoteData.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note$NoteData.class index c40e945..f1d00ac 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note$NoteData.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note$NoteData.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note.class index d2041cc..fc87525 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class index df71afc..88b628d 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class index 98353eb..c1d88a5 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmInitReceiver.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmInitReceiver.class index a1d202d..d3e4981 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmInitReceiver.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmInitReceiver.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmReceiver.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmReceiver.class index a41b775..7118088 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmReceiver.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmReceiver.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$1.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$1.class index 029286f..4e3869d 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$1.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$1.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$2.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$2.class index e65c35c..57c1d4f 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$2.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$2.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$3.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$3.class index de51bad..8a7f8a0 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$3.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$3.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$4.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$4.class index d04cbe7..7bf0d6b 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$4.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$4.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker.class index 400d289..f185cd1 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog$1.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog$1.class index 415e755..277fe40 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog$1.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog$1.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog.class index 71e5215..aaf3a90 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu$1.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu$1.class index ddd74fd..7c0d343 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu$1.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu$1.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu.class index 54e7df6..03c8ea0 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class index fad3442..445ccf4 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter.class index 023f716..3b93e5e 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class index 5416cd3..aecdf92 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class index bb9f786..ea8b2ac 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class index 961f2f4..72aee1f 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class index 8e1f0bf..770d355 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class index 7d0a456..b73d823 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$1.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$1.class index 2040186..ec15e9e 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$1.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$1.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText.class index 3a19d3b..eb8ca51 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class index c6a45e6..55719be 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class index f6fe0bb..7bf36f7 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class index 7ccb682..98a649c 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class index c139b5d..e28e197 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class index 0a039bb..09164c1 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class index 7f92ddc..568cece 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class index db6e10f..950a358 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class index d481c3b..b1ecc29 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class index 9a930e4..649a9d5 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class index 24182b8..bd775e5 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class index 2edab7b..8b436df 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class index 3981f16..5b7c24d 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class index 99e161f..004bb5a 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class index f249e33..8ed8a58 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class index 2606021..3afadbf 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class index c4efad0..2699bd3 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class index 3529a0d..0223718 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class index 2bdb58b..5c2072b 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class index 5e432e9..0dfa320 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListItem.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListItem.class index 4596834..99150f6 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListItem.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListItem.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class index 362fa05..4d5c288 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$2.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$2.class index 8523228..47c78ef 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$2.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$2.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$3.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$3.class index d91bc85..baa7752 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$3.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$3.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$4.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$4.class index 99c7a64..1cc346a 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$4.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$4.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$5.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$5.class index 17e4d3b..320d722 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$5.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$5.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$6.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$6.class index 7b80036..0f88f2b 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$6.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$6.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$7.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$7.class index d9abeb9..4691731 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$7.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$7.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$8.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$8.class index 39e534a..56f7e5c 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$8.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$8.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class index eb938cf..8329599 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class differ diff --git a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity.class b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity.class index 0937be2..6c4e83e 100644 Binary files a/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity.class and b/src/Notes/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity.class differ diff --git a/src/Notes/app/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt b/src/Notes/app/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt index be0cf5f..2d292cc 100644 --- a/src/Notes/app/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +++ b/src/Notes/app/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt @@ -54,235 +54,234 @@ 34-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:33:22-78 35 36 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:35:5-151:19 +36-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:35:5-150:19 37 android:debuggable="true" 38 android:extractNativeLibs="true" 39 android:icon="@drawable/icon_app" 39-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:36:9-42 -40 android:label="@string/app_name" > +40 android:label="@string/app_name" 40-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:37:9-41 -41 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:38:9-52:20 -42 android:name="net.micode.notes.ui.NotesListActivity" -42-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:39:13-49 -43 android:configChanges="keyboardHidden|orientation|screenSize" -43-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:41:13-74 -44 android:exported="true" -44-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:40:13-36 -45 android:label="@string/app_name" -45-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:42:13-45 -46 android:launchMode="singleTop" -46-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:43:13-43 -47 android:theme="@style/NoteTheme" -47-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:44:13-45 -48 android:uiOptions="splitActionBarWhenNarrow" -48-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:45:13-57 +41 android:testOnly="true" > +42 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:38:9-51:20 +43 android:name="net.micode.notes.ui.NotesListActivity" +43-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:39:13-49 +44 android:configChanges="keyboardHidden|orientation|screenSize" +44-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:41:13-74 +45 android:exported="true" +45-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:40:13-36 +46 android:label="@string/app_name" +46-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:42:13-45 +47 android:launchMode="singleTop" +47-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:43:13-43 +48 android:theme="@style/NoteTheme" +48-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:44:13-45 49 android:windowSoftInputMode="adjustPan" > -49-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:46:13-52 +49-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:45:13-52 50 -50-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:48:13-51:29 +50-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:47:13-50:29 51 -51-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:49:17-69 -51-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:49:25-66 +51-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:48:17-69 +51-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:48:25-66 52 53 -53-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:50:17-77 -53-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:50:27-74 +53-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:49:17-77 +53-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:49:27-74 54 55 56 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:54:9-83:20 +56-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:53:9-82:20 57 android:name="net.micode.notes.ui.NoteEditActivity" -57-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:55:13-48 +57-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:54:13-48 58 android:configChanges="keyboardHidden|orientation|screenSize" -58-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:56:13-74 +58-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:55:13-74 59 android:launchMode="singleTop" -59-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:57:13-43 +59-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:56:13-43 60 android:theme="@style/NoteTheme" > -60-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:58:13-45 +60-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:57:13-45 61 -61-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:60:13-65:29 +61-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:59:13-64:29 62 -62-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:61:17-69 -62-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:61:25-66 +62-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:60:17-69 +62-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:60:25-66 63 64 -64-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:17-76 -64-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:27-73 +64-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:61:17-76 +64-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:61:27-73 65 66 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:63:17-167 +66-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:17-167 67 android:host="com.example.notes.provider" -67-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:63:101-142 +67-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:101-142 68 android:mimeType="vnd.android.cursor.item/text_note" -68-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:63:23-75 +68-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:23-75 69 android:path="/notes" -69-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:63:143-164 +69-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:143-164 70 android:scheme="content" /> -70-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:63:76-100 +70-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:76-100 71 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:63:17-167 +71-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:17-167 72 android:host="com.example.notes.provider" -72-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:63:101-142 +72-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:101-142 73 android:mimeType="vnd.android.cursor.item/call_note" -73-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:63:23-75 +73-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:23-75 74 android:path="/notes" -74-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:63:143-164 +74-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:143-164 75 android:scheme="content" /> -75-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:63:76-100 +75-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:76-100 76 77 -77-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:68:13-73:29 +77-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:67:13-72:29 78 -78-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:69:17-79 -78-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:69:25-76 +78-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:68:17-79 +78-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:68:25-76 79 80 -80-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:17-76 -80-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:27-73 +80-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:61:17-76 +80-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:61:27-73 81 82 -82-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:63:17-167 -82-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:63:23-75 +82-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:17-167 +82-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:23-75 83 -83-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:63:17-167 -83-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:63:23-75 +83-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:17-167 +83-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:23-75 84 85 -85-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:75:13-78:29 +85-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:74:13-77:29 86 -86-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:76:17-71 -86-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:76:25-68 +86-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:75:17-71 +86-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:75:25-68 87 88 -88-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:17-76 -88-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:62:27-73 +88-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:61:17-76 +88-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:61:27-73 89 90 91 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:80:13-82:54 +91-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:79:13-81:54 92 android:name="android.app.searchable" -92-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:81:17-54 +92-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:80:17-54 93 android:resource="@xml/searchable" /> -93-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:82:17-51 +93-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:81:17-51 94 95 96 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:85:9-88:43 +96-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:84:9-87:43 97 android:name="net.micode.notes.data.NotesProvider" -97-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:86:13-63 +97-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:85:13-63 98 android:authorities="micode_notes" -98-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:87:13-47 +98-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:86:13-47 99 android:multiprocess="true" /> -99-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:88:13-40 +99-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:87:13-40 100 101 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:90:9-102:20 +101-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:89:9-101:20 102 android:name="net.micode.notes.widget.NoteWidgetProvider_2x" -102-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:91:13-57 +102-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:90:13-57 103 android:label="@string/app_widget2x2" > -103-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:92:13-50 +103-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:91:13-50 104 -104-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:93:13-97:29 +104-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:92:13-96:29 105 -105-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:94:17-84 -105-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:94:25-81 +105-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:93:17-84 +105-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:93:25-81 106 -106-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:95:17-85 -106-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:95:25-82 +106-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:94:17-85 +106-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:94:25-82 107 -107-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:96:17-85 -107-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:96:25-82 +107-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:95:17-85 +107-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:95:25-82 108 109 110 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:99:13-101:58 +110-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:98:13-100:58 111 android:name="android.appwidget.provider" -111-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:100:17-58 +111-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:99:17-58 112 android:resource="@xml/widget_2x_info" /> -112-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:101:17-55 +112-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:100:17-55 113 114 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:103:9-116:20 +114-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:102:9-115:20 115 android:name="net.micode.notes.widget.NoteWidgetProvider_4x" -115-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:104:13-57 +115-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:103:13-57 116 android:label="@string/app_widget4x4" > -116-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:105:13-50 +116-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:104:13-50 117 -117-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:93:13-97:29 +117-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:92:13-96:29 118 -118-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:94:17-84 -118-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:94:25-81 +118-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:93:17-84 +118-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:93:25-81 119 -119-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:95:17-85 -119-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:95:25-82 +119-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:94:17-85 +119-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:94:25-82 120 -120-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:96:17-85 -120-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:96:25-82 +120-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:95:17-85 +120-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:95:25-82 121 122 123 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:99:13-101:58 +123-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:98:13-100:58 124 android:name="android.appwidget.provider" -124-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:100:17-58 +124-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:99:17-58 125 android:resource="@xml/widget_4x_info" /> -125-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:101:17-55 +125-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:100:17-55 126 127 -127-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:118:9-122:20 -127-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:118:19-55 +127-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:117:9-121:20 +127-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:117:19-55 128 -128-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:119:13-121:29 +128-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:118:13-120:29 129 -129-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:120:17-79 -129-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:120:25-76 +129-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:119:17-79 +129-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:119:25-76 130 131 132 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:124:9-127:20 +132-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:123:9-126:20 133 android:name="net.micode.notes.ui.AlarmReceiver" -133-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:125:13-61 +133-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:124:13-61 134 android:process=":remote" > -134-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:126:13-38 +134-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:125:13-38 135 136 137 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:129:9-134:20 +137-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:128:9-133:20 138 android:name="net.micode.notes.ui.AlarmAlertActivity" -138-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:130:13-50 +138-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:129:13-50 139 android:label="@string/app_name" -139-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:131:13-45 +139-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:130:13-45 140 android:launchMode="singleInstance" -140-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:132:13-48 +140-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:131:13-48 141 android:theme="@android:style/Theme.Holo.Wallpaper.NoTitleBar" > -141-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:133:13-75 +141-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:132:13-75 142 143 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:136:9-141:20 +143-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:135:9-140:20 144 android:name="net.micode.notes.ui.NotesPreferenceActivity" -144-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:137:13-71 +144-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:136:13-71 145 android:label="@string/preferences_title" -145-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:138:13-54 +145-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:137:13-54 146 android:launchMode="singleTop" -146-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:139:13-43 +146-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:138:13-43 147 android:theme="@android:style/Theme.Holo.Light" > -147-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:140:13-60 +147-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:139:13-60 148 149 150 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:143:9-146:19 +150-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:142:9-145:19 151 android:name="net.micode.notes.gtask.remote.GTaskSyncService" -151-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:144:13-74 +151-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:143:13-74 152 android:exported="false" > -152-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:145:13-37 +152-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:144:13-37 153 154 155 D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:148:9-150:52 +155-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:147:9-149:52 156 android:name="android.app.default_searchable" -156-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:149:13-58 +156-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:148:13-58 157 android:value=".ui.NoteEditActivity" /> -157-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:150:13-49 +157-->D:\Study\SE\MiNotes\src\Notes\app\src\main\AndroidManifest.xml:149:13-49 158 159 160 diff --git a/src/Notes/app/build/intermediates/merged_manifest/debug/AndroidManifest.xml b/src/Notes/app/build/intermediates/merged_manifest/debug/AndroidManifest.xml index 344cc1e..10e3b54 100644 --- a/src/Notes/app/build/intermediates/merged_manifest/debug/AndroidManifest.xml +++ b/src/Notes/app/build/intermediates/merged_manifest/debug/AndroidManifest.xml @@ -37,7 +37,8 @@ android:debuggable="true" android:extractNativeLibs="true" android:icon="@drawable/icon_app" - android:label="@string/app_name" > + android:label="@string/app_name" + android:testOnly="true" > diff --git a/src/Notes/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml b/src/Notes/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml index 344cc1e..10e3b54 100644 --- a/src/Notes/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml +++ b/src/Notes/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml @@ -37,7 +37,8 @@ android:debuggable="true" android:extractNativeLibs="true" android:icon="@drawable/icon_app" - android:label="@string/app_name" > + android:label="@string/app_name" + android:testOnly="true" > diff --git a/src/Notes/app/build/intermediates/merged_res/debug/values_values.arsc.flat b/src/Notes/app/build/intermediates/merged_res/debug/values_values.arsc.flat index 40e69d2..577bcf3 100644 Binary files a/src/Notes/app/build/intermediates/merged_res/debug/values_values.arsc.flat and b/src/Notes/app/build/intermediates/merged_res/debug/values_values.arsc.flat differ diff --git a/src/Notes/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/debug.json b/src/Notes/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/debug.json index 4bf7ce0..57244ef 100644 --- a/src/Notes/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/debug.json +++ b/src/Notes/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/debug.json @@ -1,29 +1,29 @@ { "logs": [ { - "outputFile": "net.micode.notes.app-merged_res-4:/values-zh-rCN_values-zh-rCN.arsc.flat", + "outputFile": "C:\\Users\\11\\.gradle\\daemon\\8.0\\net.micode.notes.app-merged_res-4:\\values-zh-rTW_values-zh-rTW.arsc.flat", "map": [ { - "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values-zh-rCN\\strings.xml", + "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values-zh-rTW\\strings.xml", "from": { - "startLines": "121,71,70,69,68,19,20,21,112,113,120,119,26,77,78,76,75,74,90,89,88,80,60,29,30,81,72,114,67,63,38,44,49,39,59,58,57,53,52,50,51,54,55,45,66,56,64,43,48,47,46,62,42,61,40,41,65,28,34,36,33,35,32,31,25,24,97,96,99,111,104,103,105,106,108,107,98,102,100,101,95,109,110,118,116,115,117,27,79,87,92,91,93,86,85,84,83,22,23", + "startLines": "122,72,71,70,69,19,20,21,112,113,121,120,26,76,77,75,74,73,89,88,87,79,61,29,30,80,37,114,68,64,39,45,50,40,60,59,58,54,53,51,52,55,56,46,67,57,65,44,49,48,47,63,43,62,41,42,66,28,34,36,33,35,32,31,25,24,96,95,98,110,103,102,104,105,107,106,97,101,99,100,94,108,109,119,117,116,118,27,78,86,91,90,92,85,84,83,82,22,23", "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", - "startOffsets": "6653,3566,3499,3425,3374,846,887,936,6195,6241,6598,6547,1225,3938,4007,3878,3812,3748,4682,4621,4557,4141,2937,1398,1452,4196,3640,6299,3314,3097,1836,2123,2374,1890,2876,2822,2770,2571,2522,2426,2475,2618,2666,2167,3254,2717,3141,2079,2326,2269,2213,3041,2034,2998,1941,1983,3194,1346,1657,1755,1609,1707,1561,1515,1173,1119,5064,5004,5207,6120,5523,5453,5588,5667,5852,5778,5140,5397,5265,5331,4954,5957,6041,6508,6399,6350,6445,1288,4085,4497,4797,4738,4865,4448,4402,4353,4301,985,1052", - "endLines": "123,71,70,69,68,19,20,21,112,113,120,119,26,77,78,76,75,74,90,89,88,80,60,29,30,81,72,114,67,63,38,44,49,39,59,58,57,53,52,50,51,54,55,45,66,56,64,43,48,47,46,62,42,61,40,41,65,28,34,36,33,35,32,31,25,24,97,96,99,111,104,103,105,106,108,107,98,102,100,101,95,109,110,118,116,115,117,27,79,87,92,91,93,86,85,84,83,22,23", - "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,59,52,61,84,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", - "endOffsets": "6827,3634,3560,3493,3419,881,930,979,6235,6293,6647,6592,1282,4001,4079,3932,3872,3806,4732,4676,4615,4190,2992,1446,1509,4276,3716,6344,3368,3135,1884,2161,2420,1935,2931,2870,2816,2612,2565,2469,2516,2660,2711,2207,3308,2764,3188,2117,2368,2320,2263,3091,2073,3035,1977,2028,3248,1392,1701,1799,1651,1749,1603,1555,1219,1167,5134,5058,5259,6189,5582,5517,5661,5772,5951,5846,5201,5447,5325,5391,4998,6035,6114,6541,6439,6393,6502,1340,4135,4551,4859,4791,4922,4491,4442,4396,4347,1046,1113" + "startOffsets": "6629,3647,3580,3506,3455,846,887,936,6169,6215,6574,6523,1225,3911,3980,3851,3784,3720,4654,4593,4529,4114,3018,1398,1452,4169,1805,6273,3395,3178,1917,2204,2455,1971,2957,2903,2851,2652,2603,2507,2556,2699,2747,2248,3335,2798,3222,2160,2407,2350,2294,3122,2115,3079,2022,2064,3275,1346,1657,1755,1609,1707,1561,1515,1173,1119,5036,4976,5179,6092,5495,5425,5560,5639,5824,5750,5112,5369,5237,5303,4926,5929,6013,6484,6375,6326,6421,1288,4058,4469,4769,4710,4837,4420,4374,4325,4273,985,1052", + "endLines": "124,72,71,70,69,19,20,21,112,113,121,120,26,76,77,75,74,73,89,88,87,79,61,29,30,80,37,114,68,64,39,45,50,40,60,59,58,54,53,51,52,55,56,46,67,57,65,44,49,48,47,63,43,62,41,42,66,28,34,36,33,35,32,31,25,24,96,95,98,110,103,102,104,105,107,106,97,101,99,100,94,108,109,119,117,116,118,27,78,86,91,90,92,85,84,83,82,22,23", + "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "6803,3714,3641,3574,3500,881,930,979,6209,6267,6623,6568,1282,3974,4052,3905,3845,3778,4704,4648,4587,4163,3073,1446,1509,4248,1880,6318,3449,3216,1965,2242,2501,2016,3012,2951,2897,2693,2646,2550,2597,2741,2792,2288,3389,2845,3269,2198,2449,2401,2344,3172,2154,3116,2058,2109,3329,1392,1701,1799,1651,1749,1603,1555,1219,1167,5106,5030,5231,6161,5554,5489,5633,5744,5923,5818,5173,5419,5297,5363,4970,6007,6086,6517,6415,6369,6478,1340,4108,4523,4831,4763,4894,4463,4414,4368,4319,1046,1113" }, "to": { "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", - "startOffsets": "215,384,457,523,596,646,686,734,782,827,884,938,988,1050,1118,1195,1254,1319,1382,1437,1497,1560,1614,1674,1727,1789,1874,1955,2005,2064,2107,2160,2203,2254,2304,2364,2417,2468,2514,2562,2610,2656,2703,2753,2798,2857,2909,2961,3004,3051,3107,3162,3217,3261,3303,3344,3394,3453,3504,3553,3602,3649,3696,3743,3788,3839,3892,3967,4026,4083,4157,4221,4290,4368,4478,4582,4655,4721,4776,4841,4906,4955,5038,5116,5154,5199,5247,5309,5366,5421,5480,5547,5605,5667,5715,5760,5808,5859,5925", + "startOffsets": "215,384,456,522,595,645,685,733,781,826,883,937,987,1049,1117,1194,1253,1319,1382,1437,1497,1560,1614,1674,1727,1789,1873,1953,2003,2062,2105,2158,2201,2252,2302,2362,2415,2466,2512,2560,2608,2654,2701,2751,2796,2855,2907,2959,3002,3049,3105,3160,3215,3259,3301,3342,3392,3451,3502,3551,3600,3647,3694,3741,3786,3837,3890,3965,4024,4081,4155,4219,4288,4366,4476,4580,4653,4719,4774,4839,4904,4953,5036,5114,5152,5197,5245,5307,5364,5419,5478,5545,5603,5665,5713,5758,5806,5857,5923", "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", - "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,59,52,61,84,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", - "endOffsets": "379,452,518,591,641,681,729,777,822,879,933,983,1045,1113,1190,1249,1314,1377,1432,1492,1555,1609,1669,1722,1784,1869,1950,2000,2059,2102,2155,2198,2249,2299,2359,2412,2463,2509,2557,2605,2651,2698,2748,2793,2852,2904,2956,2999,3046,3102,3157,3212,3256,3298,3339,3389,3448,3499,3548,3597,3644,3691,3738,3783,3834,3887,3962,4021,4078,4152,4216,4285,4363,4473,4577,4650,4716,4771,4836,4901,4950,5033,5111,5149,5194,5242,5304,5361,5416,5475,5542,5600,5662,5710,5755,5803,5854,5920,5986" + "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "379,451,517,590,640,680,728,776,821,878,932,982,1044,1112,1189,1248,1314,1377,1432,1492,1555,1609,1669,1722,1784,1868,1948,1998,2057,2100,2153,2196,2247,2297,2357,2410,2461,2507,2555,2603,2649,2696,2746,2791,2850,2902,2954,2997,3044,3100,3155,3210,3254,3296,3337,3387,3446,3497,3546,3595,3642,3689,3736,3781,3832,3885,3960,4019,4076,4150,4214,4283,4361,4471,4575,4648,4714,4769,4834,4899,4948,5031,5109,5147,5192,5240,5302,5359,5414,5473,5540,5598,5660,5708,5753,5801,5852,5918,5984" } }, { - "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values-zh-rCN\\arrays.xml", + "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values-zh-rTW\\arrays.xml", "from": { "startLines": "18", "startColumns": "4", @@ -45,6 +45,92 @@ }, { "outputFile": "net.micode.notes.app-merged_res-4:/values_values.arsc.flat", + "map": [ + { + "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values\\dimens.xml", + "from": { + "startLines": "-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "13,14,15,16,17", + "startColumns": "4,4,4,4,4", + "startOffsets": "477,529,582,635,687", + "endColumns": "51,52,52,51,51", + "endOffsets": "524,577,630,682,734" + } + }, + { + "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values\\arrays.xml", + "from": { + "startLines": "-1,-1", + "startColumns": "-1,-1", + "startOffsets": "-1,-1" + }, + "to": { + "startLines": "2,8", + "startColumns": "4,4", + "startOffsets": "105,300", + "endLines": "7,11", + "endColumns": "19,19", + "endOffsets": "295,415" + } + }, + { + "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values\\colors.xml", + "from": { + "startLines": "-1", + "startColumns": "-1", + "startOffsets": "-1" + }, + "to": { + "startLines": "12", + "startColumns": "4", + "startOffsets": "420", + "endColumns": "56", + "endOffsets": "472" + } + }, + { + "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values\\strings.xml", + "from": { + "startLines": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "18,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "739,1092,1188,1271,1367,1436,1479,1531,1583,1632,1695,1753,1804,1888,1982,2090,2161,2245,2328,2394,2477,2579,2640,2702,2753,2831,2884,2944,3049,3108,3210,3265,3336,3385,3443,3490,3549,3606,3677,3738,3795,3845,3897,3950,4000,4050,4110,4163,4229,4291,4354,4401,4456,4544,4602,4664,4714,4759,4802,4862,4929,4984,5039,5092,5139,5192,5248,5296,5351,5404,5488,5555,5619,5715,5789,5870,5959,6122,6266,6345,6420,6502,6561,6641,6721,6776,6898,7001,7042,7095,7152,7226,7291,7359,7445,7525,7594,7688,7747,7802,7864,7924,8034", + "endLines": "22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124", + "endColumns": "14,95,82,95,68,42,51,51,48,62,57,50,83,93,107,70,83,82,65,82,101,60,61,50,77,52,59,104,58,101,54,70,48,57,46,58,56,70,60,56,49,51,52,49,49,59,52,65,61,62,46,54,87,57,61,49,44,42,59,66,54,54,52,46,52,55,47,54,52,83,66,63,95,73,80,88,162,143,78,74,81,58,79,79,54,121,102,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89", + "endOffsets": "1087,1183,1266,1362,1431,1474,1526,1578,1627,1690,1748,1799,1883,1977,2085,2156,2240,2323,2389,2472,2574,2635,2697,2748,2826,2879,2939,3044,3103,3205,3260,3331,3380,3438,3485,3544,3601,3672,3733,3790,3840,3892,3945,3995,4045,4105,4158,4224,4286,4349,4396,4451,4539,4597,4659,4709,4754,4797,4857,4924,4979,5034,5087,5134,5187,5243,5291,5346,5399,5483,5550,5614,5710,5784,5865,5954,6117,6261,6340,6415,6497,6556,6636,6716,6771,6893,6996,7037,7090,7147,7221,7286,7354,7440,7520,7589,7683,7742,7797,7859,7919,8029,8119" + } + }, + { + "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values\\styles.xml", + "from": { + "startLines": "-1,-1,64,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "-1,-1,4,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,2704,-1,-1,-1,-1,-1,-1,-1,-1", + "endLines": "-1,-1,67,-1,-1,-1,-1,-1,-1,-1,-1", + "endColumns": "-1,-1,12,-1,-1,-1,-1,-1,-1,-1,-1", + "endOffsets": "-1,-1,2913,-1,-1,-1,-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "125,129,133,137,140,144,148,152,156,160,164", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "8124,8328,8539,8749,8909,9092,9277,9462,9665,9871,10054", + "endLines": "128,132,136,139,143,147,151,155,159,163,167", + "endColumns": "12,12,12,12,12,12,12,12,12,12,12", + "endOffsets": "8323,8534,8744,8904,9087,9272,9457,9660,9866,10049,10250" + } + } + ] + }, + { + "outputFile": "C:\\Users\\11\\.gradle\\daemon\\8.0\\net.micode.notes.app-merged_res-4:\\values_values.arsc.flat", "map": [ { "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values\\dimens.xml", @@ -140,29 +226,29 @@ ] }, { - "outputFile": "net.micode.notes.app-merged_res-4:/values-zh-rTW_values-zh-rTW.arsc.flat", + "outputFile": "C:\\Users\\11\\.gradle\\daemon\\8.0\\net.micode.notes.app-merged_res-4:\\values-zh-rCN_values-zh-rCN.arsc.flat", "map": [ { - "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values-zh-rTW\\strings.xml", + "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values-zh-rCN\\strings.xml", "from": { - "startLines": "122,72,71,70,69,19,20,21,112,113,121,120,26,76,77,75,74,73,89,88,87,79,61,29,30,80,37,114,68,64,39,45,50,40,60,59,58,54,53,51,52,55,56,46,67,57,65,44,49,48,47,63,43,62,41,42,66,28,34,36,33,35,32,31,25,24,96,95,98,110,103,102,104,105,107,106,97,101,99,100,94,108,109,119,117,116,118,27,78,86,91,90,92,85,84,83,82,22,23", + "startLines": "121,71,70,69,68,19,20,21,112,113,120,119,26,77,78,76,75,74,90,89,88,80,60,29,30,81,72,114,67,63,38,44,49,39,59,58,57,53,52,50,51,54,55,45,66,56,64,43,48,47,46,62,42,61,40,41,65,28,34,36,33,35,32,31,25,24,97,96,99,111,104,103,105,106,108,107,98,102,100,101,95,109,110,118,116,115,117,27,79,87,92,91,93,86,85,84,83,22,23", "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", - "startOffsets": "6629,3647,3580,3506,3455,846,887,936,6169,6215,6574,6523,1225,3911,3980,3851,3784,3720,4654,4593,4529,4114,3018,1398,1452,4169,1805,6273,3395,3178,1917,2204,2455,1971,2957,2903,2851,2652,2603,2507,2556,2699,2747,2248,3335,2798,3222,2160,2407,2350,2294,3122,2115,3079,2022,2064,3275,1346,1657,1755,1609,1707,1561,1515,1173,1119,5036,4976,5179,6092,5495,5425,5560,5639,5824,5750,5112,5369,5237,5303,4926,5929,6013,6484,6375,6326,6421,1288,4058,4469,4769,4710,4837,4420,4374,4325,4273,985,1052", - "endLines": "124,72,71,70,69,19,20,21,112,113,121,120,26,76,77,75,74,73,89,88,87,79,61,29,30,80,37,114,68,64,39,45,50,40,60,59,58,54,53,51,52,55,56,46,67,57,65,44,49,48,47,63,43,62,41,42,66,28,34,36,33,35,32,31,25,24,96,95,98,110,103,102,104,105,107,106,97,101,99,100,94,108,109,119,117,116,118,27,78,86,91,90,92,85,84,83,82,22,23", - "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", - "endOffsets": "6803,3714,3641,3574,3500,881,930,979,6209,6267,6623,6568,1282,3974,4052,3905,3845,3778,4704,4648,4587,4163,3073,1446,1509,4248,1880,6318,3449,3216,1965,2242,2501,2016,3012,2951,2897,2693,2646,2550,2597,2741,2792,2288,3389,2845,3269,2198,2449,2401,2344,3172,2154,3116,2058,2109,3329,1392,1701,1799,1651,1749,1603,1555,1219,1167,5106,5030,5231,6161,5554,5489,5633,5744,5923,5818,5173,5419,5297,5363,4970,6007,6086,6517,6415,6369,6478,1340,4108,4523,4831,4763,4894,4463,4414,4368,4319,1046,1113" + "startOffsets": "6653,3566,3499,3425,3374,846,887,936,6195,6241,6598,6547,1225,3938,4007,3878,3812,3748,4682,4621,4557,4141,2937,1398,1452,4196,3640,6299,3314,3097,1836,2123,2374,1890,2876,2822,2770,2571,2522,2426,2475,2618,2666,2167,3254,2717,3141,2079,2326,2269,2213,3041,2034,2998,1941,1983,3194,1346,1657,1755,1609,1707,1561,1515,1173,1119,5064,5004,5207,6120,5523,5453,5588,5667,5852,5778,5140,5397,5265,5331,4954,5957,6041,6508,6399,6350,6445,1288,4085,4497,4797,4738,4865,4448,4402,4353,4301,985,1052", + "endLines": "123,71,70,69,68,19,20,21,112,113,120,119,26,77,78,76,75,74,90,89,88,80,60,29,30,81,72,114,67,63,38,44,49,39,59,58,57,53,52,50,51,54,55,45,66,56,64,43,48,47,46,62,42,61,40,41,65,28,34,36,33,35,32,31,25,24,97,96,99,111,104,103,105,106,108,107,98,102,100,101,95,109,110,118,116,115,117,27,79,87,92,91,93,86,85,84,83,22,23", + "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,59,52,61,84,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "6827,3634,3560,3493,3419,881,930,979,6235,6293,6647,6592,1282,4001,4079,3932,3872,3806,4732,4676,4615,4190,2992,1446,1509,4276,3716,6344,3368,3135,1884,2161,2420,1935,2931,2870,2816,2612,2565,2469,2516,2660,2711,2207,3308,2764,3188,2117,2368,2320,2263,3091,2073,3035,1977,2028,3248,1392,1701,1799,1651,1749,1603,1555,1219,1167,5134,5058,5259,6189,5582,5517,5661,5772,5951,5846,5201,5447,5325,5391,4998,6035,6114,6541,6439,6393,6502,1340,4135,4551,4859,4791,4922,4491,4442,4396,4347,1046,1113" }, "to": { "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", - "startOffsets": "215,384,456,522,595,645,685,733,781,826,883,937,987,1049,1117,1194,1253,1319,1382,1437,1497,1560,1614,1674,1727,1789,1873,1953,2003,2062,2105,2158,2201,2252,2302,2362,2415,2466,2512,2560,2608,2654,2701,2751,2796,2855,2907,2959,3002,3049,3105,3160,3215,3259,3301,3342,3392,3451,3502,3551,3600,3647,3694,3741,3786,3837,3890,3965,4024,4081,4155,4219,4288,4366,4476,4580,4653,4719,4774,4839,4904,4953,5036,5114,5152,5197,5245,5307,5364,5419,5478,5545,5603,5665,5713,5758,5806,5857,5923", + "startOffsets": "215,384,457,523,596,646,686,734,782,827,884,938,988,1050,1118,1195,1254,1319,1382,1437,1497,1560,1614,1674,1727,1789,1874,1955,2005,2064,2107,2160,2203,2254,2304,2364,2417,2468,2514,2562,2610,2656,2703,2753,2798,2857,2909,2961,3004,3051,3107,3162,3217,3261,3303,3344,3394,3453,3504,3553,3602,3649,3696,3743,3788,3839,3892,3967,4026,4083,4157,4221,4290,4368,4478,4582,4655,4721,4776,4841,4906,4955,5038,5116,5154,5199,5247,5309,5366,5421,5480,5547,5605,5667,5715,5760,5808,5859,5925", "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", - "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", - "endOffsets": "379,451,517,590,640,680,728,776,821,878,932,982,1044,1112,1189,1248,1314,1377,1432,1492,1555,1609,1669,1722,1784,1868,1948,1998,2057,2100,2153,2196,2247,2297,2357,2410,2461,2507,2555,2603,2649,2696,2746,2791,2850,2902,2954,2997,3044,3100,3155,3210,3254,3296,3337,3387,3446,3497,3546,3595,3642,3689,3736,3781,3832,3885,3960,4019,4076,4150,4214,4283,4361,4471,4575,4648,4714,4769,4834,4899,4948,5031,5109,5147,5192,5240,5302,5359,5414,5473,5540,5598,5660,5708,5753,5801,5852,5918,5984" + "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,59,52,61,84,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "379,452,518,591,641,681,729,777,822,879,933,983,1045,1113,1190,1249,1314,1377,1432,1492,1555,1609,1669,1722,1784,1869,1950,2000,2059,2102,2155,2198,2249,2299,2359,2412,2463,2509,2557,2605,2651,2698,2748,2793,2852,2904,2956,2999,3046,3102,3157,3212,3256,3298,3339,3389,3448,3499,3548,3597,3644,3691,3738,3783,3834,3887,3962,4021,4078,4152,4216,4285,4363,4473,4577,4650,4716,4771,4836,4901,4950,5033,5111,5149,5194,5242,5304,5361,5416,5475,5542,5600,5662,5710,5755,5803,5854,5920,5986" } }, { - "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values-zh-rTW\\arrays.xml", + "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values-zh-rCN\\arrays.xml", "from": { "startLines": "18", "startColumns": "4", diff --git a/src/Notes/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values.json b/src/Notes/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values.json index 2c4b0e6..79e33e9 100644 --- a/src/Notes/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values.json +++ b/src/Notes/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values.json @@ -1,7 +1,7 @@ { "logs": [ { - "outputFile": "net.micode.notes.app-mergeDebugResources-2:/values/values.xml", + "outputFile": "C:\\Users\\11\\.gradle\\daemon\\8.0\\net.micode.notes.app-mergeDebugResources-2:\\values\\values.xml", "map": [ { "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values\\dimens.xml", @@ -95,6 +95,92 @@ } } ] + }, + { + "outputFile": "net.micode.notes.app-mergeDebugResources-2:/values/values.xml", + "map": [ + { + "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values\\dimens.xml", + "from": { + "startLines": "-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "13,14,15,16,17", + "startColumns": "4,4,4,4,4", + "startOffsets": "477,529,582,635,687", + "endColumns": "51,52,52,51,51", + "endOffsets": "524,577,630,682,734" + } + }, + { + "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values\\arrays.xml", + "from": { + "startLines": "-1,-1", + "startColumns": "-1,-1", + "startOffsets": "-1,-1" + }, + "to": { + "startLines": "2,8", + "startColumns": "4,4", + "startOffsets": "105,300", + "endLines": "7,11", + "endColumns": "19,19", + "endOffsets": "295,415" + } + }, + { + "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values\\colors.xml", + "from": { + "startLines": "-1", + "startColumns": "-1", + "startOffsets": "-1" + }, + "to": { + "startLines": "12", + "startColumns": "4", + "startOffsets": "420", + "endColumns": "56", + "endOffsets": "472" + } + }, + { + "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values\\strings.xml", + "from": { + "startLines": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "18,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "739,1092,1188,1271,1367,1436,1479,1531,1583,1632,1695,1753,1804,1888,1982,2090,2161,2245,2328,2394,2477,2579,2640,2702,2753,2831,2884,2944,3049,3108,3210,3265,3336,3385,3443,3490,3549,3606,3677,3738,3795,3845,3897,3950,4000,4050,4110,4163,4229,4291,4354,4401,4456,4544,4602,4664,4714,4759,4802,4862,4929,4984,5039,5092,5139,5192,5248,5296,5351,5404,5488,5555,5619,5715,5789,5870,5959,6122,6266,6345,6420,6502,6561,6641,6721,6776,6898,7001,7042,7095,7152,7226,7291,7359,7445,7525,7594,7688,7747,7802,7864,7924,8034", + "endLines": "22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124", + "endColumns": "14,95,82,95,68,42,51,51,48,62,57,50,83,93,107,70,83,82,65,82,101,60,61,50,77,52,59,104,58,101,54,70,48,57,46,58,56,70,60,56,49,51,52,49,49,59,52,65,61,62,46,54,87,57,61,49,44,42,59,66,54,54,52,46,52,55,47,54,52,83,66,63,95,73,80,88,162,143,78,74,81,58,79,79,54,121,102,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89", + "endOffsets": "1087,1183,1266,1362,1431,1474,1526,1578,1627,1690,1748,1799,1883,1977,2085,2156,2240,2323,2389,2472,2574,2635,2697,2748,2826,2879,2939,3044,3103,3205,3260,3331,3380,3438,3485,3544,3601,3672,3733,3790,3840,3892,3945,3995,4045,4105,4158,4224,4286,4349,4396,4451,4539,4597,4659,4709,4754,4797,4857,4924,4979,5034,5087,5134,5187,5243,5291,5346,5399,5483,5550,5614,5710,5784,5865,5954,6117,6261,6340,6415,6497,6556,6636,6716,6771,6893,6996,7037,7090,7147,7221,7286,7354,7440,7520,7589,7683,7742,7797,7859,7919,8029,8119" + } + }, + { + "source": "D:\\Study\\SE\\MiNotes\\src\\Notes\\app\\src\\main\\res\\values\\styles.xml", + "from": { + "startLines": "-1,-1,64,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "-1,-1,4,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,2704,-1,-1,-1,-1,-1,-1,-1,-1", + "endLines": "-1,-1,67,-1,-1,-1,-1,-1,-1,-1,-1", + "endColumns": "-1,-1,12,-1,-1,-1,-1,-1,-1,-1,-1", + "endOffsets": "-1,-1,2913,-1,-1,-1,-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "125,129,133,137,140,144,148,152,156,160,164", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "8124,8328,8539,8749,8909,9092,9277,9462,9665,9871,10054", + "endLines": "128,132,136,139,143,147,151,155,159,163,167", + "endColumns": "12,12,12,12,12,12,12,12,12,12,12", + "endOffsets": "8323,8534,8744,8904,9087,9272,9457,9660,9866,10049,10250" + } + } + ] } ] } \ No newline at end of file diff --git a/src/Notes/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml b/src/Notes/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml index 344cc1e..10e3b54 100644 --- a/src/Notes/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml +++ b/src/Notes/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml @@ -37,7 +37,8 @@ android:debuggable="true" android:extractNativeLibs="true" android:icon="@drawable/icon_app" - android:label="@string/app_name" > + android:label="@string/app_name" + android:testOnly="true" > diff --git a/src/Notes/app/build/intermediates/packaged_res/debug/values/values.xml b/src/Notes/app/build/intermediates/packaged_res/debug/values/values.xml index e49b0c3..0102458 100644 --- a/src/Notes/app/build/intermediates/packaged_res/debug/values/values.xml +++ b/src/Notes/app/build/intermediates/packaged_res/debug/values/values.xml @@ -133,7 +133,7 @@ \ No newline at end of file diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml new file mode 100644 index 0000000..c71be5b --- /dev/null +++ b/src/main/AndroidManifest.xml @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/data/Contact.java b/src/main/java/net/micode/notes/data/Contact.java similarity index 75% rename from src/data/Contact.java rename to src/main/java/net/micode/notes/data/Contact.java index d14d710..d65c239 100644 --- a/src/data/Contact.java +++ b/src/main/java/net/micode/notes/data/Contact.java @@ -24,9 +24,25 @@ import android.telephony.PhoneNumberUtils; import android.util.Log; import java.util.HashMap; - -public class Contact {/*声明了Contact这个类*/ - private static HashMap sContactCache;//创建一个HashMap类型的静态变量,作为缓存 +/** + * @Package: net.micode.notes.data + * @ClassName: Contact + * @Description: + * Contact类用于查询联系人信息并进行缓存。 + * 该类包含一个静态的HashMap作为缓存,存储电话号码和对应的联系人名字。 + * 通过调用getContact方法可以根据给定的电话号码查询联系人名字。 + * 如果缓存中已经存在该电话号码对应的联系人名字,则直接返回缓存中的结果,否则通过查询数据库获取联系人名字并更新缓存。 + * 该类还定义了一个私有的SQL筛选语句用于查询联系人信息。 + * 注意:该类是线程不安全的,如果需要在多线程环境下使用,请做好同步控制 + * @Author: YangYizhe + * @CreateDate: 12/17/2023 10:10 AM + * @Version: 1.0 + */ +public class Contact { + /** + * 作为缓存,存储电话号码和对应的联系人名字 + */ + private static HashMap sContactCache; private static final String TAG = "Contact";//设置日志TAG标签 //查询联系人的SQL筛选语句 diff --git a/src/data/Notes.java b/src/main/java/net/micode/notes/data/Notes.java similarity index 93% rename from src/data/Notes.java rename to src/main/java/net/micode/notes/data/Notes.java index f240604..aba2dbb 100644 --- a/src/data/Notes.java +++ b/src/main/java/net/micode/notes/data/Notes.java @@ -17,9 +17,11 @@ package net.micode.notes.data; import android.net.Uri; +//Notes类就定义了很多常量,是小米便签的数据库 public class Notes { public static final String AUTHORITY = "micode_notes"; public static final String TAG = "Notes"; + //三个type public static final int TYPE_NOTE = 0; public static final int TYPE_FOLDER = 1; public static final int TYPE_SYSTEM = 2; @@ -30,6 +32,7 @@ public class Notes { * {@link Notes#ID_TEMPARAY_FOLDER } is for notes belonging no folder * {@link Notes#ID_CALL_RECORD_FOLDER} is to store call records */ + //不同种类的文件夹 public static final int ID_ROOT_FOLDER = 0; public static final int ID_TEMPARAY_FOLDER = -1; public static final int ID_CALL_RECORD_FOLDER = -2; @@ -45,12 +48,12 @@ public class Notes { public static final int TYPE_WIDGET_INVALIDE = -1; public static final int TYPE_WIDGET_2X = 0; public static final int TYPE_WIDGET_4X = 1; - + //数据常量 包括普通note和call_note public static class DataConstants { public static final String NOTE = TextNote.CONTENT_ITEM_TYPE; public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE; } - + //两个指针,一个找便签和文件夹,一个用来找数据 /** * Uri to query all notes and folders */ @@ -59,9 +62,11 @@ public class Notes { /** * Uri to query data */ - public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + AUTHORITY + "/data"); + public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + AUTHORITY + "/data"); + //Notecolumns类,用于创建数据库的表头 public interface NoteColumns { + //具体每一项都给了英文注释 /** * The unique ID for a row *

Type: INTEGER (long)

@@ -165,8 +170,14 @@ public class Notes { *

Type : INTEGER (long)

*/ public static final String VERSION = "version"; - } + public static final String PASSWORD = "password"; + + public static final String IMPORTANCE = "importance"; + }//便签的各种属性 + /* + * 便签数据在数据库中的表头 + */ public interface DataColumns { /** * The unique ID for a row @@ -239,7 +250,7 @@ public class Notes { *

Type: TEXT

*/ public static final String DATA5 = "data5"; - } + }//一个便签内部各种数据类型 public static final class TextNote implements DataColumns { /** @@ -255,7 +266,7 @@ public class Notes { public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/text_note"; public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/text_note"); - } + }//一种是文本textnote public static final class CallNote implements DataColumns { /** @@ -275,5 +286,5 @@ public class Notes { public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/call_note"; public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/call_note"); - } + }//另一种是通话类型的callnote } diff --git a/src/data/NotesDatabaseHelper.java b/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java similarity index 92% rename from src/data/NotesDatabaseHelper.java rename to src/main/java/net/micode/notes/data/NotesDatabaseHelper.java index ffe5d57..bedbf65 100644 --- a/src/data/NotesDatabaseHelper.java +++ b/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java @@ -21,17 +21,17 @@ import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; - +//引用了同一个包中的另一个子包Notes中一些接口 import net.micode.notes.data.Notes.DataColumns; import net.micode.notes.data.Notes.DataConstants; import net.micode.notes.data.Notes.NoteColumns; - +//数据库操作 public class NotesDatabaseHelper extends SQLiteOpenHelper { private static final String DB_NAME = "note.db"; private static final int DB_VERSION = 4; - + //接口两部分一个Note一个DATA public interface TABLE { public static final String NOTE = "note"; @@ -41,7 +41,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { private static final String TAG = "NotesDatabaseHelper"; private static NotesDatabaseHelper mInstance; - + //基于NoteColumn创建一个NOTE_TABLE表格,并附上初始数据 private static final String CREATE_NOTE_TABLE_SQL = "CREATE TABLE " + TABLE.NOTE + "(" + NoteColumns.ID + " INTEGER PRIMARY KEY," + @@ -62,7 +62,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { NoteColumns.GTASK_ID + " TEXT NOT NULL DEFAULT ''," + NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0" + ")"; - + //主要基于datacolumn来创建DATA_TABLE private static final String CREATE_DATA_TABLE_SQL = "CREATE TABLE " + TABLE.DATA + "(" + DataColumns.ID + " INTEGER PRIMARY KEY," + @@ -77,7 +77,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { DataColumns.DATA4 + " TEXT NOT NULL DEFAULT ''," + DataColumns.DATA5 + " TEXT NOT NULL DEFAULT ''" + ")"; - + //这个数据是关于INDEX编号的 private static final String CREATE_DATA_NOTE_ID_INDEX_SQL = "CREATE INDEX IF NOT EXISTS note_id_index ON " + TABLE.DATA + "(" + DataColumns.NOTE_ID + ");"; @@ -93,7 +93,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + " END"; - + //移入note时触发,修改一系列数据,从哪来之类的 /** * Decrease folder's note count when move note from folder */ @@ -106,7 +106,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + " AND " + NoteColumns.NOTES_COUNT + ">0" + ";" + " END"; - + //移除Note时触发,与上面移入对应 /** * Increase folder's note count when insert new note to the folder */ @@ -118,7 +118,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + " END"; - + //插入Note /** * Decrease folder's note count when delete note from the folder */ @@ -131,7 +131,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + " AND " + NoteColumns.NOTES_COUNT + ">0;" + " END"; - + //删除note /** * Update note's content when insert data with type {@link DataConstants#NOTE} */ @@ -144,7 +144,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + " END"; - + //当给note插入新数据时触发 /** * Update note's content when data with {@link DataConstants#NOTE} type has changed */ @@ -156,7 +156,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " UPDATE " + TABLE.NOTE + " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + - " END"; + " END";//note数据被修改update /** * Update note's content when data with {@link DataConstants#NOTE} type has deleted @@ -169,7 +169,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " UPDATE " + TABLE.NOTE + " SET " + NoteColumns.SNIPPET + "=''" + " WHERE " + NoteColumns.ID + "=old." + DataColumns.NOTE_ID + ";" + - " END"; + " END";//更新已经删除的便签的数据 /** * Delete datas belong to note which has been deleted @@ -180,7 +180,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " BEGIN" + " DELETE FROM " + TABLE.DATA + " WHERE " + DataColumns.NOTE_ID + "=old." + NoteColumns.ID + ";" + - " END"; + " END";//删除 已经被删除的便签的数据 /** * Delete notes belong to folder which has been deleted @@ -191,7 +191,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " BEGIN" + " DELETE FROM " + TABLE.NOTE + " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + - " END"; + " END";//删除 已删除folder文件夹 中的便签要修改的数据 /** * Move notes belong to folder which has been moved to trash folder @@ -204,12 +204,12 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " UPDATE " + TABLE.NOTE + " SET " + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + - " END"; + " END";//移动trash_folder中的便签 public NotesDatabaseHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } - + //构造函数 public void createNoteTable(SQLiteDatabase db) { db.execSQL(CREATE_NOTE_TABLE_SQL); reCreateNoteTableTriggers(db); @@ -233,7 +233,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { db.execSQL(NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER); db.execSQL(FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER); db.execSQL(FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER); - } + }//数据库操作的API,重新创建 private void createSystemFolder(SQLiteDatabase db) { ContentValues values = new ContentValues(); @@ -268,14 +268,14 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); db.insert(TABLE.NOTE, null, values); - } + }//创建系统文件夹 public void createDataTable(SQLiteDatabase db) { db.execSQL(CREATE_DATA_TABLE_SQL); reCreateDataTableTriggers(db); db.execSQL(CREATE_DATA_NOTE_ID_INDEX_SQL); Log.d(TAG, "data table has been created"); - } + }//创建数据表格 private void reCreateDataTableTriggers(SQLiteDatabase db) { db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_insert"); @@ -285,20 +285,20 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER); db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER); db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER); - } + }//类似于recreatenotetable,重新创建触发器 static synchronized NotesDatabaseHelper getInstance(Context context) { if (mInstance == null) { mInstance = new NotesDatabaseHelper(context); } return mInstance; - } + }//sync同步,同一时刻只有一个线程执行 @Override public void onCreate(SQLiteDatabase db) { createNoteTable(db); createDataTable(db); - } + }//创建Note Data两个表格 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { @@ -331,14 +331,14 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { throw new IllegalStateException("Upgrade notes database to version " + newVersion + "fails"); } - } + }//数据库版本更新 private void upgradeToV2(SQLiteDatabase db) { db.execSQL("DROP TABLE IF EXISTS " + TABLE.NOTE); db.execSQL("DROP TABLE IF EXISTS " + TABLE.DATA); createNoteTable(db); createDataTable(db); - } + }//更新到V2 private void upgradeToV3(SQLiteDatabase db) { // drop unused triggers @@ -353,10 +353,10 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); db.insert(TABLE.NOTE, null, values); - } + }//更新到V3 private void upgradeToV4(SQLiteDatabase db) { db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0"); - } + }//更新到V4 } diff --git a/src/data/NotesProvider.java b/src/main/java/net/micode/notes/data/NotesProvider.java similarity index 80% rename from src/data/NotesProvider.java rename to src/main/java/net/micode/notes/data/NotesProvider.java index edb0a60..6897999 100644 --- a/src/data/NotesProvider.java +++ b/src/main/java/net/micode/notes/data/NotesProvider.java @@ -1,22 +1,5 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.data; - import android.app.SearchManager; import android.content.ContentProvider; import android.content.ContentUris; @@ -33,9 +16,15 @@ import net.micode.notes.R; import net.micode.notes.data.Notes.DataColumns; import net.micode.notes.data.Notes.NoteColumns; import net.micode.notes.data.NotesDatabaseHelper.TABLE; - - +//为存储和获取数据提供接口。可以在不同的应用程序之间共享数据 +//ContentProvider提供的方法 +//query:查询 +//insert:插入 +//update:更新 +//delete:删除 +//getType:得到数据类型 public class NotesProvider extends ContentProvider { + // UriMatcher用于匹配Uri private static final UriMatcher mMatcher; private NotesDatabaseHelper mHelper; @@ -51,7 +40,9 @@ public class NotesProvider extends ContentProvider { private static final int URI_SEARCH_SUGGEST = 6; static { + // 创建UriMatcher时,调用UriMatcher(UriMatcher.NO_MATCH)表示不匹配任何路径的返回码 mMatcher = new UriMatcher(UriMatcher.NO_MATCH); + // 把需要匹配Uri路径全部给注册上 mMatcher.addURI(Notes.AUTHORITY, "note", URI_NOTE); mMatcher.addURI(Notes.AUTHORITY, "note/#", URI_NOTE_ITEM); mMatcher.addURI(Notes.AUTHORITY, "data", URI_DATA); @@ -65,33 +56,40 @@ public class NotesProvider extends ContentProvider { * x'0A' represents the '\n' character in sqlite. For title and content in the search result, * we will trim '\n' and white space in order to show more information. */ + // 声明 NOTES_SEARCH_PROJECTION private static final String NOTES_SEARCH_PROJECTION = NoteColumns.ID + "," - + NoteColumns.ID + " AS " + SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA + "," - + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_1 + "," - + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_2 + "," - + R.drawable.search_result + " AS " + SearchManager.SUGGEST_COLUMN_ICON_1 + "," - + "'" + Intent.ACTION_VIEW + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_ACTION + "," - + "'" + Notes.TextNote.CONTENT_TYPE + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA; - + + NoteColumns.ID + " AS " + SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA + "," + + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_1 + "," + + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_2 + "," + + R.drawable.search_result + " AS " + SearchManager.SUGGEST_COLUMN_ICON_1 + "," + + "'" + Intent.ACTION_VIEW + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_ACTION + "," + + "'" + Notes.TextNote.CONTENT_TYPE + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA; + // 声明NOTES_SNIPPET_SEARCH_QUERY private static String NOTES_SNIPPET_SEARCH_QUERY = "SELECT " + NOTES_SEARCH_PROJECTION - + " FROM " + TABLE.NOTE - + " WHERE " + NoteColumns.SNIPPET + " LIKE ?" - + " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER - + " AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE; + + " FROM " + TABLE.NOTE + + " WHERE " + NoteColumns.SNIPPET + " LIKE ?" + + " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER + + " AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE; @Override + // Context只有在onCreate()中才被初始化 + // 对mHelper进行实例化 public boolean onCreate() { mHelper = NotesDatabaseHelper.getInstance(getContext()); return true; } @Override + // 查询uri在数据库中对应的位置 public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, - String sortOrder) { + String sortOrder) { Cursor c = null; + // 获取可读数据库 SQLiteDatabase db = mHelper.getReadableDatabase(); String id = null; + // 匹配查找uri switch (mMatcher.match(uri)) { + // 对于不同的匹配值,在数据库中查找相应的条目 case URI_NOTE: c = db.query(TABLE.NOTE, projection, selection, selectionArgs, null, null, sortOrder); @@ -113,6 +111,7 @@ public class NotesProvider extends ContentProvider { case URI_SEARCH: case URI_SEARCH_SUGGEST: if (sortOrder != null || projection != null) { + // 不合法的参数异常 throw new IllegalArgumentException( "do not specify sortOrder, selection, selectionArgs, or projection" + "with this query"); } @@ -120,6 +119,8 @@ public class NotesProvider extends ContentProvider { String searchString = null; if (mMatcher.match(uri) == URI_SEARCH_SUGGEST) { if (uri.getPathSegments().size() > 1) { + // getPathSegments()方法得到一个String的List, + // 在uri.getPathSegments().get(1)为第2个元素 searchString = uri.getPathSegments().get(1); } } else { @@ -139,6 +140,7 @@ public class NotesProvider extends ContentProvider { } break; default: + // 抛出异常 throw new IllegalArgumentException("Unknown URI " + uri); } if (c != null) { @@ -148,13 +150,17 @@ public class NotesProvider extends ContentProvider { } @Override + // 插入一个uri public Uri insert(Uri uri, ContentValues values) { + // 获得可写的数据库 SQLiteDatabase db = mHelper.getWritableDatabase(); long dataId = 0, noteId = 0, insertedId = 0; switch (mMatcher.match(uri)) { + // 新增一个条目 case URI_NOTE: insertedId = noteId = db.insert(TABLE.NOTE, null, values); break; + // 如果存在,查找NOTE_ID case URI_DATA: if (values.containsKey(DataColumns.NOTE_ID)) { noteId = values.getAsLong(DataColumns.NOTE_ID); @@ -167,6 +173,7 @@ public class NotesProvider extends ContentProvider { throw new IllegalArgumentException("Unknown URI " + uri); } // Notify the note uri + // notifyChange获得一个ContextResolver对象并且更新里面的内容 if (noteId > 0) { getContext().getContentResolver().notifyChange( ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), null); @@ -178,13 +185,17 @@ public class NotesProvider extends ContentProvider { ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId), null); } + // 返回插入的uri的路径 return ContentUris.withAppendedId(uri, insertedId); } @Override + // 删除一个uri public int delete(Uri uri, String selection, String[] selectionArgs) { + //Uri代表要操作的数据,Android上可用的每种资源 -包括 图像、视频片段、音频资源等都可以用Uri来表示。 int count = 0; String id = null; + // 获得可写的数据库 SQLiteDatabase db = mHelper.getWritableDatabase(); boolean deleteData = false; switch (mMatcher.match(uri)) { @@ -228,6 +239,7 @@ public class NotesProvider extends ContentProvider { } @Override + // 更新一个uri public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { int count = 0; String id = null; @@ -267,10 +279,12 @@ public class NotesProvider extends ContentProvider { return count; } + // 将字符串解析成规定格式 private String parseSelection(String selection) { return (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : ""); } + //增加一个noteVersion private void increaseNoteVersion(long id, String selection, String[] selectionArgs) { StringBuilder sql = new StringBuilder(120); sql.append("UPDATE "); @@ -293,6 +307,7 @@ public class NotesProvider extends ContentProvider { sql.append(selectString); } + // execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句 mHelper.getWritableDatabase().execSQL(sql.toString()); } @@ -302,4 +317,4 @@ public class NotesProvider extends ContentProvider { return null; } -} +} \ No newline at end of file diff --git a/src/gtask/data/MetaData.java b/src/main/java/net/micode/notes/gtask/data/MetaData.java similarity index 100% rename from src/gtask/data/MetaData.java rename to src/main/java/net/micode/notes/gtask/data/MetaData.java diff --git a/src/gtask/data/Node.java b/src/main/java/net/micode/notes/gtask/data/Node.java similarity index 100% rename from src/gtask/data/Node.java rename to src/main/java/net/micode/notes/gtask/data/Node.java diff --git a/src/gtask/data/SqlData.java b/src/main/java/net/micode/notes/gtask/data/SqlData.java similarity index 100% rename from src/gtask/data/SqlData.java rename to src/main/java/net/micode/notes/gtask/data/SqlData.java diff --git a/src/gtask/data/SqlNote.java b/src/main/java/net/micode/notes/gtask/data/SqlNote.java similarity index 100% rename from src/gtask/data/SqlNote.java rename to src/main/java/net/micode/notes/gtask/data/SqlNote.java diff --git a/src/gtask/data/Task.java b/src/main/java/net/micode/notes/gtask/data/Task.java similarity index 100% rename from src/gtask/data/Task.java rename to src/main/java/net/micode/notes/gtask/data/Task.java diff --git a/src/gtask/data/TaskList.java b/src/main/java/net/micode/notes/gtask/data/TaskList.java similarity index 100% rename from src/gtask/data/TaskList.java rename to src/main/java/net/micode/notes/gtask/data/TaskList.java diff --git a/src/gtask/exception/ActionFailureException.java b/src/main/java/net/micode/notes/gtask/exception/ActionFailureException.java similarity index 100% rename from src/gtask/exception/ActionFailureException.java rename to src/main/java/net/micode/notes/gtask/exception/ActionFailureException.java diff --git a/src/gtask/exception/NetworkFailureException.java b/src/main/java/net/micode/notes/gtask/exception/NetworkFailureException.java similarity index 100% rename from src/gtask/exception/NetworkFailureException.java rename to src/main/java/net/micode/notes/gtask/exception/NetworkFailureException.java diff --git a/src/gtask/remote/GTaskASyncTask.java b/src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java similarity index 100% rename from src/gtask/remote/GTaskASyncTask.java rename to src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java diff --git a/src/gtask/remote/GTaskClient.java b/src/main/java/net/micode/notes/gtask/remote/GTaskClient.java similarity index 100% rename from src/gtask/remote/GTaskClient.java rename to src/main/java/net/micode/notes/gtask/remote/GTaskClient.java diff --git a/src/gtask/remote/GTaskManager.java b/src/main/java/net/micode/notes/gtask/remote/GTaskManager.java similarity index 100% rename from src/gtask/remote/GTaskManager.java rename to src/main/java/net/micode/notes/gtask/remote/GTaskManager.java diff --git a/src/gtask/remote/GTaskSyncService.java b/src/main/java/net/micode/notes/gtask/remote/GTaskSyncService.java similarity index 100% rename from src/gtask/remote/GTaskSyncService.java rename to src/main/java/net/micode/notes/gtask/remote/GTaskSyncService.java diff --git a/src/model/Note.java b/src/main/java/net/micode/notes/model/Note.java similarity index 80% rename from src/model/Note.java rename to src/main/java/net/micode/notes/model/Note.java index 6706cf6..864da2c 100644 --- a/src/model/Note.java +++ b/src/main/java/net/micode/notes/model/Note.java @@ -33,16 +33,32 @@ import net.micode.notes.data.Notes.TextNote; import java.util.ArrayList; - +/** + * @Package: net.micode.notes.model + * @ClassName: Note + * @Description: 笔记类,用于操作和管理笔记数据 + * @Author: YangYizhe + * @CreateDate: 12/17/2023 10:06 AM + * @UpdateUser: none + * @UpdateDate: 12/17/2023 10:06 AM + * @UpdateRemark: none + * @Version: 1.0 + */ public class Note { private ContentValues mNoteDiffValues; private NoteData mNoteData; private static final String TAG = "Note"; /** - * Create a new note id for adding a new note to databases + * @method getNewNoteId + * @description 获取新的笔记ID,用于向数据库中添加新的笔记 + * @date: 12/20/2023 11:23 PM + * @author: YangYizhe + * @param folderId 文件夹Id + * @return noteId 新的笔记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); @@ -69,37 +85,90 @@ public class Note { mNoteDiffValues = new ContentValues(); mNoteData = new NoteData(); } - + /** + * @method setNoteValue + * @description 设置笔记的值 + * @date: 12/20/2023 11:31 PM + * @author: YangYizhe + * @param key + * @param value + */ public void setNoteValue(String key, String value) { mNoteDiffValues.put(key, value); mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); } - + /** + * @method setTextData + * @description 设置文本数据 + * @date: 12/20/2023 11:31 PM + * @author: YangYizhe + * @param key + * @param value + */ public void setTextData(String key, String value) { mNoteData.setTextData(key, value); } - + /** + * @method setTextDataId + * @description 设置文本数据ID + * @date: 12/20/2023 11:33 PM + * @author: YangYizhe + * @param id + */ public void setTextDataId(long id) { mNoteData.setTextDataId(id); } - + /** + * @method getTextDataId + * @description 获取文本数据Id + * @date: 12/20/2023 11:34 PM + * @author: YangYizhe + * @return mTextDataId 文本数据Id + */ public long getTextDataId() { return mNoteData.mTextDataId; } - + /** + * @method setCallDataId + * @description 设置通话记录数据ID + * @date: 12/20/2023 11:35 PM + * @author: YangYizhe + * @param id 通话记录数据id + */ public void setCallDataId(long id) { mNoteData.setCallDataId(id); } - + /** + * @method setCallData + * @description 设置通话记录数据 + * @date: 12/20/2023 11:36 PM + * @author: YangYizhe + * @param key + * @param value + */ public void setCallData(String key, String value) { mNoteData.setCallData(key, value); } - + /** + * @method isLocalModified + * @description 判断笔记是否有本地修改 + * @date: 12/20/2023 11:38 PM + * @author: YangYizhe + * @return bool 是否有本地修改 + */ public boolean isLocalModified() { return mNoteDiffValues.size() > 0 || mNoteData.isLocalModified(); } - + /** + * @method syncNote + * @description 同步笔记,将本地修改的数据同步到服务器 + * @date: 12/20/2023 11:42 PM + * @author: YangYizhe + * @param context 上下文对象 + * @param noteId 笔记ID + * @return bool 是否同步成功 + */ public boolean syncNote(Context context, long noteId) { if (noteId <= 0) { throw new IllegalArgumentException("Wrong note id:" + noteId); diff --git a/src/model/WorkingNote.java b/src/main/java/net/micode/notes/model/WorkingNote.java similarity index 85% rename from src/model/WorkingNote.java rename to src/main/java/net/micode/notes/model/WorkingNote.java index be081e4..31061f9 100644 --- a/src/model/WorkingNote.java +++ b/src/main/java/net/micode/notes/model/WorkingNote.java @@ -31,7 +31,17 @@ import net.micode.notes.data.Notes.NoteColumns; import net.micode.notes.data.Notes.TextNote; import net.micode.notes.tool.ResourceParser.NoteBgResources; - +/** + * @Package: net.micode.notes.model + * @ClassName: WorkingNote + * @Description: + * 工作笔记类,用于表示一条工作笔记的信息 + * Note 类是一个基本的笔记类,包含了笔记的基本信息,如标题、内容等 + * WorkingNote 类则是在 Note 类的基础上进行扩展,增加了一些与工作笔记相关的属性和方法,例如提醒日期、背景颜色、小部件等。 + * @Author: YangYizhe + * @CreateDate: 12/20/2023 11:48 PM + * @Version: 1.0 + */ public class WorkingNote { // Note for the working note private Note mNote; @@ -59,7 +69,9 @@ public class WorkingNote { private static final String TAG = "WorkingNote"; private boolean mIsDeleted; - + /** + * 笔记设置状态变化监听器 + */ private NoteSettingChangedListener mNoteSettingStatusListener; public static final String[] DATA_PROJECTION = new String[] { @@ -102,6 +114,14 @@ public class WorkingNote { private static final int NOTE_MODIFIED_DATE_COLUMN = 5; // New note construct + /** + * @method WorkingNote + * @description 构造方法,创建一个新的工作笔记 + * @date: 12/20/2023 11:54 PM + * @author: YangYizhe + * @param context 上下文环境 + * @param folderId 笔记所属的文件夹ID + */ private WorkingNote(Context context, long folderId) { mContext = context; mAlertDate = 0; @@ -113,7 +133,15 @@ public class WorkingNote { mMode = 0; mWidgetType = Notes.TYPE_WIDGET_INVALIDE; } - + /** + * @method WorkingNote + * @description 构造方法,加载一个已存在的工作笔记 + * @date: 12/20/2023 11:54 PM + * @author: YangYizhe + * @param context 上下文环境 + * @param noteId 笔记的ID + * @param folderId 笔记所属的文件夹ID + */ // Existing note construct private WorkingNote(Context context, long noteId, long folderId) { mContext = context; @@ -123,7 +151,12 @@ public class WorkingNote { mNote = new Note(); loadNote(); } - + /** + * @method loadNote + * @description 加载笔记的详细信息 + * @date: 12/20/2023 11:55 PM + * @author: YangYizhe + */ private void loadNote() { Cursor cursor = mContext.getContentResolver().query( ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, mNoteId), NOTE_PROJECTION, null, @@ -145,7 +178,12 @@ public class WorkingNote { } loadNoteData(); } - + /** + * @method loadNoteData + * @description 加载笔记的Data + * @date: 12/20/2023 11:55 PM + * @author: YangYizhe + */ private void loadNoteData() { Cursor cursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI, DATA_PROJECTION, DataColumns.NOTE_ID + "=?", new String[] { @@ -173,7 +211,18 @@ public class WorkingNote { throw new IllegalArgumentException("Unable to find note's data with id " + mNoteId); } } - + /** + * @method createEmptyNote + * @description 创建一个空的工作笔记 + * @date: 12/20/2023 11:56 PM + * @author: YangYizhe + * @param context 上下文环境 + * @param folderId 笔记所属的文件夹ID + * @param widgetId 笔记的小部件ID + * @param widgetType 笔记的小部件类型 + * @param defaultBgColorId 笔记的默认背景颜色ID + * @return note 创建的空的工作笔记对象 + */ public static WorkingNote createEmptyNote(Context context, long folderId, int widgetId, int widgetType, int defaultBgColorId) { WorkingNote note = new WorkingNote(context, folderId); diff --git a/src/tool/BackupUtils.java b/src/main/java/net/micode/notes/tool/BackupUtils.java similarity index 100% rename from src/tool/BackupUtils.java rename to src/main/java/net/micode/notes/tool/BackupUtils.java diff --git a/src/tool/DataUtils.java b/src/main/java/net/micode/notes/tool/DataUtils.java similarity index 100% rename from src/tool/DataUtils.java rename to src/main/java/net/micode/notes/tool/DataUtils.java diff --git a/src/tool/GTaskStringUtils.java b/src/main/java/net/micode/notes/tool/GTaskStringUtils.java similarity index 100% rename from src/tool/GTaskStringUtils.java rename to src/main/java/net/micode/notes/tool/GTaskStringUtils.java diff --git a/src/tool/ResourceParser.java b/src/main/java/net/micode/notes/tool/ResourceParser.java similarity index 100% rename from src/tool/ResourceParser.java rename to src/main/java/net/micode/notes/tool/ResourceParser.java diff --git a/src/ui/AlarmAlertActivity.java b/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java similarity index 53% rename from src/ui/AlarmAlertActivity.java rename to src/main/java/net/micode/notes/ui/AlarmAlertActivity.java index 85723be..96f28bf 100644 --- a/src/ui/AlarmAlertActivity.java +++ b/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; import android.app.Activity; @@ -38,34 +22,52 @@ import net.micode.notes.data.Notes; import net.micode.notes.tool.DataUtils; import java.io.IOException; - - +/** + * @Package: net.micode.notes.ui + * @ClassName: AlarmAlertActivity + * @Description: 闹钟提醒界面 + * @Author: YangYizhe + * @CreateDate: 12/21/2023 12:02 AM + * @Version: 1.0 + */ public class AlarmAlertActivity extends Activity implements OnClickListener, OnDismissListener { - private long mNoteId; - private String mSnippet; + private long mNoteId; //文本在数据库存储中的ID号 + private String mSnippet; //闹钟提示时出现的文本片段 private static final int SNIPPET_PREW_MAX_LEN = 60; MediaPlayer mPlayer; - + /** + * @method onCreate + * @description 当 Activity 创建时调用的生命周期方法 + * @date: 12/21/2023 12:05 AM + * @author: YangYizhe + * @param savedInstanceState 保存 Activity 状态的 Bundle 对象 + * @return null + */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - requestWindowFeature(Window.FEATURE_NO_TITLE); + + requestWindowFeature(Window.FEATURE_NO_TITLE);//设置界面显示——无标题 final Window win = getWindow(); - win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); + + win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);//设置窗体属性——在锁屏时显示 if (!isScreenOn()) { - win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON + win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON//保持点亮、点亮屏幕、允许点亮时解锁 | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR); } - Intent intent = getIntent(); + Intent intent = getIntent();//获取传递的 Intent try { + // 从 Intent 中获取数据并处理——获取标签 ID mNoteId = Long.valueOf(intent.getData().getPathSegments().get(1)); + // 根据 ID 从数据库中获取标签内容 mSnippet = DataUtils.getSnippetById(this.getContentResolver(), mNoteId); + // 判断标签片段是否达到符合长度 mSnippet = mSnippet.length() > SNIPPET_PREW_MAX_LEN ? mSnippet.substring(0, SNIPPET_PREW_MAX_LEN) + getResources().getString(R.string.notelist_string_info) : mSnippet; @@ -76,21 +78,35 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD mPlayer = new MediaPlayer(); if (DataUtils.visibleInNoteDatabase(getContentResolver(), mNoteId, Notes.TYPE_NOTE)) { - showActionDialog(); - playAlarmSound(); + showActionDialog();// 显示对话框 + playAlarmSound();// 播放闹钟提示音 } else { - finish(); + finish();// 结束当前 Activity } } - + /** + * @method isScreenOn + * @description + * 判断屏幕是否锁屏,调用系统函数判断,最后返回值是布尔类型 + * @date: 12/23/2023 11:21 PM + * @author: YangYizhe + * @param + * @return + */ private boolean isScreenOn() { PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); return pm.isScreenOn(); } - + /** + * @method playAlarmSound + * @description + * 播放闹钟提示音 + * @date: 12/23/2023 11:21 PM + * @author: YangYizhe + */ private void playAlarmSound() { Uri url = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM); - + //调用系统的铃声管理URI,得到闹钟提示音 int silentModeStreams = Settings.System.getInt(getContentResolver(), Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0); @@ -102,8 +118,8 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD try { mPlayer.setDataSource(this, url); mPlayer.prepare(); - mPlayer.setLooping(true); - mPlayer.start(); + mPlayer.setLooping(true);//设置是否循环播放 + mPlayer.start();//开始播放 } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -118,41 +134,68 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD e.printStackTrace(); } } - + /** + * @method showActionDialog + * @description + * AlertDialog的构造方法全部是Protected的 + * 所以不能直接通过new一个AlertDialog来创建出一个AlertDialog。 + * 要创建一个AlertDialog,就要用到AlertDialog.Builder中的create()方法 + * 如这里的dialog就是新建了一个AlertDialog + * @date: 12/23/2023 11:28 PM + * @author: YangYizhe + */ private void showActionDialog() { AlertDialog.Builder dialog = new AlertDialog.Builder(this); - dialog.setTitle(R.string.app_name); - dialog.setMessage(mSnippet); - dialog.setPositiveButton(R.string.notealert_ok, this); + dialog.setTitle(R.string.app_name);//为对话框设置标题 + dialog.setMessage(mSnippet);//为对话框设置内容 + dialog.setPositiveButton(R.string.notealert_ok, this);//给对话框添加"Yes"按钮 if (isScreenOn()) { - dialog.setNegativeButton(R.string.notealert_enter, this); + dialog.setNegativeButton(R.string.notealert_enter, this);//对话框添加"No"按钮 } dialog.show().setOnDismissListener(this); } - + /** + * @method onClick + * @description 处理点击事件 + * @date: 12/23/2023 11:27 PM + * @author: YangYizhe + * @param dialog + * @param which + */ public void onClick(DialogInterface dialog, int which) { - switch (which) { - case DialogInterface.BUTTON_NEGATIVE: - Intent intent = new Intent(this, NoteEditActivity.class); - intent.setAction(Intent.ACTION_VIEW); - intent.putExtra(Intent.EXTRA_UID, mNoteId); - startActivity(intent); + switch (which) {//用which来选择click后下一步的操作 + case DialogInterface.BUTTON_NEGATIVE://这是取消操作 + Intent intent = new Intent(this, NoteEditActivity.class);//实现两个类间的数据传输 + intent.setAction(Intent.ACTION_VIEW);//设置动作属性 + intent.putExtra(Intent.EXTRA_UID, mNoteId);//实现key-value对 EXTRA_UID为key;mNoteId为键 + startActivity(intent);//开始动作 break; default: break; } } - + /** + * @method onDismiss + * @description 忽略 + * @date: 12/23/2023 11:25 PM + * @author: YangYizhe + * @param dialog + */ public void onDismiss(DialogInterface dialog) { - stopAlarmSound(); + stopAlarmSound();//停止闹钟声音 finish(); } - + /** + * @method stopAlarmSound + * @description 停止闹钟的声音 + * @date: 12/23/2023 11:26 PM + * @author: YangYizhe + */ private void stopAlarmSound() { if (mPlayer != null) { - mPlayer.stop(); - mPlayer.release(); + mPlayer.stop();//停止播放 + mPlayer.release();//释放MediaPlayer对象 mPlayer = null; } } -} +} \ No newline at end of file diff --git a/src/ui/AlarmInitReceiver.java b/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java similarity index 67% rename from src/ui/AlarmInitReceiver.java rename to src/main/java/net/micode/notes/ui/AlarmInitReceiver.java index f221202..1982fda 100644 --- a/src/ui/AlarmInitReceiver.java +++ b/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; import android.app.AlarmManager; @@ -27,25 +11,33 @@ import android.database.Cursor; import net.micode.notes.data.Notes; import net.micode.notes.data.Notes.NoteColumns; - +/** + * @Package: net.micode.notes.ui + * @ClassName: AlarmInitReceiver + * @Description: + * AlarmInitReceiver 是一个广播接收器(BroadcastReceiver)的类 + * 广播接收器是 Android 中常用的一种组件,用于接收并处理系统或应用发送的广播消息 + * @Author: YangYizhe + * @CreateDate: 12/21/2023 12:09 AM + * @Version: 1.0 + */ public class AlarmInitReceiver extends BroadcastReceiver { - private static final String [] PROJECTION = new String [] { - NoteColumns.ID, - NoteColumns.ALERTED_DATE - }; - + NoteColumns.ID, + NoteColumns.ALERTED_DATE + };//对数据库的操作,调用标签ID和闹钟时间 private static final int COLUMN_ID = 0; private static final int COLUMN_ALERTED_DATE = 1; @Override public void onReceive(Context context, Intent intent) { - long currentDate = System.currentTimeMillis(); + long currentDate = System.currentTimeMillis();//System.currentTimeMillis()产生一个当前的毫秒 Cursor c = context.getContentResolver().query(Notes.CONTENT_NOTE_URI, PROJECTION, NoteColumns.ALERTED_DATE + ">? AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE, new String[] { String.valueOf(currentDate) }, - null); + null);//将long变量currentDate转化为字符串 + //Cursor在这里的作用是通过查找数据库中的标签内容,找到和当前系统时间相等的标签 if (c != null) { if (c.moveToFirst()) { @@ -62,4 +54,4 @@ public class AlarmInitReceiver extends BroadcastReceiver { c.close(); } } -} +} \ No newline at end of file diff --git a/src/main/java/net/micode/notes/ui/AlarmReceiver.java b/src/main/java/net/micode/notes/ui/AlarmReceiver.java new file mode 100644 index 0000000..646f69f --- /dev/null +++ b/src/main/java/net/micode/notes/ui/AlarmReceiver.java @@ -0,0 +1,25 @@ +package net.micode.notes.ui; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +/** + * @Package: net.micode.notes.ui + * @ClassName: AlarmReceiver + * @Description: 闹钟接收器,接收到闹钟触发的广播后启动AlarmAlertActivity进行闹钟提醒 + * @Author: YangYizhe + * @CreateDate: 12/17/2023 10:02 AM + * @UpdateUser: none + * @UpdateDate: 12/17/2023 10:02 AM + * @UpdateRemark: none + * @Version: 1.0 + */ +public class AlarmReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + intent.setClass(context, AlarmAlertActivity.class);//启动AlarmAlertActivity + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(intent);//启动闹钟提醒界面 + } +} + \ No newline at end of file diff --git a/src/ui/DateTimePicker.java b/src/main/java/net/micode/notes/ui/DateTimePicker.java similarity index 77% rename from src/ui/DateTimePicker.java rename to src/main/java/net/micode/notes/ui/DateTimePicker.java index 496b0cd..9cf4ba6 100644 --- a/src/ui/DateTimePicker.java +++ b/src/main/java/net/micode/notes/ui/DateTimePicker.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; import java.text.DateFormatSymbols; @@ -27,9 +11,22 @@ import android.text.format.DateFormat; import android.view.View; import android.widget.FrameLayout; import android.widget.NumberPicker; - +/** + * @Package: net.micode.notes.ui + * @ClassName: DateTimePicker + * @Description: 继承自FrameLayout,实现了日期和时间的选择功能 + * 提供一个用户界面,让用户可以方便地选择日期和时间,并且能够监听用户对日期和时间的改变 + * 构造方法,包括默认构造方法和带参数的构造方法,用于初始化日期选择器的界面和属性; + * 一系列的回调方法,用于监听日期和时间的改变,包括日期选择、小时选择、分钟选择、上午/下午选择等; + * 一些公开的接口方法,用于设置当前日期、时间,设置24小时模式或12小时模式的切换等; + * 辅助方法,用于更新日期、小时、上午/下午选择器的界面显示和属性; + * 回调接口OnDateTimeChangedListener,用于监听日期和时间的改变事件。 + * @Author: YangYizhe + * @CreateDate: 12/21/2023 12:18 AM + * @Version: 1.0 + */ public class DateTimePicker extends FrameLayout { - + //FrameLayout是布局模板之一 private static final boolean DEFAULT_ENABLE_STATE = true; private static final int HOURS_IN_HALF_DAY = 12; @@ -45,13 +42,16 @@ public class DateTimePicker extends FrameLayout { private static final int MINUT_SPINNER_MAX_VAL = 59; private static final int AMPM_SPINNER_MIN_VAL = 0; private static final int AMPM_SPINNER_MAX_VAL = 1; - + /** + * 初始化控件 + * NumberPicker是数字选择器 + * 这里定义的四个变量全部是在设置闹钟时需要选择的变量(如日期、时、分、上午或者下午) + */ private final NumberPicker mDateSpinner; private final NumberPicker mHourSpinner; private final NumberPicker mMinuteSpinner; private final NumberPicker mAmPmSpinner; - private Calendar mDate; - + private Calendar mDate;//定义了Calendar类型的变量mDate,用于操作时间 private String[] mDateDisplayValues = new String[DAYS_IN_ALL_WEEK]; private boolean mIsAm; @@ -71,41 +71,49 @@ public class DateTimePicker extends FrameLayout { updateDateControl(); onDateTimeChanged(); } - }; + };//OnValueChangeListener,这是时间改变监听器,这里主要是对日期的监听 + private NumberPicker.OnValueChangeListener mOnHourChangedListener = new NumberPicker.OnValueChangeListener() { + //这里是对 小时(Hour) 的监听 @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { boolean isDateChanged = false; Calendar cal = Calendar.getInstance(); + //声明一个Calendar的变量cal,便于后续的操作 if (!mIs24HourView) { if (!mIsAm && oldVal == HOURS_IN_HALF_DAY - 1 && newVal == HOURS_IN_HALF_DAY) { cal.setTimeInMillis(mDate.getTimeInMillis()); cal.add(Calendar.DAY_OF_YEAR, 1); isDateChanged = true; + //这里是对于12小时制时,晚上11点和12点交替时对日期的更改 } else if (mIsAm && oldVal == HOURS_IN_HALF_DAY && newVal == HOURS_IN_HALF_DAY - 1) { cal.setTimeInMillis(mDate.getTimeInMillis()); cal.add(Calendar.DAY_OF_YEAR, -1); isDateChanged = true; } + //这里是对于12小时制时,凌晨11点和12点交替时对日期的更改 if (oldVal == HOURS_IN_HALF_DAY - 1 && newVal == HOURS_IN_HALF_DAY || oldVal == HOURS_IN_HALF_DAY && newVal == HOURS_IN_HALF_DAY - 1) { mIsAm = !mIsAm; updateAmPmControl(); - } + }//这里是对于12小时制时,中午11点和12点交替时对AM和PM的更改 } else { if (oldVal == HOURS_IN_ALL_DAY - 1 && newVal == 0) { cal.setTimeInMillis(mDate.getTimeInMillis()); cal.add(Calendar.DAY_OF_YEAR, 1); isDateChanged = true; + //这里是对于24小时制时,晚上11点和12点交替时对日期的更改 } else if (oldVal == 0 && newVal == HOURS_IN_ALL_DAY - 1) { cal.setTimeInMillis(mDate.getTimeInMillis()); cal.add(Calendar.DAY_OF_YEAR, -1); isDateChanged = true; } - } + } //这里是对于12小时制时,凌晨11点和12点交替时对日期的更改 int newHour = mHourSpinner.getValue() % HOURS_IN_HALF_DAY + (mIsAm ? 0 : HOURS_IN_HALF_DAY); + //通过数字选择器对newHour的赋值 mDate.set(Calendar.HOUR_OF_DAY, newHour); + //通过set函数将新的Hour值传给mDate onDateTimeChanged(); if (isDateChanged) { setCurrentYear(cal.get(Calendar.YEAR)); @@ -117,15 +125,19 @@ public class DateTimePicker extends FrameLayout { private NumberPicker.OnValueChangeListener mOnMinuteChangedListener = new NumberPicker.OnValueChangeListener() { @Override + //这里是对 分钟(Minute)改变的监听 public void onValueChange(NumberPicker picker, int oldVal, int newVal) { int minValue = mMinuteSpinner.getMinValue(); int maxValue = mMinuteSpinner.getMaxValue(); int offset = 0; + //设置offset,作为小时改变的一个记录数据 if (oldVal == maxValue && newVal == minValue) { offset += 1; } else if (oldVal == minValue && newVal == maxValue) { offset -= 1; } + //如果原值为59,新值为0,则offset加1 + //如果原值为0,新值为59,则offset减1 if (offset != 0) { mDate.add(Calendar.HOUR_OF_DAY, offset); mHourSpinner.setValue(getCurrentHour()); @@ -145,6 +157,7 @@ public class DateTimePicker extends FrameLayout { }; private NumberPicker.OnValueChangeListener mOnAmPmChangedListener = new NumberPicker.OnValueChangeListener() { + //对AM和PM的监听 @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { mIsAm = !mIsAm; @@ -160,24 +173,30 @@ public class DateTimePicker extends FrameLayout { public interface OnDateTimeChangedListener { void onDateTimeChanged(DateTimePicker view, int year, int month, - int dayOfMonth, int hourOfDay, int minute); + int dayOfMonth, int hourOfDay, int minute); } - + /** + * 构造方法 + */ public DateTimePicker(Context context) { - this(context, System.currentTimeMillis()); + this(context, System.currentTimeMillis());//通过对数据库的访问,获取当前的系统时间 } public DateTimePicker(Context context, long date) { - this(context, date, DateFormat.is24HourFormat(context)); + this(context, date, DateFormat.is24HourFormat(context));//上面函数的得到的是一个天文数字(1970至今的秒数),需要DateFormat将其变得有意义 } public DateTimePicker(Context context, long date, boolean is24HourView) { super(context); - mDate = Calendar.getInstance(); + mDate = Calendar.getInstance();//获取系统时间 mInitialising = true; mIsAm = getCurrentHourOfDay() >= HOURS_IN_HALF_DAY; inflate(context, R.layout.datetime_picker, this); - + /* + * 如果当前Activity里用到别的layout,比如对话框layout + * 还要设置这个layout上的其他组件的内容,就必须用inflate()方法先将对话框的layout找出来 + * 然后再用findViewById()找到它上面的其它组件 + */ mDateSpinner = (NumberPicker) findViewById(R.id.date); mDateSpinner.setMinValue(DATE_SPINNER_MIN_VAL); mDateSpinner.setMaxValue(DATE_SPINNER_MAX_VAL); @@ -185,7 +204,7 @@ public class DateTimePicker extends FrameLayout { mHourSpinner = (NumberPicker) findViewById(R.id.hour); mHourSpinner.setOnValueChangedListener(mOnHourChangedListener); - mMinuteSpinner = (NumberPicker) findViewById(R.id.minute); + mMinuteSpinner = (NumberPicker) findViewById(R.id.minute); mMinuteSpinner.setMinValue(MINUT_SPINNER_MIN_VAL); mMinuteSpinner.setMaxValue(MINUT_SPINNER_MAX_VAL); mMinuteSpinner.setOnLongPressUpdateInterval(100); @@ -214,6 +233,18 @@ public class DateTimePicker extends FrameLayout { mInitialising = false; } + /** + * @method setEnabled + * @description + * 用于设置是否启用日期选择器控件的功能 + * 先通过传入的参数enabled判断是否需要改变控件的启用状态。 + * 如果传入的参数和当前的启用状态相同,则直接返回,不进行任何操作 + * 如果传入的参数和当前的启用状态不同,则调用父类的setEnabled方法,来设置整个日期选择器控件的启用状态 + * 分别设置日期选择、分钟选择、小时选择、上午/下午选择这几个子控件的启用状态,即调用对应的setEnabled方法,并将enabled参数传入 + * @date: 12/21/2023 12:27 AM + * @author: YangYizhe + * @param enabled + */ @Override public void setEnabled(boolean enabled) { if (mIsEnabled == enabled) { @@ -226,7 +257,6 @@ public class DateTimePicker extends FrameLayout { mAmPmSpinner.setEnabled(enabled); mIsEnabled = enabled; } - @Override public boolean isEnabled() { return mIsEnabled; @@ -239,7 +269,7 @@ public class DateTimePicker extends FrameLayout { */ public long getCurrentDateInTimeMillis() { return mDate.getTimeInMillis(); - } + }//实现函数——得到当前的秒数 /** * Set the current date @@ -263,7 +293,7 @@ public class DateTimePicker extends FrameLayout { * @param minute The current minute */ public void setCurrentDate(int year, int month, - int dayOfMonth, int hourOfDay, int minute) { + int dayOfMonth, int hourOfDay, int minute) { setCurrentYear(year); setCurrentMonth(month); setCurrentDay(dayOfMonth); @@ -433,7 +463,10 @@ public class DateTimePicker extends FrameLayout { setCurrentHour(hour); updateAmPmControl(); } - + /** + * 几个辅助方法,用于更新日期、上午/下午选择和小时选择控件的显示和属性 + * 这些方法的作用是在选择器控件显示之前或用户改变了日期、时间模式时,更新相应控件的显示和属性,以保持界面的正确性和一致性 + */ private void updateDateControl() { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(mDate.getTimeInMillis()); @@ -482,4 +515,4 @@ public class DateTimePicker extends FrameLayout { getCurrentMonth(), getCurrentDay(), getCurrentHourOfDay(), getCurrentMinute()); } } -} +} \ No newline at end of file diff --git a/src/ui/DateTimePickerDialog.java b/src/main/java/net/micode/notes/ui/DateTimePickerDialog.java similarity index 57% rename from src/ui/DateTimePickerDialog.java rename to src/main/java/net/micode/notes/ui/DateTimePickerDialog.java index 2c47ba4..52640a8 100644 --- a/src/ui/DateTimePickerDialog.java +++ b/src/main/java/net/micode/notes/ui/DateTimePickerDialog.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; import java.util.Calendar; @@ -28,7 +12,20 @@ import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.text.format.DateFormat; import android.text.format.DateUtils; - +/** + * @Package: net.micode.notes.ui + * @ClassName: DateTimePickerDialog + * @Description: + * DateTimePickerDialog是一个自定义对话框,允许用户选择日期和时间。 + * 它继承自AlertDialog类,并实现OnClickListener接口。 + * 对话框包含一个DateTimePicker控件,用于选择日期和时间。 + * 通过OnDateTimeSetListener接口将选择的日期和时间传递给监听器。 + * 对话框还提供了设置24小时制和使用选择的日期更新对话框标题的方法。 + * onClick方法处理按钮点击事件,并在日期和时间设置完成时通知监听器。 + * @Author: YangYizhe + * @CreateDate: 12/21/2023 12:32 AM + * @Version: 1.0 + */ public class DateTimePickerDialog extends AlertDialog implements OnClickListener { private Calendar mDate = Calendar.getInstance(); @@ -36,17 +33,31 @@ public class DateTimePickerDialog extends AlertDialog implements OnClickListener private OnDateTimeSetListener mOnDateTimeSetListener; private DateTimePicker mDateTimePicker; + /** + * 用于接收用户设置的日期和时间的接口。 + */ public interface OnDateTimeSetListener { void OnDateTimeSet(AlertDialog dialog, long date); } + /** + * @method DateTimePickerDialog + * @description + * 构造一个新的DateTimePickerDialog + * Remind me功能的对话框 + * @date: 12/21/2023 8:01 AM + * @author: YangYizhe + * @param context 上下文环境。 + * @param date 要在对话框中显示的初始日期。 + */ public DateTimePickerDialog(Context context, long date) { super(context); mDateTimePicker = new DateTimePicker(context); setView(mDateTimePicker); + mDateTimePicker.setOnDateTimeChangedListener(new OnDateTimeChangedListener() { public void onDateTimeChanged(DateTimePicker view, int year, int month, - int dayOfMonth, int hourOfDay, int minute) { + int dayOfMonth, int hourOfDay, int minute) { mDate.set(Calendar.YEAR, year); mDate.set(Calendar.MONTH, month); mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); @@ -55,32 +66,57 @@ public class DateTimePickerDialog extends AlertDialog implements OnClickListener updateTitle(mDate.getTimeInMillis()); } }); + mDate.setTimeInMillis(date); mDate.set(Calendar.SECOND, 0); mDateTimePicker.setCurrentDate(mDate.getTimeInMillis()); + setButton(context.getString(R.string.datetime_dialog_ok), this); - setButton2(context.getString(R.string.datetime_dialog_cancel), (OnClickListener)null); + setButton2(context.getString(R.string.datetime_dialog_cancel), (OnClickListener) null); + set24HourView(DateFormat.is24HourFormat(this.getContext())); updateTitle(mDate.getTimeInMillis()); } + /** + * 设置对话框是否为24小时制。 + * + * @param is24HourView 如果对话框为24小时制,则为true;否则为false。 + */ public void set24HourView(boolean is24HourView) { mIs24HourView = is24HourView; } + /** + * 设置日期和时间设置监听器。 + * + * @param callBack 要通知的监听器。 + */ public void setOnDateTimeSetListener(OnDateTimeSetListener callBack) { mOnDateTimeSetListener = callBack; } + /** + * 使用指定的日期更新对话框标题。 + * + * @param date 要显示在标题中的日期。 + */ private void updateTitle(long date) { int flag = - DateUtils.FORMAT_SHOW_YEAR | - DateUtils.FORMAT_SHOW_DATE | - DateUtils.FORMAT_SHOW_TIME; + DateUtils.FORMAT_SHOW_YEAR | + DateUtils.FORMAT_SHOW_DATE | + DateUtils.FORMAT_SHOW_TIME; flag |= mIs24HourView ? DateUtils.FORMAT_24HOUR : DateUtils.FORMAT_24HOUR; + setTitle(DateUtils.formatDateTime(this.getContext(), date, flag)); } + /** + * 处理按钮点击事件。 + * + * @param arg0 接收到点击事件的对话框。 + * @param arg1 被点击的按钮。 + */ public void onClick(DialogInterface arg0, int arg1) { if (mOnDateTimeSetListener != null) { mOnDateTimeSetListener.OnDateTimeSet(this, mDate.getTimeInMillis()); diff --git a/src/ui/DropdownMenu.java b/src/main/java/net/micode/notes/ui/DropdownMenu.java similarity index 58% rename from src/ui/DropdownMenu.java rename to src/main/java/net/micode/notes/ui/DropdownMenu.java index 613dc74..b437d41 100644 --- a/src/ui/DropdownMenu.java +++ b/src/main/java/net/micode/notes/ui/DropdownMenu.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; import android.content.Context; @@ -26,18 +10,35 @@ import android.widget.PopupMenu; import android.widget.PopupMenu.OnMenuItemClickListener; import net.micode.notes.R; - +/** + * @Package: net.micode.notes.ui + * @ClassName: DropdownMenu + * @Description: + * DropdownMenu是一个自定义下拉菜单控件。 + * 它使用Button作为触发器,通过PopupMenu显示菜单选项。 + * 构造函数接收一个上下文环境、一个Button和菜单资源的ID。 + * 通过setOnDropdownMenuItemClickListener方法设置菜单选项的点击监听器。 + * 可以通过findItem方法查找特定的菜单选项。 + * 通过setTitle方法设置下拉菜单的标题 + * @Author: YangYizhe + * @CreateDate: 12/21/2023 12:36 AM + * @Version: 1.0 + */ public class DropdownMenu { private Button mButton; private PopupMenu mPopupMenu; + //声明一个下拉菜单 private Menu mMenu; public DropdownMenu(Context context, Button button, int menuId) { mButton = button; mButton.setBackgroundResource(R.drawable.dropdown_icon); + //设置这个view的背景 mPopupMenu = new PopupMenu(context, mButton); mMenu = mPopupMenu.getMenu(); mPopupMenu.getMenuInflater().inflate(menuId, mMenu); + //MenuInflater是用来实例化Menu目录下的Menu布局文件 + //根据ID来确认menu的内容选项 mButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { mPopupMenu.show(); @@ -53,9 +54,9 @@ public class DropdownMenu { public MenuItem findItem(int id) { return mMenu.findItem(id); - } + }//对于菜单选项的初始化,根据索引搜索菜单需要的选项 public void setTitle(CharSequence title) { mButton.setText(title); - } -} + }//布局文件,设置标题 +} \ No newline at end of file diff --git a/src/ui/FoldersListAdapter.java b/src/main/java/net/micode/notes/ui/FoldersListAdapter.java similarity index 59% rename from src/ui/FoldersListAdapter.java rename to src/main/java/net/micode/notes/ui/FoldersListAdapter.java index 96b77da..8c3a217 100644 --- a/src/ui/FoldersListAdapter.java +++ b/src/main/java/net/micode/notes/ui/FoldersListAdapter.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; import android.content.Context; @@ -28,12 +12,28 @@ import net.micode.notes.R; import net.micode.notes.data.Notes; import net.micode.notes.data.Notes.NoteColumns; - +/** + * @Package: net.micode.notes.ui + * @ClassName: FoldersListAdapter + * @Description: + * FoldersListAdapter是一个用于展示便签文件夹的列表适配器。 + * 它继承了CursorAdapter类,主要负责便签数据库和用户界面的交互。 + * 通过PROJECTION数组定义了需要从数据库中获取的数据列。 + * 它通过newView方法创建文件夹视图,并通过bindView方法将布局文件和数据绑定在一起。 + * getFolderName方法可以根据位置获取对应便签文件夹的名称 + * @Author: YangYizhe + * @CreateDate: 12/21/2023 12:37 AM + * @Version: 1.0 + */ public class FoldersListAdapter extends CursorAdapter { + //CursorAdapter是Cursor和ListView的接口 + //FoldersListAdapter继承了CursorAdapter的类 + //主要作用是便签数据库和用户的交互 + //这里就是用folder(文件夹)的形式展现给用户 public static final String [] PROJECTION = { - NoteColumns.ID, - NoteColumns.SNIPPET - }; + NoteColumns.ID, + NoteColumns.SNIPPET + };//调用数据库中便签的ID和片段 public static final int ID_COLUMN = 0; public static final int NAME_COLUMN = 1; @@ -41,12 +41,13 @@ public class FoldersListAdapter extends CursorAdapter { public FoldersListAdapter(Context context, Cursor c) { super(context, c); // TODO Auto-generated constructor stub - } + }//数据库操作 @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { + //ViewGroup是容器 return new FolderListItem(context); - } + }//创建一个文件夹,对于各文件夹中子标签的初始化 @Override public void bindView(View view, Context context, Cursor cursor) { @@ -55,20 +56,22 @@ public class FoldersListAdapter extends CursorAdapter { .getString(R.string.menu_move_parent_folder) : cursor.getString(NAME_COLUMN); ((FolderListItem) view).bind(folderName); } - } + }//将各个布局文件绑定起来 public String getFolderName(Context context, int position) { Cursor cursor = (Cursor) getItem(position); return (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) ? context .getString(R.string.menu_move_parent_folder) : cursor.getString(NAME_COLUMN); - } + }//根据数据库中标签的ID得到标签的各项内容 private class FolderListItem extends LinearLayout { private TextView mName; public FolderListItem(Context context) { super(context); + //操作数据库 inflate(context, R.layout.folder_list_item, this); + //根据布局文件的名字等信息将其找出来 mName = (TextView) findViewById(R.id.tv_folder_name); } @@ -77,4 +80,4 @@ public class FoldersListAdapter extends CursorAdapter { } } -} +} \ No newline at end of file diff --git a/src/ui/NoteEditActivity.java b/src/main/java/net/micode/notes/ui/NoteEditActivity.java similarity index 93% rename from src/ui/NoteEditActivity.java rename to src/main/java/net/micode/notes/ui/NoteEditActivity.java index 0d18cc2..8f9cea9 100644 --- a/src/ui/NoteEditActivity.java +++ b/src/main/java/net/micode/notes/ui/NoteEditActivity.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; import android.app.Activity; @@ -71,9 +55,21 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; - +/** + * @Package: net.micode.notes.ui + * @ClassName: NoteEditActivity + * @Description: + * 该类主要是针对标签的编辑 + * 继承了系统内部许多和监听有关的类 + * @Author: YangYizhe + * @CreateDate: 12/21/2023 12:47 AM + * @Version: 1.0 + */ public class NoteEditActivity extends Activity implements OnClickListener, NoteSettingChangedListener, OnTextViewChangeListener { + /** + * 类属性的定义 + */ private class HeadViewHolder { public TextView tvModified; @@ -83,7 +79,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, public ImageView ibSetBgColor; } - private static final Map sBgSelectorBtnsMap = new HashMap(); static { sBgSelectorBtnsMap.put(R.id.iv_bg_yellow, ResourceParser.YELLOW); @@ -119,21 +114,13 @@ public class NoteEditActivity extends Activity implements OnClickListener, } private static final String TAG = "NoteEditActivity"; - private HeadViewHolder mNoteHeaderHolder; - private View mHeadViewPanel; - private View mNoteBgColorSelector; - private View mFontSizeSelector; - private EditText mNoteEditor; - private View mNoteEditorPanel; - - private WorkingNote mWorkingNote; - + public WorkingNote mWorkingNote; private SharedPreferences mSharedPrefs; private int mFontSizeId; @@ -148,12 +135,13 @@ public class NoteEditActivity extends Activity implements OnClickListener, private String mUserQuery; private Pattern mPattern; - + /** + *在 Activity 创建时进行一些初始化工作,包括设置布局、初始化状态和资源等操作 + */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.note_edit); - if (savedInstanceState == null && !initActivityState(getIntent())) { finish(); return; @@ -179,6 +167,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, } } + private boolean initActivityState(Intent intent) { /** * If the user specified the {@link Intent#ACTION_VIEW} but not provided with id, @@ -188,25 +177,29 @@ public class NoteEditActivity extends Activity implements OnClickListener, if (TextUtils.equals(Intent.ACTION_VIEW, intent.getAction())) { long noteId = intent.getLongExtra(Intent.EXTRA_UID, 0); mUserQuery = ""; - /** * Starting from the searched result */ + //根据键值查找ID if (intent.hasExtra(SearchManager.EXTRA_DATA_KEY)) { noteId = Long.parseLong(intent.getStringExtra(SearchManager.EXTRA_DATA_KEY)); mUserQuery = intent.getStringExtra(SearchManager.USER_QUERY); } - + //如果ID在数据库中未找到 if (!DataUtils.visibleInNoteDatabase(getContentResolver(), noteId, Notes.TYPE_NOTE)) { Intent jump = new Intent(this, NotesListActivity.class); startActivity(jump); + //程序将跳转到上面声明的intent——jump showToast(R.string.error_note_not_exist); finish(); return false; - } else { + } + //ID在数据库中找到 + else { mWorkingNote = WorkingNote.load(this, noteId); if (mWorkingNote == null) { Log.e(TAG, "load note failed with note id" + noteId); + //打印出红色的错误信息 finish(); return false; } @@ -215,7 +208,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); } else if(TextUtils.equals(Intent.ACTION_INSERT_OR_EDIT, intent.getAction())) { - // New note long folderId = intent.getLongExtra(Notes.INTENT_EXTRA_FOLDER_ID, 0); int widgetId = intent.getIntExtra(Notes.INTENT_EXTRA_WIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); @@ -223,8 +215,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, Notes.TYPE_WIDGET_INVALIDE); int bgResId = intent.getIntExtra(Notes.INTENT_EXTRA_BACKGROUND_ID, ResourceParser.getDefaultBgId(this)); - - // Parse call-record note String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); long callDate = intent.getLongExtra(Notes.INTENT_EXTRA_CALL_DATE, 0); if (callDate != 0 && phoneNumber != null) { @@ -262,12 +252,14 @@ public class NoteEditActivity extends Activity implements OnClickListener, return true; } + @Override protected void onResume() { super.onResume(); initNoteScreen(); } + private void initNoteScreen() { mNoteEditor.setTextAppearance(this, TextAppearanceResources .getTexAppearanceResource(mFontSizeId)); @@ -300,7 +292,8 @@ public class NoteEditActivity extends Activity implements OnClickListener, long time = System.currentTimeMillis(); if (time > mWorkingNote.getAlertDate()) { mNoteHeaderHolder.tvAlertDate.setText(R.string.note_alert_expired); - } else { + } + else { mNoteHeaderHolder.tvAlertDate.setText(DateUtils.getRelativeTimeSpanString( mWorkingNote.getAlertDate(), time, DateUtils.MINUTE_IN_MILLIS)); } @@ -312,12 +305,12 @@ public class NoteEditActivity extends Activity implements OnClickListener, }; } + @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); initActivityState(intent); } - @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); @@ -332,7 +325,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, outState.putLong(Intent.EXTRA_UID, mWorkingNote.getNoteId()); Log.d(TAG, "Save working note id: " + mWorkingNote.getNoteId() + " onSaveInstanceState"); } - @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (mNoteBgColorSelector.getVisibility() == View.VISIBLE @@ -357,9 +349,10 @@ public class NoteEditActivity extends Activity implements OnClickListener, if (ev.getX() < x || ev.getX() > (x + view.getWidth()) || ev.getY() < y - || ev.getY() > (y + view.getHeight())) { - return false; - } + || ev.getY() > (y + view.getHeight())) + { + return false; + } return true; } @@ -405,7 +398,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, } clearSettingState(); } - private void updateWidget() { Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE); if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_2X) { @@ -418,13 +410,14 @@ public class NoteEditActivity extends Activity implements OnClickListener, } intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { - mWorkingNote.getWidgetId() + mWorkingNote.getWidgetId() }); sendBroadcast(intent); setResult(RESULT_OK, intent); } + public void onClick(View v) { int id = v.getId(); if (id == R.id.btn_set_bg_color) { @@ -472,14 +465,12 @@ public class NoteEditActivity extends Activity implements OnClickListener, } return false; } - public void onBackgroundColorChanged() { findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility( View.VISIBLE); mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId()); mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId()); } - @Override public boolean onPrepareOptionsMenu(Menu menu) { if (isFinishing()) { @@ -504,13 +495,13 @@ public class NoteEditActivity extends Activity implements OnClickListener, } return true; } - @Override public boolean onOptionsItemSelected(MenuItem item) { int itemId = item.getItemId(); if (itemId == R.id.menu_new_note) { createNewNote(); - } else if (itemId == R.id.menu_delete) { + } + else if (itemId == R.id.menu_delete) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(getString(R.string.alert_title_delete)); builder.setIcon(android.R.drawable.ic_dialog_alert); @@ -543,16 +534,24 @@ public class NoteEditActivity extends Activity implements OnClickListener, return true; } + /** + * @method setReminder + * @description 设置提醒Remind me + * @date: 12/21/2023 8:04 AM + * @author: YangYizhe + */ private void setReminder() { DateTimePickerDialog d = new DateTimePickerDialog(this, System.currentTimeMillis()); d.setOnDateTimeSetListener(new OnDateTimeSetListener() { public void OnDateTimeSet(AlertDialog dialog, long date) { mWorkingNote.setAlertDate(date , true); + //选择提醒的日期 } }); d.show(); } + /** * Share note to apps that support {@link Intent#ACTION_SEND} action * and {@text/plain} type @@ -563,7 +562,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, intent.setType("text/plain"); context.startActivity(intent); } - private void createNewNote() { // Firstly, save current editing notes saveNote(); @@ -575,7 +573,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mWorkingNote.getFolderId()); startActivity(intent); } - private void deleteCurrentNote() { if (mWorkingNote.existInDatabase()) { HashSet ids = new HashSet(); @@ -597,11 +594,9 @@ public class NoteEditActivity extends Activity implements OnClickListener, } mWorkingNote.markDeleted(true); } - private boolean isSyncMode() { return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0; } - public void onClockAlertChanged(long date, boolean set) { /** * User could set clock to an unsaved note, so before setting the @@ -631,11 +626,9 @@ public class NoteEditActivity extends Activity implements OnClickListener, showToast(R.string.error_note_empty_for_clock); } } - public void onWidgetChanged() { updateWidget(); } - public void onEditTextDelete(int index, String text) { int childCount = mEditTextList.getChildCount(); if (childCount == 1) { @@ -661,7 +654,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, edit.requestFocus(); edit.setSelection(length); } - public void onEditTextEnter(int index, String text) { /** * Should not happen, check for debug @@ -680,7 +672,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, .setIndex(i); } } - private void switchToListMode(String text) { mEditTextList.removeAllViews(); String[] items = text.split("\n"); @@ -697,7 +688,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, mNoteEditor.setVisibility(View.GONE); mEditTextList.setVisibility(View.VISIBLE); } - private Spannable getHighlightQueryResult(String fullText, String userQuery) { SpannableString spannable = new SpannableString(fullText == null ? "" : fullText); if (!TextUtils.isEmpty(userQuery)) { @@ -714,7 +704,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, } return spannable; } - private View getListItem(String item, int index) { View view = LayoutInflater.from(this).inflate(R.layout.note_edit_list_item, null); final NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); @@ -745,7 +734,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, edit.setText(getHighlightQueryResult(item, mUserQuery)); return view; } - public void onTextChange(int index, boolean hasText) { if (index >= mEditTextList.getChildCount()) { Log.e(TAG, "Wrong index, should not happen"); @@ -761,43 +749,64 @@ public class NoteEditActivity extends Activity implements OnClickListener, public void onCheckListModeChanged(int oldMode, int newMode) { if (newMode == TextNote.MODE_CHECK_LIST) { switchToListMode(mNoteEditor.getText().toString()); + //检查模式切换到列表模式 } else { if (!getWorkingText()) { mWorkingNote.setWorkingText(mWorkingNote.getContent().replace(TAG_UNCHECKED + " ", "")); } + //若是获取到文本就改变其检查标记 mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery)); mEditTextList.setVisibility(View.GONE); mNoteEditor.setVisibility(View.VISIBLE); + //修改文本编辑器的内容和可见性 } } - private boolean getWorkingText() { boolean hasChecked = false; + //初始化check标记 if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { + // 若模式为CHECK_LIST StringBuilder sb = new StringBuilder(); + //创建可变字符串 for (int i = 0; i < mEditTextList.getChildCount(); i++) { View view = mEditTextList.getChildAt(i); + //遍历所有子编辑框的视图 NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); if (!TextUtils.isEmpty(edit.getText())) { + //若文本不为空 if (((CheckBox) view.findViewById(R.id.cb_edit_item)).isChecked()) { + //该选项框已打钩 sb.append(TAG_CHECKED).append(" ").append(edit.getText()).append("\n"); hasChecked = true; + //扩展字符串为已打钩并把标记置true } else { sb.append(TAG_UNCHECKED).append(" ").append(edit.getText()).append("\n"); + //扩展字符串添加未打钩 } } } mWorkingNote.setWorkingText(sb.toString()); + //利用编辑好的字符串设置运行便签的内容 } else { mWorkingNote.setWorkingText(mNoteEditor.getText().toString()); + // 若不是该模式直接用编辑器中的内容设置运行中标签的内容 } return hasChecked; } - + /** + * @method saveNote + * @description + * 保存便签,退出时候会自动调本函数 + * @date: 12/21/2023 8:14 AM + * @author: YangYizhe + * @param + * @return + */ private boolean saveNote() { getWorkingText(); boolean saved = mWorkingNote.saveNote(); + //运行 getWorkingText()之后保存 if (saved) { /** * There are two modes from List view to edit view, open one note, @@ -806,11 +815,20 @@ public class NoteEditActivity extends Activity implements OnClickListener, * new node requires to the top of the list. This code * {@link #RESULT_OK} is used to identify the create/edit state */ + //如英文注释所说链接RESULT_OK是为了识别保存的2种情况,一是创建后保存,二是修改后保存 setResult(RESULT_OK); } return saved; } - + /** + * @method sendToDesktop + * @description + * send to home功能,发到桌面上 + * @date: 12/21/2023 8:15 AM + * @author: YangYizhe + * @param + * @return + */ private void sendToDesktop() { /** * Before send message to home, we should make sure that current @@ -845,18 +863,15 @@ public class NoteEditActivity extends Activity implements OnClickListener, showToast(R.string.error_note_empty_for_send_to_desktop); } } - private String makeShortcutIconTitle(String content) { content = content.replace(TAG_CHECKED, ""); content = content.replace(TAG_UNCHECKED, ""); return content.length() > SHORTCUT_ICON_TITLE_MAX_LEN ? content.substring(0, SHORTCUT_ICON_TITLE_MAX_LEN) : content; } - private void showToast(int resId) { showToast(resId, Toast.LENGTH_SHORT); } - private void showToast(int resId, int duration) { Toast.makeText(this, resId, duration).show(); } diff --git a/src/ui/NoteEditText.java b/src/main/java/net/micode/notes/ui/NoteEditText.java similarity index 75% rename from src/ui/NoteEditText.java rename to src/main/java/net/micode/notes/ui/NoteEditText.java index 2afe2a8..c935358 100644 --- a/src/ui/NoteEditText.java +++ b/src/main/java/net/micode/notes/ui/NoteEditText.java @@ -37,15 +37,28 @@ import net.micode.notes.R; import java.util.HashMap; import java.util.Map; +/** + * @Package: net.micode.notes.ui + * @ClassName: NoteEditText + * @Description: + * @Author: YangYizhe + * @CreateDate: 12/21/2023 12:38 AM + * @Version: 1.0 + */ public class NoteEditText extends EditText { + //常量标识 private static final String TAG = "NoteEditText"; + //声明整型变量,文本索引 private int mIndex; + //声明整型变量 private int mSelectionStartBeforeDelete; + //声明字符串常量,标志电话、网址、邮件 private static final String SCHEME_TEL = "tel:" ; private static final String SCHEME_HTTP = "http:" ; private static final String SCHEME_EMAIL = "mailto:" ; + //设置映射,将文本内容(电话、网址、邮件)做链接处理 private static final Map sSchemaActionResMap = new HashMap(); static { sSchemaActionResMap.put(SCHEME_TEL, R.string.note_link_tel); @@ -55,50 +68,75 @@ public class NoteEditText extends EditText { /** * Call by the {@link NoteEditActivity} to delete or add edit text + * 该接口用于实现对TextView组件中的文字信息进行修改 */ public interface OnTextViewChangeListener { /** * Delete current edit text when {@link KeyEvent#KEYCODE_DEL} happens * and the text is null + * 当delete键按下时删除当前编辑的文字块 */ void onEditTextDelete(int index, String text); /** * Add edit text after current edit text when {@link KeyEvent#KEYCODE_ENTER} * happen + * 当enter键按下时添加一个文字编辑块 */ void onEditTextEnter(int index, String text); /** * Hide or show item option when text change + * 当文字发生变化时隐藏或者显示设置 */ void onTextChange(int index, boolean hasText); } + //声明文本视图变化监听器 private OnTextViewChangeListener mOnTextViewChangeListener; + /** + * 构造方法,实例化NoteEditText + */ public NoteEditText(Context context) { super(context, null); mIndex = 0; } + //设置索引号 public void setIndex(int index) { mIndex = index; } - public void setOnTextViewChangeListener(OnTextViewChangeListener listener) { + /** + * 设置文本视图变化监听器 + */ + public void setOnTextViewChangeListener(OnTextViewChangeListener listener) { mOnTextViewChangeListener = listener; } - public NoteEditText(Context context, AttributeSet attrs) { + /** + * 构造方法,是由参数集(文本编辑风格)实例化NoteEditText + */ + public NoteEditText(Context context, AttributeSet attrs) { super(context, attrs, android.R.attr.editTextStyle); } - - public NoteEditText(Context context, AttributeSet attrs, int defStyle) { + /** + * 构造方法,是由参数集(文本编辑风格、定义风格)实例化NoteEditText + */ + public NoteEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } + /** + * @method onTouchEvent + * @description 处理触摸事件,根据触摸点的位置设置光标的位置 + * @date: 12/21/2023 12:41 AM + * @author: YangYizhe + * @param + * @return + */ @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { @@ -110,17 +148,23 @@ public class NoteEditText extends EditText { y -= getTotalPaddingTop(); x += getScrollX(); y += getScrollY(); - Layout layout = getLayout(); int line = layout.getLineForVertical(y); int off = layout.getOffsetForHorizontal(line, x); Selection.setSelection(getText(), off); break; } - return super.onTouchEvent(event); } - + /** + * @method onKeyDown + * @description 监听键盘按键按下 + * @date: 12/21/2023 12:40 AM + * @author: YangYizhe + * @param keyCode 键盘按键的编码 + * @param event 按键事件 + * @return boolean + */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { @@ -138,6 +182,14 @@ public class NoteEditText extends EditText { return super.onKeyDown(keyCode, event); } + /** + * @method onKeyUp + * @description 监听按键抬起 + * @date: 12/21/2023 12:39 AM + * @author: YangYizhe + * @param keyCode + * @param event + */ @Override public boolean onKeyUp(int keyCode, KeyEvent event) { switch(keyCode) { @@ -167,6 +219,15 @@ public class NoteEditText extends EditText { return super.onKeyUp(keyCode, event); } + /** + * @method onFocusChanged + * @description 处理当前视图下的焦点改变事件 + * @date: 12/21/2023 12:39 AM + * @author: YangYizhe + * @param focused 代表获得或失去焦点 + * @param direction + * @param previouslyFocusedRect 上一个访问的焦点区域 + */ @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { if (mOnTextViewChangeListener != null) { @@ -179,6 +240,14 @@ public class NoteEditText extends EditText { super.onFocusChanged(focused, direction, previouslyFocusedRect); } + /** + * @method onCreateContextMenu + * @description + * @date: 12/21/2023 12:39 AM + * @author: YangYizhe + * @param + * @return + */ @Override protected void onCreateContextMenu(ContextMenu menu) { if (getText() instanceof Spanned) { @@ -201,7 +270,6 @@ public class NoteEditText extends EditText { if (defaultResId == 0) { defaultResId = R.string.note_link_other; } - menu.add(0, 0, 0, defaultResId).setOnMenuItemClickListener( new OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { diff --git a/src/ui/NoteItemData.java b/src/main/java/net/micode/notes/ui/NoteItemData.java similarity index 100% rename from src/ui/NoteItemData.java rename to src/main/java/net/micode/notes/ui/NoteItemData.java diff --git a/src/ui/NotesListActivity.java b/src/main/java/net/micode/notes/ui/NotesListActivity.java similarity index 76% rename from src/ui/NotesListActivity.java rename to src/main/java/net/micode/notes/ui/NotesListActivity.java index edd9d4c..2b0e901 100644 --- a/src/ui/NotesListActivity.java +++ b/src/main/java/net/micode/notes/ui/NotesListActivity.java @@ -1,21 +1,6 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; +import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; @@ -77,8 +62,17 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.HashSet; - +/** + * @Package: net.micode.notes.ui + * @ClassName: NotesListActivity + * @Description: + * 小米便签的主入口,提供了一系列便签操作主要功能 + * @Author: WUSHUXIAN + * @CreateDate: 2023/12/20 23:02 + * @Version: 1.0 + */ public class NotesListActivity extends Activity implements OnClickListener, OnItemLongClickListener { + private static final int FOLDER_NOTE_LIST_QUERY_TOKEN = 0; private static final int FOLDER_LIST_QUERY_TOKEN = 1; @@ -134,36 +128,58 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt private final static int REQUEST_CODE_OPEN_NODE = 102; private final static int REQUEST_CODE_NEW_NODE = 103; - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + /** + * @method onCreate + * @description: + * @date: 2023/12/21 1:52 + * @author: WUSHUXIAN + * @param void + * @return void + */ + protected void onCreate(final Bundle savedInstanceState) { + super.onCreate(savedInstanceState); // 调用父类的onCreate函数 setContentView(R.layout.note_list); initResources(); - - /** - * Insert an introduction when user firstly use this application - */ setAppInfoFromRawRes(); } @Override + /** + * @method onActivityResult + * @description: + * 参数: + * requestCode: + * resultCode: + * data; + * @date: 2023/12/20 23:26 + * @author: WUSHUXIAN + * @param void + * @return void + */ protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && (requestCode == REQUEST_CODE_OPEN_NODE || requestCode == REQUEST_CODE_NEW_NODE)) { mNotesListAdapter.changeCursor(null); } else { - super.onActivityResult(requestCode, resultCode, data); + super.onActivityResult(requestCode, resultCode, data);// 调用 Activity 的onActivityResult() } } - + /** + * @method setAppInfoFromRawRes + * @description: + * @date: 2023/12/20 23:24 + * @author: WUSHUXIAN + * @param + * @return + */ private void setAppInfoFromRawRes() { - SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);// Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。 if (!sp.getBoolean(PREFERENCE_ADD_INTRODUCTION, false)) { StringBuilder sb = new StringBuilder(); InputStream in = null; try { - in = getResources().openRawResource(R.raw.introduction); + in = getResources().openRawResource(R.raw.introduction); if (in != null) { InputStreamReader isr = new InputStreamReader(in); BufferedReader br = new BufferedReader(isr); @@ -180,7 +196,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt e.printStackTrace(); return; } finally { - if(in != null) { + if (in != null) { try { in.close(); } catch (IOException e) { @@ -190,11 +206,13 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } } + // 创建空的WorkingNote WorkingNote note = WorkingNote.createEmptyNote(this, Notes.ID_ROOT_FOLDER, AppWidgetManager.INVALID_APPWIDGET_ID, Notes.TYPE_WIDGET_INVALIDE, ResourceParser.RED); note.setWorkingText(sb.toString()); if (note.saveNote()) { + // 更新保存note的信息 sp.edit().putBoolean(PREFERENCE_ADD_INTRODUCTION, true).commit(); } else { Log.e(TAG, "Save introduction note error"); @@ -208,19 +226,28 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt super.onStart(); startAsyncNotesListQuery(); } - + /** + * @method initResources + * @description 初始化资源 + * @date: 2023/12/20 23:09 + * @author: WUSHUXIAN + * @param + * @return + */ private void initResources() { - mContentResolver = this.getContentResolver(); + mContentResolver = this.getContentResolver(); // 获取应用程序的数据,得到类似数据表的东西 mBackgroundQueryHandler = new BackgroundQueryHandler(this.getContentResolver()); mCurrentFolderId = Notes.ID_ROOT_FOLDER; - mNotesListView = (ListView) findViewById(R.id.notes_list); + + // findViewById 是安卓编程的定位函数,主要是引用.R文件里的引用名 + mNotesListView = (ListView) findViewById(R.id.notes_list); // 绑定XML中的ListView,作为Item的容器 mNotesListView.addFooterView(LayoutInflater.from(this).inflate(R.layout.note_list_footer, null), null, false); mNotesListView.setOnItemClickListener(new OnListItemClickListener()); mNotesListView.setOnItemLongClickListener(this); mNotesListAdapter = new NotesListAdapter(this); mNotesListView.setAdapter(mNotesListAdapter); - mAddNewNote = (Button) findViewById(R.id.btn_new_note); + mAddNewNote = (Button) findViewById(R.id.btn_new_note);// 在activity中要获取该按钮 mAddNewNote.setOnClickListener(this); mAddNewNote.setOnTouchListener(new NewNoteOnTouchListener()); mDispatch = false; @@ -231,6 +258,15 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt mModeCallBack = new ModeCallback(); } + // + /** + * @Package: net.micode.notes.ui + * @ClassName: ModeCallback + * @Description: 继承自ListView.MultiChoiceModeListener 和 OnMenuItemClickListener + * @Author: WUSHUXIAN + * @CreateDate: 2023/12/20 23:37 + * @Version: 1.0 + */ private class ModeCallback implements ListView.MultiChoiceModeListener, OnMenuItemClickListener { private DropdownMenu mDropDownMenu; private ActionMode mActionMode; @@ -259,7 +295,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt (Button) customView.findViewById(R.id.selection_menu), R.menu.note_list_dropdown); mDropDownMenu.setOnDropdownMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){ - public boolean onMenuItemClick(MenuItem item) { + public boolean onMenuItemClick(final MenuItem item) { mNotesListAdapter.selectAll(!mNotesListAdapter.isAllSelected()); updateMenu(); return true; @@ -268,12 +304,19 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt }); return true; } - + /** + * @method updateMenu + * @description 更新菜单 + * @date: 2023/12/16 23:36 + * @author: WUSHUXIAN + * @param + * @return + */ private void updateMenu() { int selectedCount = mNotesListAdapter.getSelectedCount(); // Update dropdown menu String format = getResources().getString(R.string.menu_select_title, selectedCount); - mDropDownMenu.setTitle(format); + mDropDownMenu.setTitle(format); // 更改标题 MenuItem item = mDropDownMenu.findItem(R.id.action_select_all); if (item != null) { if (mNotesListAdapter.isAllSelected()) { @@ -307,11 +350,18 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } public void onItemCheckedStateChanged(ActionMode mode, int position, long id, - boolean checked) { + boolean checked) { mNotesListAdapter.setCheckedItem(position, checked); updateMenu(); } - + /** + * @method onMenuItemClick + * @description: + * @date: 2023/12/20 23:39 + * @author: WUSHUXIAN + * @param + * @return + */ public boolean onMenuItemClick(MenuItem item) { if (mNotesListAdapter.getSelectedCount() == 0) { Toast.makeText(NotesListActivity.this, getString(R.string.menu_select_none), @@ -343,78 +393,105 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt return true; } } - + //接口的实现 private class NewNoteOnTouchListener implements OnTouchListener { - public boolean onTouch(View v, MotionEvent event) { - int action = event.getAction(); - if (action == MotionEvent.ACTION_DOWN) { - Display display = getWindowManager().getDefaultDisplay(); - int screenHeight = display.getHeight(); - int newNoteViewHeight = mAddNewNote.getHeight(); - int start = screenHeight - newNoteViewHeight; - int eventY = start + (int) event.getY(); - /** - * Minus TitleBar's height - */ - if (mState == ListEditState.SUB_FOLDER) { - eventY -= mTitleBar.getHeight(); - start -= mTitleBar.getHeight(); + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: { + Display display = getWindowManager().getDefaultDisplay(); + int screenHeight = display.getHeight(); + int newNoteViewHeight = mAddNewNote.getHeight(); + int start = screenHeight - newNoteViewHeight; + int eventY = start + (int) event.getY(); + /** + * Minus TitleBar's height + */ + if (mState == ListEditState.SUB_FOLDER) { + eventY -= mTitleBar.getHeight(); + start -= mTitleBar.getHeight(); + } + /** + * HACKME:When click the transparent part of "New Note" button, dispatch + * the event to the list view behind this button. The transparent part of + * "New Note" button could be expressed by formula y=-0.12x+94锛圲nit:pixel锛� + * and the line top of the button. The coordinate based on left of the "New + * Note" button. The 94 represents maximum height of the transparent part. + * Notice that, if the background of the button changes, the formula should + * also change. This is very bad, just for the UI designer's strong requirement. + */ + if (event.getY() < (event.getX() * (-0.12) + 94)) { + View view = mNotesListView.getChildAt(mNotesListView.getChildCount() - 1 + - mNotesListView.getFooterViewsCount()); + if (view != null && view.getBottom() > start + && (view.getTop() < (start + 94))) { + mOriginY = (int) event.getY(); + mDispatchY = eventY; + event.setLocation(event.getX(), mDispatchY); + mDispatch = true; + return mNotesListView.dispatchTouchEvent(event); + } + } + break; } - /** - * HACKME:When click the transparent part of "New Note" button, dispatch - * the event to the list view behind this button. The transparent part of - * "New Note" button could be expressed by formula y=-0.12x+94(Unit:pixel) - * and the line top of the button. The coordinate based on left of the "New - * Note" button. The 94 represents maximum height of the transparent part. - * Notice that, if the background of the button changes, the formula should - * also change. This is very bad, just for the UI designer's strong requirement. - */ - if (event.getY() < (event.getX() * (-0.12) + 94)) { - View view = mNotesListView.getChildAt(mNotesListView.getChildCount() - 1 - - mNotesListView.getFooterViewsCount()); - if (view != null && view.getBottom() > start - && (view.getTop() < (start + 94))) { - mOriginY = (int) event.getY(); - mDispatchY = eventY; + case MotionEvent.ACTION_MOVE: { + if (mDispatch) { + mDispatchY += (int) event.getY() - mOriginY; event.setLocation(event.getX(), mDispatchY); - mDispatch = true; return mNotesListView.dispatchTouchEvent(event); } + break; } - } else if (action == MotionEvent.ACTION_MOVE) { - if (mDispatch) { - mDispatchY += (int) event.getY() - mOriginY; - event.setLocation(event.getX(), mDispatchY); - return mNotesListView.dispatchTouchEvent(event); - } - } else { - if (mDispatch) { - event.setLocation(event.getX(), mDispatchY); - mDispatch = false; - return mNotesListView.dispatchTouchEvent(event); + default: { + if (mDispatch) { + event.setLocation(event.getX(), mDispatchY); + mDispatch = false; + return mNotesListView.dispatchTouchEvent(event); + } + break; } } return false; } }; - + /** + * @method startAsyncNotesListQuery + * @description: 启动异步Notes列表查询 + * @date: 2023/12/20 23:45 + * @author: WUSHUXIAN + * @param + * @return + */ private void startAsyncNotesListQuery() { - String selection = (mCurrentFolderId == Notes.ID_ROOT_FOLDER) ? ROOT_FOLDER_SELECTION - : NORMAL_SELECTION; + String selection = (mCurrentFolderId == Notes.ID_ROOT_FOLDER) ? ROOT_FOLDER_SELECTION : NORMAL_SELECTION; mBackgroundQueryHandler.startQuery(FOLDER_NOTE_LIST_QUERY_TOKEN, null, - Notes.CONTENT_NOTE_URI, NoteItemData.PROJECTION, selection, new String[] { - String.valueOf(mCurrentFolderId) - }, NoteColumns.TYPE + " DESC," + NoteColumns.MODIFIED_DATE + " DESC"); + Notes.CONTENT_NOTE_URI, NoteItemData.PROJECTION, selection, new String[] {String.valueOf(mCurrentFolderId)}, + NoteColumns.TYPE + " DESC," + NoteColumns.MODIFIED_DATE + " DESC"); } - + /** + * @Package: net.micode.notes.ui + * @ClassName: BackgroundQueryHandler + * @Description: 对AsyncQueryHandler的拓展,背景查询处理 + * @Author: WUSHUXIAN + * @CreateDate: 2023/12/21 0:01 + * @Version: 1.0 + */ private final class BackgroundQueryHandler extends AsyncQueryHandler { public BackgroundQueryHandler(ContentResolver contentResolver) { super(contentResolver); } @Override + /** + * @method onQueryComplete + * @description: 在异步查询完成时调用。 + * @date: 2023/12/20 23:56 + * @author: WUSHUXIAN + * @param token 标识查询的令牌 + * @param cookie 传入的cookie对象 + * @param cursor 保存查询结果的光标 + * @return void + */ protected void onQueryComplete(int token, Object cookie, Cursor cursor) { switch (token) { case FOLDER_NOTE_LIST_QUERY_TOKEN: @@ -453,28 +530,44 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt }); builder.show(); } - + /** + * @method createNewNote + * @description 创建便签 + * @date: 12/21/2023 1:58 AM + * @author: YangYizhe + * @param + * @return + */ private void createNewNote() { Intent intent = new Intent(this, NoteEditActivity.class); intent.setAction(Intent.ACTION_INSERT_OR_EDIT); intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mCurrentFolderId); this.startActivityForResult(intent, REQUEST_CODE_NEW_NODE); } - + /** + * @method batchDelete + * @description: + * 删除便签操作 + * @date: 2023/12/21 0:14 + * @author: WUSHUXIAN + * @param + * @return void + */ + @SuppressLint("StaticFieldLeak") private void batchDelete() { new AsyncTask>() { protected HashSet doInBackground(Void... unused) { HashSet widgets = mNotesListAdapter.getSelectedWidget(); + //如果没有同步,直接删除 if (!isSyncMode()) { - // if not synced, delete notes directly if (DataUtils.batchDeleteNotes(mContentResolver, mNotesListAdapter .getSelectedItemIds())) { } else { Log.e(TAG, "Delete notes error, should not happens"); } - } else { - // in sync mode, we'll move the deleted note into the trash - // folder + } + //已同步,将删除的便签移到垃圾桶 + else { if (!DataUtils.batchMoveToFolder(mContentResolver, mNotesListAdapter .getSelectedItemIds(), Notes.ID_TRASH_FOLER)) { Log.e(TAG, "Move notes to trash folder error, should not happens"); @@ -497,7 +590,14 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } }.execute(); } - + /** + * @method deleteFolder + * @description: 删除文件夹 + * @date: 2023/12/21 0:32 + * @author: WUSHUXIAN + * @param folderId 文件标识 + * @return void + */ private void deleteFolder(long folderId) { if (folderId == Notes.ID_ROOT_FOLDER) { Log.e(TAG, "Wrong folder id, should not happen " + folderId); @@ -525,13 +625,27 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } } + /** + * @method openNode + * @description + * 打开便签的功能 + * @date: 12/21/2023 8:05 AM + * @author: YangYizhe + * @param data + */ private void openNode(NoteItemData data) { Intent intent = new Intent(this, NoteEditActivity.class); intent.setAction(Intent.ACTION_VIEW); intent.putExtra(Intent.EXTRA_UID, data.getId()); this.startActivityForResult(intent, REQUEST_CODE_OPEN_NODE); } - + /** + * @method openFolder + * @description 打开文件夹功能 + * @date: 12/21/2023 8:05 AM + * @author: YangYizhe + * @param data + */ private void openFolder(NoteItemData data) { mCurrentFolderId = data.getId(); startAsyncNotesListQuery(); @@ -548,7 +662,13 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } mTitleBar.setVisibility(View.VISIBLE); } - + /** + * @method onClick + * @description 如果碰到写便签按钮,新建便签 + * @date: 12/21/2023 8:06 AM + * @author: YangYizhe + * @param + */ public void onClick(View v) { if (v.getId() == R.id.btn_new_note) { createNewNote(); @@ -566,7 +686,14 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); } - + /** + * @method showCreateOrModifyFolderDialog + * @description: 创建或者修改文件夹时显示对话框 + * @date: 2023/12/21 0:39 + * @author: WUSHUXIAN + * @param create + * @return void + */ private void showCreateOrModifyFolderDialog(final boolean create) { final AlertDialog.Builder builder = new AlertDialog.Builder(this); View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_text, null); @@ -612,7 +739,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt values.put(NoteColumns.LOCAL_MODIFIED, 1); mContentResolver.update(Notes.CONTENT_NOTE_URI, values, NoteColumns.ID + "=?", new String[] { - String.valueOf(mFocusNoteDataItem.getId()) + String.valueOf(mFocusNoteDataItem.getId()) }); } } else if (!TextUtils.isEmpty(name)) { @@ -624,13 +751,10 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt dialog.dismiss(); } }); - + //如果便签名是空的,则禁用确认按钮 if (TextUtils.isEmpty(etName.getText())) { positive.setEnabled(false); } - /** - * When the name edit text is null, disable the positive button - */ etName.addTextChangedListener(new TextWatcher() { public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub @@ -652,6 +776,10 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt }); } + /* (non-Javadoc) + * @see android.app.Activity#onBackPressed() + * 按返回键时根据情况更改类中的数据 + */ @Override public void onBackPressed() { switch (mState) { @@ -676,6 +804,11 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } } + /** + * @param appWidgetId + * @param appWidgetType + * 根据不同类型的widget更新插件,通过intent传送数据 + */ private void updateWidget(int appWidgetId, int appWidgetType) { Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE); if (appWidgetType == Notes.TYPE_WIDGET_2X) { @@ -688,13 +821,18 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { - appWidgetId + appWidgetId }); sendBroadcast(intent); setResult(RESULT_OK, intent); } - + /** + * @method OnCreateContextMenuListener + * @description: 生成便签初始界面 + * @date: 2023/12/21 1:16 + * @author: WUSHUXIAN + */ private final OnCreateContextMenuListener mFolderOnCreateContextMenuListener = new OnCreateContextMenuListener() { public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { if (mFocusNoteDataItem != null) { @@ -714,6 +852,10 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt super.onContextMenuClosed(menu); } + /* (non-Javadoc) + * @see android.app.Activity#onContextItemSelected(android.view.MenuItem) + * 针对menu中不同的选择进行不同的处理,里面详细注释 + */ @Override public boolean onContextItemSelected(MenuItem item) { if (mFocusNoteDataItem == null) { @@ -722,10 +864,10 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } switch (item.getItemId()) { case MENU_FOLDER_VIEW: - openFolder(mFocusNoteDataItem); + openFolder(mFocusNoteDataItem);//打开对应文件 break; case MENU_FOLDER_DELETE: - AlertDialog.Builder builder = new AlertDialog.Builder(this); + AlertDialog.Builder builder = new AlertDialog.Builder(this);//设置确认是否删除的对话框 builder.setTitle(getString(R.string.alert_title_delete)); builder.setIcon(android.R.drawable.ic_dialog_alert); builder.setMessage(getString(R.string.alert_message_delete_folder)); @@ -736,7 +878,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } }); builder.setNegativeButton(android.R.string.cancel, null); - builder.show(); + builder.show();//显示对话框 break; case MENU_FOLDER_CHANGE_NAME: showCreateOrModifyFolderDialog(false); @@ -793,12 +935,22 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt return true; } + /* (non-Javadoc) + * @see android.app.Activity#onSearchRequested() + * 直接调用startSearch函数 + */ @Override public boolean onSearchRequested() { startSearch(null, false, null /* appData */, false); return true; } + /** + * @method exportNoteToText + * @description 将便签导出,export text按钮 + * @date: 12/21/2023 8:08 AM + * @author: YangYizhe + */ private void exportNoteToText() { final BackupUtils backup = BackupUtils.getInstance(NotesListActivity.this); new AsyncTask() { @@ -841,6 +993,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt }.execute(); } + private boolean isSyncMode() { return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0; } @@ -851,6 +1004,14 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt from.startActivityIfNeeded(intent, -1); } + /** + * @Package: net.micode.notes.ui + * @ClassName: NotesListActivity + * @Description: 响应了按钮的点击 + * @Author: YangYizhe + * @CreateDate: 12/21/2023 8:09 AM + * @Version: 1.0 + */ private class OnListItemClickListener implements OnItemClickListener { public void onItemClick(AdapterView parent, View view, int position, long id) { @@ -892,10 +1053,13 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } + /** + * 查询目标文件 + */ private void startQueryDestinationFolders() { String selection = NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>? AND " + NoteColumns.ID + "<>?"; selection = (mState == ListEditState.NOTE_LIST) ? selection: - "(" + selection + ") OR (" + NoteColumns.ID + "=" + Notes.ID_ROOT_FOLDER + ")"; + "(" + selection + ") OR (" + NoteColumns.ID + "=" + Notes.ID_ROOT_FOLDER + ")"; mBackgroundQueryHandler.startQuery(FOLDER_LIST_QUERY_TOKEN, null, @@ -910,6 +1074,16 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt NoteColumns.MODIFIED_DATE + " DESC"); } + /** + * @method onItemLongClick + * @description + * 长按某一项时进行的操作 + * 如果长按的是便签,则通过ActionMode菜单实现;如果长按的是文件夹,则通过ContextMenu菜单实现; + * @date: 12/21/2023 8:10 AM + * @author: YangYizhe + * @param + * @return + */ public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { if (view instanceof NotesListItem) { mFocusNoteDataItem = ((NotesListItem) view).getItemData(); @@ -926,4 +1100,4 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } return false; } -} +} \ No newline at end of file diff --git a/src/main/java/net/micode/notes/ui/NotesListAdapter.java b/src/main/java/net/micode/notes/ui/NotesListAdapter.java new file mode 100644 index 0000000..4492ca9 --- /dev/null +++ b/src/main/java/net/micode/notes/ui/NotesListAdapter.java @@ -0,0 +1,296 @@ +package net.micode.notes.ui; + +import android.content.Context; +import android.database.Cursor; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CursorAdapter; + + +import net.micode.notes.data.Notes; + +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; + +/** + * @Package: net.micode.notes.ui + * @ClassName: NotesListAdapter + * @Description: + * 直译为便签表连接器,继承了CursorAdapter,它为cursor和ListView提供了连接的桥梁。 + * 所以NotesListAdapter实现的是鼠标和编辑便签链接的桥梁 + * @Author: YangYizhe + * @CreateDate: 12/23/2023 11:35 PM + * @Version: 1.0 + */ +public class NotesListAdapter extends CursorAdapter { + private static final String TAG = "NotesListAdapter"; + private Context mContext; + private HashMap mSelectedIndex; + private int mNotesCount; //便签数 + private boolean mChoiceMode; //选择模式标记 + + /* + * 桌面widget的属性,包括编号和类型 + */ + public static class AppWidgetAttribute { + public int widgetId; + public int widgetType; + }; + /** + * @method NotesListAdapter + * @description + * 初始化便签链接器 + * 函数实现:根据传进来的内容设置相关变量 + * @date: 12/23/2023 11:35 PM + * @author: YangYizhe + * @param context + */ + public NotesListAdapter(Context context) { + super(context, null); //父类对象置空 + mSelectedIndex = new HashMap(); //新建选项下标的hash表 + mContext = context; + mNotesCount = 0; + } + + @Override + /** + * @method newView + * @description + * 新建一个视图来存储光标所指向的数据 + * 通过使用兄弟类NotesListItem新建一个项目选项 + * @date: 12/23/2023 11:35 PM + * @author: YangYizhe + * @param [context, cursor, parent] + * @return android.view.View + */ + public View newView(Context context, Cursor cursor, ViewGroup parent) { + return new NotesListItem(context); + } + @Override + /** + * @method bindView + * @description 将已经存在的视图和鼠标指向的数据进行捆绑 + * @date: 12/23/2023 11:41 PM + * @author: YangYizhe + * @param [view, context, cursor] + * @return void + */ + public void bindView(View view, Context context, Cursor cursor) { + if (view instanceof NotesListItem) { + //若view是NotesListItem的一个实例 + //则新建一个项目选项并且用bind跟将view和鼠标,内容,便签数据捆绑在一起 + NoteItemData itemData = new NoteItemData(context, cursor); + ((NotesListItem) view).bind(context, itemData, mChoiceMode, + isSelectedItem(cursor.getPosition())); + } + } + /** + * @method setCheckedItem + * @description 设置勾选框 + * @date: 12/23/2023 11:41 PM + * @author: YangYizhe + * @param checked + * @param position + * @return void + */ + public void setCheckedItem(final int position, final boolean checked) { + mSelectedIndex.put(position, checked); + //根据定位和是否勾选设置下标 + notifyDataSetChanged(); + //在修改后刷新activity + } + + public boolean isInChoiceMode() { + return mChoiceMode; + }//判断单选按钮是否勾选 + + /** + * @method setChoiceMode + * @description 设置单项选项框 + * @date: 12/23/2023 11:40 PM + * @author: YangYizhe + * @param + * @return + */ + public void setChoiceMode(boolean mode) { + mSelectedIndex.clear(); + mChoiceMode = mode; + } + + /** + * @method selectAll + * @description 选择全部选项 + * @date: 12/23/2023 11:40 PM + * @author: YangYizhe + * @param checked + */ + public void selectAll(boolean checked) { + Cursor cursor = getCursor();//获取光标位置 + for (int i = 0; i < getCount(); i++) { + if (cursor.moveToPosition(i)) { + if (NoteItemData.getNoteType(cursor) == Notes.TYPE_NOTE) { + setCheckedItem(i, checked); + } + } + } + //遍历所有光标可用的位置在判断为便签类型之后勾选单项框 + } + /** + * @method getSelectedItemIds + * @description 建立选择项的下标列表 + * @date: 12/23/2023 11:39 PM + * @author: YangYizhe + * @param + * @return + */ + public HashSet getSelectedItemIds() { + HashSet itemSet = new HashSet();//建立hash表 + for (Integer position : mSelectedIndex.keySet()) { + //遍历所有的关键 + if (mSelectedIndex.get(position) == true) { + //若光标位置可用 + Long id = getItemId(position); + if (id == Notes.ID_ROOT_FOLDER) { + //原文件不需要添加 + Log.d(TAG, "Wrong item id, should not happen"); + } else { + itemSet.add(id); + } + } + } + + return itemSet; + } + /** + * @method getSelectedWidget + * @description 建立桌面Widget的选项表 + * @date: 12/23/2023 11:39 PM + * @author: YangYizhe + * @param + * @return + */ + public HashSet getSelectedWidget() { + HashSet itemSet = new HashSet(); + for (Integer position : mSelectedIndex.keySet()) { + if (mSelectedIndex.get(position) == true) { + Cursor c = (Cursor) getItem(position); + //以上4句和getSelectedItemIds一样,不再重复 + if (c != null) { + //光标位置可用的话就建立新的Widget属性并编辑下标和类型,最后添加到选项集中 + AppWidgetAttribute widget = new AppWidgetAttribute(); + NoteItemData item = new NoteItemData(mContext, c); + widget.widgetId = item.getWidgetId(); + widget.widgetType = item.getWidgetType(); + itemSet.add(widget); + /** + * Don't close cursor here, only the adapter could close it + */ + } else { + Log.e(TAG, "Invalid cursor"); + return null; + } + } + } + return itemSet; + } + + /** + * @method getSelectedCount + * @description 获取选项个数 + * @date: 12/23/2023 11:39 PM + * @author: YangYizhe + */ + public int getSelectedCount() { + Collection values = mSelectedIndex.values();//首先获取选项下标的值 + if (null == values) { + return 0; + } + Iterator iter = values.iterator();//初始化叠加器 + int count = 0; + while (iter.hasNext()) { + if (true == iter.next()) { + count++;//若value值为真计数+1 + } + } + return count; + } + + /** + * @method isAllSelected + * @description 判断是否全部选中 + * @date: 12/23/2023 11:38 PM + * @author: YangYizhe + */ + public boolean isAllSelected() { + int checkedCount = getSelectedCount(); + return (checkedCount != 0 && checkedCount == mNotesCount);//获取选项数看是否等于便签的个数 + } + /** + * @method isSelectedItem + * @description 判断是否为选项表,通过传递的下标来确定 + * @date: 12/23/2023 11:38 PM + * @author: YangYizhe + * @param + * @return + */ + public boolean isSelectedItem(final int position) { + if (null == mSelectedIndex.get(position)) { + return false; + } + return mSelectedIndex.get(position); + } + + @Override + /** + * @method onContentChanged + * @description 在activity内容发生局部变动的时候回调该函数计算便签的数量 + * @date: 12/23/2023 11:38 PM + * @author: YangYizhe + * @param [] + * @return void + */ + protected void onContentChanged() { + super.onContentChanged(); + calcNotesCount();//执行基类函数 + } + + @Override + /** + * @method changeCursor + * @description 在activity光标发生局部变动的时候回调该函数计算便签的数量 + * @date: 12/23/2023 11:37 PM + * @author: YangYizhe + * @param [cursor] + * @return void + */ + public void changeCursor(Cursor cursor) { + super.changeCursor(cursor); + calcNotesCount();//执行基类函数 + } + /** + * @method calcNotesCount + * @description 计算便签数量 + * @date: 12/23/2023 11:37 PM + * @author: YangYizhe + * @param + * @return + */ + private void calcNotesCount() { + mNotesCount = 0; + for (int i = 0; i < getCount(); i++) { + //获取总数同时遍历 + Cursor c = (Cursor) getItem(i); + if (c != null) { + if (NoteItemData.getNoteType(c) == Notes.TYPE_NOTE) { + mNotesCount++;//若该位置不为空并且文本类型为便签就+1 + } + } else { + Log.e(TAG, "Invalid cursor"); + return; + } + } + } +} \ No newline at end of file diff --git a/src/ui/NotesListItem.java b/src/main/java/net/micode/notes/ui/NotesListItem.java similarity index 63% rename from src/ui/NotesListItem.java rename to src/main/java/net/micode/notes/ui/NotesListItem.java index 1221e80..d32a37b 100644 --- a/src/ui/NotesListItem.java +++ b/src/main/java/net/micode/notes/ui/NotesListItem.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; import android.content.Context; @@ -30,37 +14,50 @@ import net.micode.notes.tool.DataUtils; import net.micode.notes.tool.ResourceParser.NoteItemBgResources; +/** + * @Package: net.micode.notes.ui + * @ClassName: NotesListItem + * @Description: + * @Author: YangYizhe + * @CreateDate: 12/23/2023 11:35 PM + * @Version: 1.0 + */ public class NotesListItem extends LinearLayout { - private ImageView mAlert; - private TextView mTitle; - private TextView mTime; - private TextView mCallName; - private NoteItemData mItemData; - private CheckBox mCheckBox; + private ImageView mAlert;//闹钟图片 + private TextView mTitle; //标题 + private TextView mTime; //时间 + private TextView mCallName; // + private NoteItemData mItemData; //标签数据 + private CheckBox mCheckBox; //打钩框 + /*初始化基本信息*/ public NotesListItem(Context context) { - super(context); - inflate(context, R.layout.note_item, this); + super(context); //super()它的主要作用是调整调用父类构造函数的顺序 + inflate(context, R.layout.note_item, this);//Inflate可用于将一个xml中定义的布局控件找出来,这里的xml是r。layout + //findViewById用于从contentView中查找指定ID的View,转换出来的形式根据需要而定; mAlert = (ImageView) findViewById(R.id.iv_alert_icon); mTitle = (TextView) findViewById(R.id.tv_title); mTime = (TextView) findViewById(R.id.tv_time); mCallName = (TextView) findViewById(R.id.tv_name); mCheckBox = (CheckBox) findViewById(android.R.id.checkbox); } - + ///根据data的属性对各个控件的属性的控制,主要是可见性Visibility,内容setText,格式setTextAppearance public void bind(Context context, NoteItemData data, boolean choiceMode, boolean checked) { if (choiceMode && data.getType() == Notes.TYPE_NOTE) { - mCheckBox.setVisibility(View.VISIBLE); - mCheckBox.setChecked(checked); + mCheckBox.setVisibility(View.VISIBLE); ///设置可见行为可见 + mCheckBox.setChecked(checked); ///格子打钩 } else { mCheckBox.setVisibility(View.GONE); } mItemData = data; + ///设置控件属性,一共三种情况,由data的id和父id是否与保存到文件夹的id一致来决定 if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { mCallName.setVisibility(View.GONE); mAlert.setVisibility(View.VISIBLE); + //设置该textview的style mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem); + //settext为设置内容 mTitle.setText(context.getString(R.string.call_record_folder_name) + context.getString(R.string.format_folder_files_count, data.getNotesCount())); mAlert.setImageResource(R.drawable.call_record); @@ -69,8 +66,9 @@ public class NotesListItem extends LinearLayout { mCallName.setText(data.getCallName()); mTitle.setTextAppearance(context,R.style.TextAppearanceSecondaryItem); mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); + ///关于闹钟的设置 if (data.hasAlert()) { - mAlert.setImageResource(R.drawable.clock); + mAlert.setImageResource(R.drawable.clock);//图片来源的设置 mAlert.setVisibility(View.VISIBLE); } else { mAlert.setVisibility(View.GONE); @@ -78,45 +76,48 @@ public class NotesListItem extends LinearLayout { } else { mCallName.setVisibility(View.GONE); mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem); - + ///设置title格式 if (data.getType() == Notes.TYPE_FOLDER) { mTitle.setText(data.getSnippet() + context.getString(R.string.format_folder_files_count, - data.getNotesCount())); + data.getNotesCount())); mAlert.setVisibility(View.GONE); } else { mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); if (data.hasAlert()) { - mAlert.setImageResource(R.drawable.clock); + mAlert.setImageResource(R.drawable.clock);///设置图片来源 mAlert.setVisibility(View.VISIBLE); } else { mAlert.setVisibility(View.GONE); } } } - mTime.setText(DateUtils.getRelativeTimeSpanString(data.getModifiedDate())); + ///设置内容,获取相关时间,从data里编辑的日期中获取 + mTime. setText(DateUtils.getRelativeTimeSpanString(data.getModifiedDate())); setBackground(data); } - + //根据data的文件属性来设置背景 private void setBackground(NoteItemData data) { int id = data.getBgColorId(); + //,若是note型文件,则4种情况,对于4种不同情况的背景来源 if (data.getType() == Notes.TYPE_NOTE) { + //单个数据并且只有一个子文件夹 if (data.isSingle() || data.isOneFollowingFolder()) { setBackgroundResource(NoteItemBgResources.getNoteBgSingleRes(id)); - } else if (data.isLast()) { + } else if (data.isLast()) {//是最后一个数据 setBackgroundResource(NoteItemBgResources.getNoteBgLastRes(id)); - } else if (data.isFirst() || data.isMultiFollowingFolder()) { + } else if (data.isFirst() || data.isMultiFollowingFolder()) {//是一个数据并有多个子文件夹 setBackgroundResource(NoteItemBgResources.getNoteBgFirstRes(id)); } else { setBackgroundResource(NoteItemBgResources.getNoteBgNormalRes(id)); } } else { + //若不是note直接调用文件夹的背景来源 setBackgroundResource(NoteItemBgResources.getFolderBgRes()); } } - public NoteItemData getItemData() { return mItemData; } -} +} \ No newline at end of file diff --git a/src/ui/NotesPreferenceActivity.java b/src/main/java/net/micode/notes/ui/NotesPreferenceActivity.java similarity index 58% rename from src/ui/NotesPreferenceActivity.java rename to src/main/java/net/micode/notes/ui/NotesPreferenceActivity.java index 07c5f7e..e4109c6 100644 --- a/src/ui/NotesPreferenceActivity.java +++ b/src/main/java/net/micode/notes/ui/NotesPreferenceActivity.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; import android.accounts.Account; @@ -47,260 +31,338 @@ import net.micode.notes.data.Notes; import net.micode.notes.data.Notes.NoteColumns; import net.micode.notes.gtask.remote.GTaskSyncService; - +/** + * @Package: net.micode.notes.ui + * @ClassName: NotesPreferenceActivity + * @Description: + * NotesPreferenceActivity,在小米便签中主要实现的是对背景颜色和字体大小的数据储存。 + * 继承了PreferenceActivity主要功能为对系统信息和配置进行自动保存的Activity + * @Author: YangYizhe + * @CreateDate: 12/23/2023 11:42 PM + * @Version: 1.0 + */ public class NotesPreferenceActivity extends PreferenceActivity { - public static final String PREFERENCE_NAME = "notes_preferences"; - - public static final String PREFERENCE_SYNC_ACCOUNT_NAME = "pref_key_account_name"; - - public static final String PREFERENCE_LAST_SYNC_TIME = "pref_last_sync_time"; - + public static final String PREFERENCE_NAME = "notes_preferences";//优先名 + public static final String PREFERENCE_SYNC_ACCOUNT_NAME = "pref_key_account_name";//同步账号 + public static final String PREFERENCE_LAST_SYNC_TIME = "pref_last_sync_time";//同步时间 public static final String PREFERENCE_SET_BG_COLOR_KEY = "pref_key_bg_random_appear"; - - private static final String PREFERENCE_SYNC_ACCOUNT_KEY = "pref_sync_account_key"; - + private static final String PREFERENCE_SYNC_ACCOUNT_KEY = "pref_sync_account_key";//同步密码 private static final String AUTHORITIES_FILTER_KEY = "authorities"; - - private PreferenceCategory mAccountCategory; - - private GTaskReceiver mReceiver; - - private Account[] mOriAccounts; - - private boolean mHasAddedAccount; + private PreferenceCategory mAccountCategory;//账户分组 + private GTaskReceiver mReceiver;//同步任务接收器 + private Account[] mOriAccounts;//账户 + private boolean mHasAddedAccount;//账户的hash标记 @Override + /** + * @method onCreate + * @description 创建一个activity,在函数里要完成所有的正常静态设置 + * @date: 12/23/2023 11:43 PM + * @author: YangYizhe + * @param [icicle] + * @return void + */ protected void onCreate(Bundle icicle) { super.onCreate(icicle); - /* using the app icon for navigation */ - getActionBar().setDisplayHomeAsUpEnabled(true); - - addPreferencesFromResource(R.xml.preferences); - mAccountCategory = (PreferenceCategory) findPreference(PREFERENCE_SYNC_ACCOUNT_KEY); + getActionBar().setDisplayHomeAsUpEnabled(true);//给左上角图标的左边加上一个返回的图标 + addPreferencesFromResource(R.xml.preferences);//添加xml来源并显示 xml + mAccountCategory = (PreferenceCategory) findPreference(PREFERENCE_SYNC_ACCOUNT_KEY);//根据同步账户关键码来初始化分组 mReceiver = new GTaskReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction(GTaskSyncService.GTASK_SERVICE_BROADCAST_NAME); - registerReceiver(mReceiver, filter); - + registerReceiver(mReceiver, filter);//初始化同步组件 mOriAccounts = null; - View header = LayoutInflater.from(this).inflate(R.layout.settings_header, null); - getListView().addHeaderView(header, null, true); + View header = LayoutInflater.from(this).inflate(R.layout.settings_header, null);//获取listvivew,ListView的作用:用于列出所有选择 + getListView().addHeaderView(header, null, true);//在listview组件上方添加其他组件 } @Override + /** + * @method onResume + * @description activity交互功能的实现,用于接受用户的输入 + * @date: 12/23/2023 11:44 PM + * @author: YangYizhe + * @return void + */ protected void onResume() { super.onResume(); // need to set sync account automatically if user has added a new // account if (mHasAddedAccount) { - Account[] accounts = getGoogleAccounts(); + //若用户新加了账户则自动设置同步账户 + Account[] accounts = getGoogleAccounts();//获取google同步账户 if (mOriAccounts != null && accounts.length > mOriAccounts.length) { + //若原账户不为空且当前账户有增加 for (Account accountNew : accounts) { boolean found = false; for (Account accountOld : mOriAccounts) { if (TextUtils.equals(accountOld.name, accountNew.name)) { + //更新账户 found = true; break; } } if (!found) { setSyncAccount(accountNew.name); + //若是没有找到旧的账户,那么同步账号中就只添加新账户 break; } } } } - refreshUI(); + refreshUI();//刷新标签界面 } @Override protected void onDestroy() { if (mReceiver != null) { - unregisterReceiver(mReceiver); + unregisterReceiver(mReceiver);//注销接收器 } - super.onDestroy(); + super.onDestroy();//执行父类的销毁动作 } + /** + * @method loadAccountPreference + * @description 重新设置账户信息 + * @date: 12/23/2023 11:45 PM + * @author: YangYizhe + * @param + * @return + */ private void loadAccountPreference() { - mAccountCategory.removeAll(); - - Preference accountPref = new Preference(this); + mAccountCategory.removeAll();//销毁所有的分组 + Preference accountPref = new Preference(this);//建立首选项 final String defaultAccount = getSyncAccountName(this); accountPref.setTitle(getString(R.string.preferences_account_title)); - accountPref.setSummary(getString(R.string.preferences_account_summary)); + accountPref.setSummary(getString(R.string.preferences_account_summary));//设置首选项的大标题和小标题 accountPref.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { + //建立监听器 if (!GTaskSyncService.isSyncing()) { if (TextUtils.isEmpty(defaultAccount)) { // the first time to set account + //若是第一次建立账户显示选择账户提示对话框 showSelectAccountAlertDialog(); } else { // if the account has already been set, we need to promp // user about the risk + //若是已经建立则显示修改对话框并进行修改操作 showChangeAccountConfirmAlertDialog(); } } else { + //若在没有同步的情况下,则在toast中显示不能修改 Toast.makeText(NotesPreferenceActivity.this, - R.string.preferences_toast_cannot_change_account, Toast.LENGTH_SHORT) + R.string.preferences_toast_cannot_change_account, Toast.LENGTH_SHORT) .show(); } return true; } }); - - mAccountCategory.addPreference(accountPref); + mAccountCategory.addPreference(accountPref);//根据新建首选项编辑新的账户分组 } - + /** + * @method loadSyncButton + * @description 设置按键的状态和最后同步的时间 + * @date: 12/23/2023 11:46 PM + * @author: YangYizhe + * @param + * @return + */ private void loadSyncButton() { Button syncButton = (Button) findViewById(R.id.preference_sync_button); TextView lastSyncTimeView = (TextView) findViewById(R.id.prefenerece_sync_status_textview); - + //获取同步按钮控件和最终同步时间的的窗口 // set button state + //设置按钮的状态 if (GTaskSyncService.isSyncing()) { + //若是在同步状态下 syncButton.setText(getString(R.string.preferences_button_sync_cancel)); syncButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { GTaskSyncService.cancelSync(NotesPreferenceActivity.this); } - }); + });//设置按钮显示的文本为“取消同步”以及监听器 } else { syncButton.setText(getString(R.string.preferences_button_sync_immediately)); syncButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { GTaskSyncService.startSync(NotesPreferenceActivity.this); } - }); + });//若是不同步则设置按钮显示的文本为“立即同步”以及对应监听器 } - syncButton.setEnabled(!TextUtils.isEmpty(getSyncAccountName(this))); - + syncButton.setEnabled(!TextUtils.isEmpty(getSyncAccountName(this)));//设置按键可用还是不可用 // set last sync time + // 设置最终同步时间 if (GTaskSyncService.isSyncing()) { + //若是在同步的情况下 lastSyncTimeView.setText(GTaskSyncService.getProgressString()); lastSyncTimeView.setVisibility(View.VISIBLE); + // 根据当前同步服务器设置时间显示框的文本以及可见性 } else { + //若是非同步情况 long lastSyncTime = getLastSyncTime(this); if (lastSyncTime != 0) { lastSyncTimeView.setText(getString(R.string.preferences_last_sync_time, DateFormat.format(getString(R.string.preferences_last_sync_time_format), lastSyncTime))); lastSyncTimeView.setVisibility(View.VISIBLE); + //则根据最后同步时间的信息来编辑时间显示框的文本内容和可见性 } else { + //若时间为空直接设置为不可见状态 lastSyncTimeView.setVisibility(View.GONE); } } } - + /** + * @method refreshUI + * @description + * 刷新标签界面 + * 调用上文设置账号和设置按键两个函数来实现 + * @date: 12/23/2023 11:46 PM + * @author: YangYizhe + */ private void refreshUI() { loadAccountPreference(); loadSyncButton(); } - + /** + * @method showSelectAccountAlertDialog + * @description 显示账户选择的对话框并进行账户的设置 + * @date: 12/23/2023 11:47 PM + * @author: YangYizhe + * @param + * @return + */ private void showSelectAccountAlertDialog() { - AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);//创建一个新的对话框 View titleView = LayoutInflater.from(this).inflate(R.layout.account_dialog_title, null); TextView titleTextView = (TextView) titleView.findViewById(R.id.account_dialog_title); titleTextView.setText(getString(R.string.preferences_dialog_select_account_title)); TextView subtitleTextView = (TextView) titleView.findViewById(R.id.account_dialog_subtitle); - subtitleTextView.setText(getString(R.string.preferences_dialog_select_account_tips)); - + subtitleTextView.setText(getString(R.string.preferences_dialog_select_account_tips));//设置标题以及子标题的内容 dialogBuilder.setCustomTitle(titleView); - dialogBuilder.setPositiveButton(null, null); - + dialogBuilder.setPositiveButton(null, null);//设置对话框的自定义标题,建立一个YES的按钮 Account[] accounts = getGoogleAccounts(); - String defAccount = getSyncAccountName(this); - + String defAccount = getSyncAccountName(this);//获取同步账户信息 mOriAccounts = accounts; mHasAddedAccount = false; if (accounts.length > 0) { + //若账户不为空 CharSequence[] items = new CharSequence[accounts.length]; final CharSequence[] itemMapping = items; int checkedItem = -1; int index = 0; for (Account account : accounts) { if (TextUtils.equals(account.name, defAccount)) { - checkedItem = index; + checkedItem = index;//在账户列表中查询到所需账户 } items[index++] = account.name; } dialogBuilder.setSingleChoiceItems(items, checkedItem, + //在对话框建立一个单选的复选框 new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { setSyncAccount(itemMapping[which].toString()); - dialog.dismiss(); + dialog.dismiss();//取消对话框 refreshUI(); } - }); + });//建立对话框网络版的监听器 } View addAccountView = LayoutInflater.from(this).inflate(R.layout.add_account_text, null); - dialogBuilder.setView(addAccountView); + dialogBuilder.setView(addAccountView);//给新加账户对话框设置自定义样式 - final AlertDialog dialog = dialogBuilder.show(); + final AlertDialog dialog = dialogBuilder.show();//显示对话框 addAccountView.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { mHasAddedAccount = true; + //将新加账户的hash置true Intent intent = new Intent("android.settings.ADD_ACCOUNT_SETTINGS"); + //建立网络建立组件 intent.putExtra(AUTHORITIES_FILTER_KEY, new String[] { - "gmail-ls" + "gmail-ls" }); startActivityForResult(intent, -1); + //跳回上一个选项 dialog.dismiss(); } - }); + });//建立新加账户对话框的监听器 } - + /** + * @method showChangeAccountConfirmAlertDialog + * @description 显示账户选择对话框和相关账户操作 + * @date: 12/23/2023 11:48 PM + * @author: YangYizhe + */ private void showChangeAccountConfirmAlertDialog() { - AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); - + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);//创建一个新的对话框 View titleView = LayoutInflater.from(this).inflate(R.layout.account_dialog_title, null); TextView titleTextView = (TextView) titleView.findViewById(R.id.account_dialog_title); titleTextView.setText(getString(R.string.preferences_dialog_change_account_title, getSyncAccountName(this))); TextView subtitleTextView = (TextView) titleView.findViewById(R.id.account_dialog_subtitle); - subtitleTextView.setText(getString(R.string.preferences_dialog_change_account_warn_msg)); - dialogBuilder.setCustomTitle(titleView); - + subtitleTextView.setText(getString(R.string.preferences_dialog_change_account_warn_msg));//根据同步修改的账户信息设置标题以及子标题的内容 + dialogBuilder.setCustomTitle(titleView);//设置对话框的自定义标题 CharSequence[] menuItemArray = new CharSequence[] { getString(R.string.preferences_menu_change_account), getString(R.string.preferences_menu_remove_account), getString(R.string.preferences_menu_cancel) }; dialogBuilder.setItems(menuItemArray, new DialogInterface.OnClickListener() { + //设置对话框要显示的一个list,用于显示几个命令时,即change,remove,cancel public void onClick(DialogInterface dialog, int which) { + //按键功能,由which来决定 if (which == 0) { + //进入账户选择对话框 showSelectAccountAlertDialog(); } else if (which == 1) { + //删除账户并且跟新便签界面 removeSyncAccount(); refreshUI(); } } }); - dialogBuilder.show(); + dialogBuilder.show();//显示对话框 } + /** + * @method getGoogleAccounts + * @description + * 获取谷歌账户 + * 通过账户管理器直接获取 + * @date: 12/23/2023 11:49 PM + * @author: YangYizhe + */ private Account[] getGoogleAccounts() { AccountManager accountManager = AccountManager.get(this); return accountManager.getAccountsByType("com.google"); } + /** + * @method setSyncAccount + * @description 设置同步账户 + * @date: 12/23/2023 11:49 PM + * @author: YangYizhe + * @param account + */ private void setSyncAccount(String account) { if (!getSyncAccountName(this).equals(account)) { + //假如该账号不在同步账号列表中 SharedPreferences settings = getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = settings.edit(); + SharedPreferences.Editor editor = settings.edit();//编辑共享的首选项 if (account != null) { editor.putString(PREFERENCE_SYNC_ACCOUNT_NAME, account); } else { editor.putString(PREFERENCE_SYNC_ACCOUNT_NAME, ""); - } - editor.commit(); + }//将该账号加入到首选项中 - // clean up last sync time - setLastSyncTime(this, 0); + editor.commit();//提交修改的数据 + setLastSyncTime(this, 0);//将最后同步时间清零 // clean up local gtask related info new Thread(new Runnable() { @@ -311,23 +373,31 @@ public class NotesPreferenceActivity extends PreferenceActivity { getContentResolver().update(Notes.CONTENT_NOTE_URI, values, null, null); } }).start(); + //重置当地同步任务的信息 Toast.makeText(NotesPreferenceActivity.this, getString(R.string.preferences_toast_success_set_accout, account), Toast.LENGTH_SHORT).show(); + //将toast的文本信息置为“设置账户成功”并显示出来 } } - + /** + * @method removeSyncAccount + * @description 删除同步账户 + * @date: 12/23/2023 11:49 PM + * @author: YangYizhe + */ private void removeSyncAccount() { SharedPreferences settings = getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = settings.edit(); + SharedPreferences.Editor editor = settings.edit();//设置共享首选项 + if (settings.contains(PREFERENCE_SYNC_ACCOUNT_NAME)) { - editor.remove(PREFERENCE_SYNC_ACCOUNT_NAME); + editor.remove(PREFERENCE_SYNC_ACCOUNT_NAME);//假如当前首选项中有账户就删除 } if (settings.contains(PREFERENCE_LAST_SYNC_TIME)) { - editor.remove(PREFERENCE_LAST_SYNC_TIME); + editor.remove(PREFERENCE_LAST_SYNC_TIME);//删除当前首选项中有账户时间 } - editor.commit(); + editor.commit();//提交更新后的数据 // clean up local gtask related info new Thread(new Runnable() { @@ -338,22 +408,46 @@ public class NotesPreferenceActivity extends PreferenceActivity { getContentResolver().update(Notes.CONTENT_NOTE_URI, values, null, null); } }).start(); + //重置当地同步任务的信息 } - + /** + * @method getSyncAccountName + * @description + * 获取同步账户名称 + * 通过共享的首选项里的信息直接获取 + * @date: 12/23/2023 11:50 PM + * @author: YangYizhe + * @param context + */ public static String getSyncAccountName(Context context) { SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); return settings.getString(PREFERENCE_SYNC_ACCOUNT_NAME, ""); } - + /** + * @method setLastSyncTime + * @description 设置最终同步的时间 + * @date: 12/23/2023 11:50 PM + * @author: YangYizhe + * @param + * @return + */ public static void setLastSyncTime(Context context, long time) { SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = settings.edit(); + SharedPreferences.Editor editor = settings.edit();// 从共享首选项中找到相关账户并获取其编辑器 editor.putLong(PREFERENCE_LAST_SYNC_TIME, time); - editor.commit(); + editor.commit();//编辑最终同步时间并提交更新 } - + /** + * @method getLastSyncTime + * @description + * 获取最终同步时间 + * 通过共享的首选项里的信息直接获取 + * @date: 12/23/2023 11:51 PM + * @author: YangYizhe + * @param context + */ public static long getLastSyncTime(Context context) { SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); @@ -366,23 +460,33 @@ public class NotesPreferenceActivity extends PreferenceActivity { public void onReceive(Context context, Intent intent) { refreshUI(); if (intent.getBooleanExtra(GTaskSyncService.GTASK_SERVICE_BROADCAST_IS_SYNCING, false)) { + //获取随广播而来的Intent中的同步服务的数据 TextView syncStatus = (TextView) findViewById(R.id.prefenerece_sync_status_textview); syncStatus.setText(intent - .getStringExtra(GTaskSyncService.GTASK_SERVICE_BROADCAST_PROGRESS_MSG)); + .getStringExtra(GTaskSyncService.GTASK_SERVICE_BROADCAST_PROGRESS_MSG));//通过获取的数据在设置系统的状态 } } } - + /** + * @method onOptionsItemSelected + * @description 处理菜单的选项 + * @date: 12/23/2023 11:52 PM + * @author: YangYizhe + * @param item + */ public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { + //根据选项的id选择,这里只有一个主页 case android.R.id.home: Intent intent = new Intent(this, NotesListActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); return true; + //在主页情况下在创建连接组件intent,发出清空的信号并开始一个相应的activity default: return false; } } } + \ No newline at end of file diff --git a/src/widget/NoteWidgetProvider.java b/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java similarity index 94% rename from src/widget/NoteWidgetProvider.java rename to src/main/java/net/micode/notes/widget/NoteWidgetProvider.java index ec6f819..d8eb50b 100644 --- a/src/widget/NoteWidgetProvider.java +++ b/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java @@ -31,7 +31,14 @@ import net.micode.notes.data.Notes.NoteColumns; import net.micode.notes.tool.ResourceParser; import net.micode.notes.ui.NoteEditActivity; import net.micode.notes.ui.NotesListActivity; - +/** + * @Package: net.micode.notes.widget + * @ClassName: NoteWidgetProvider + * @Description: 这个抽象类用作MiNote应用程序中笔记小部件的基础。它提供了在主屏幕上更新和管理笔记小部件的功能。 + * @Author: YangYizhe + * @CreateDate: 12/23/2023 11:53 PM + * @Version: 1.0 + */ public abstract class NoteWidgetProvider extends AppWidgetProvider { public static final String [] PROJECTION = new String [] { NoteColumns.ID, diff --git a/src/widget/NoteWidgetProvider_2x.java b/src/main/java/net/micode/notes/widget/NoteWidgetProvider_2x.java similarity index 77% rename from src/widget/NoteWidgetProvider_2x.java rename to src/main/java/net/micode/notes/widget/NoteWidgetProvider_2x.java index adcb2f7..f3d5f1e 100644 --- a/src/widget/NoteWidgetProvider_2x.java +++ b/src/main/java/net/micode/notes/widget/NoteWidgetProvider_2x.java @@ -23,7 +23,16 @@ import net.micode.notes.R; import net.micode.notes.data.Notes; import net.micode.notes.tool.ResourceParser; - +/** + * @Package: net.micode.notes.widget + * @ClassName: NoteWidgetProvider_2x + * @Description: + * 这个类是NoteWidgetProvider的一个具体实现,用于实现2x大小的笔记小部件。 + * 它继承自NoteWidgetProvider,并提供特定于2x小部件的布局ID、背景资源和小部件类型。 + * @Author: YangYizhe + * @CreateDate: 12/23/2023 11:55 PM + * @Version: 1.0 + */ public class NoteWidgetProvider_2x extends NoteWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { diff --git a/src/widget/NoteWidgetProvider_4x.java b/src/main/java/net/micode/notes/widget/NoteWidgetProvider_4x.java similarity index 77% rename from src/widget/NoteWidgetProvider_4x.java rename to src/main/java/net/micode/notes/widget/NoteWidgetProvider_4x.java index c12a02e..0c3ae50 100644 --- a/src/widget/NoteWidgetProvider_4x.java +++ b/src/main/java/net/micode/notes/widget/NoteWidgetProvider_4x.java @@ -23,7 +23,16 @@ import net.micode.notes.R; import net.micode.notes.data.Notes; import net.micode.notes.tool.ResourceParser; - +/** + * @Package: net.micode.notes.widget + * @ClassName: NoteWidgetProvider_4x + * @Description: + * 这个类是NoteWidgetProvider的一个具体实现,用于实现4x大小的笔记小部件。 + * 它继承自NoteWidgetProvider,并提供特定于4x小部件的布局ID、背景资源和小部件类型。 + * @Author: YangYizhe + * @CreateDate: 12/23/2023 11:56 PM + * @Version: 1.0 + */ public class NoteWidgetProvider_4x extends NoteWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { diff --git a/src/main/res/color/primary_text_dark.xml b/src/main/res/color/primary_text_dark.xml new file mode 100644 index 0000000..8ad98e3 --- /dev/null +++ b/src/main/res/color/primary_text_dark.xml @@ -0,0 +1,22 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/color/secondary_text_dark.xml b/src/main/res/color/secondary_text_dark.xml new file mode 100644 index 0000000..9cf8a1a --- /dev/null +++ b/src/main/res/color/secondary_text_dark.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable-hdpi/bg_btn_set_color.png b/src/main/res/drawable-hdpi/bg_btn_set_color.png new file mode 100644 index 0000000..5eb5d44 Binary files /dev/null and b/src/main/res/drawable-hdpi/bg_btn_set_color.png differ diff --git a/src/main/res/drawable-hdpi/bg_color_btn_mask.png b/src/main/res/drawable-hdpi/bg_color_btn_mask.png new file mode 100644 index 0000000..100db77 Binary files /dev/null and b/src/main/res/drawable-hdpi/bg_color_btn_mask.png differ diff --git a/src/main/res/drawable-hdpi/call_record.png b/src/main/res/drawable-hdpi/call_record.png new file mode 100644 index 0000000..fb88ca4 Binary files /dev/null and b/src/main/res/drawable-hdpi/call_record.png differ diff --git a/src/main/res/drawable-hdpi/clock.png b/src/main/res/drawable-hdpi/clock.png new file mode 100644 index 0000000..5f2ae9a Binary files /dev/null and b/src/main/res/drawable-hdpi/clock.png differ diff --git a/src/main/res/drawable-hdpi/delete.png b/src/main/res/drawable-hdpi/delete.png new file mode 100644 index 0000000..643de3e Binary files /dev/null and b/src/main/res/drawable-hdpi/delete.png differ diff --git a/src/main/res/drawable-hdpi/dropdown_icon.9.png b/src/main/res/drawable-hdpi/dropdown_icon.9.png new file mode 100644 index 0000000..5525025 Binary files /dev/null and b/src/main/res/drawable-hdpi/dropdown_icon.9.png differ diff --git a/src/main/res/drawable-hdpi/edit_blue.9.png b/src/main/res/drawable-hdpi/edit_blue.9.png new file mode 100644 index 0000000..55a1856 Binary files /dev/null and b/src/main/res/drawable-hdpi/edit_blue.9.png differ diff --git a/src/main/res/drawable-hdpi/edit_green.9.png b/src/main/res/drawable-hdpi/edit_green.9.png new file mode 100644 index 0000000..2cb2d60 Binary files /dev/null and b/src/main/res/drawable-hdpi/edit_green.9.png differ diff --git a/src/main/res/drawable-hdpi/edit_red.9.png b/src/main/res/drawable-hdpi/edit_red.9.png new file mode 100644 index 0000000..bae944a Binary files /dev/null and b/src/main/res/drawable-hdpi/edit_red.9.png differ diff --git a/src/main/res/drawable-hdpi/edit_title_blue.9.png b/src/main/res/drawable-hdpi/edit_title_blue.9.png new file mode 100644 index 0000000..96e6092 Binary files /dev/null and b/src/main/res/drawable-hdpi/edit_title_blue.9.png differ diff --git a/src/main/res/drawable-hdpi/edit_title_green.9.png b/src/main/res/drawable-hdpi/edit_title_green.9.png new file mode 100644 index 0000000..08d8644 Binary files /dev/null and b/src/main/res/drawable-hdpi/edit_title_green.9.png differ diff --git a/src/main/res/drawable-hdpi/edit_title_red.9.png b/src/main/res/drawable-hdpi/edit_title_red.9.png new file mode 100644 index 0000000..9c430e5 Binary files /dev/null and b/src/main/res/drawable-hdpi/edit_title_red.9.png differ diff --git a/src/main/res/drawable-hdpi/edit_title_white.9.png b/src/main/res/drawable-hdpi/edit_title_white.9.png new file mode 100644 index 0000000..19e8d95 Binary files /dev/null and b/src/main/res/drawable-hdpi/edit_title_white.9.png differ diff --git a/src/main/res/drawable-hdpi/edit_title_yellow.9.png b/src/main/res/drawable-hdpi/edit_title_yellow.9.png new file mode 100644 index 0000000..bf8f580 Binary files /dev/null and b/src/main/res/drawable-hdpi/edit_title_yellow.9.png differ diff --git a/src/main/res/drawable-hdpi/edit_white.9.png b/src/main/res/drawable-hdpi/edit_white.9.png new file mode 100644 index 0000000..918f7a6 Binary files /dev/null and b/src/main/res/drawable-hdpi/edit_white.9.png differ diff --git a/src/main/res/drawable-hdpi/edit_yellow.9.png b/src/main/res/drawable-hdpi/edit_yellow.9.png new file mode 100644 index 0000000..10cb642 Binary files /dev/null and b/src/main/res/drawable-hdpi/edit_yellow.9.png differ diff --git a/src/main/res/drawable-hdpi/font_large.png b/src/main/res/drawable-hdpi/font_large.png new file mode 100644 index 0000000..78cf2e6 Binary files /dev/null and b/src/main/res/drawable-hdpi/font_large.png differ diff --git a/src/main/res/drawable-hdpi/font_normal.png b/src/main/res/drawable-hdpi/font_normal.png new file mode 100644 index 0000000..9de7ced Binary files /dev/null and b/src/main/res/drawable-hdpi/font_normal.png differ diff --git a/src/main/res/drawable-hdpi/font_size_selector_bg.9.png b/src/main/res/drawable-hdpi/font_size_selector_bg.9.png new file mode 100644 index 0000000..be8e64c Binary files /dev/null and b/src/main/res/drawable-hdpi/font_size_selector_bg.9.png differ diff --git a/src/main/res/drawable-hdpi/font_small.png b/src/main/res/drawable-hdpi/font_small.png new file mode 100644 index 0000000..d3ff104 Binary files /dev/null and b/src/main/res/drawable-hdpi/font_small.png differ diff --git a/src/main/res/drawable-hdpi/font_super.png b/src/main/res/drawable-hdpi/font_super.png new file mode 100644 index 0000000..85b13a1 Binary files /dev/null and b/src/main/res/drawable-hdpi/font_super.png differ diff --git a/src/main/res/drawable-hdpi/icon_app.png b/src/main/res/drawable-hdpi/icon_app.png new file mode 100644 index 0000000..418aadc Binary files /dev/null and b/src/main/res/drawable-hdpi/icon_app.png differ diff --git a/src/main/res/drawable-hdpi/list_background.png b/src/main/res/drawable-hdpi/list_background.png new file mode 100644 index 0000000..087e1f9 Binary files /dev/null and b/src/main/res/drawable-hdpi/list_background.png differ diff --git a/src/main/res/drawable-hdpi/list_blue_down.9.png b/src/main/res/drawable-hdpi/list_blue_down.9.png new file mode 100644 index 0000000..b88eebf Binary files /dev/null and b/src/main/res/drawable-hdpi/list_blue_down.9.png differ diff --git a/src/main/res/drawable-hdpi/list_blue_middle.9.png b/src/main/res/drawable-hdpi/list_blue_middle.9.png new file mode 100644 index 0000000..96b1c8b Binary files /dev/null and b/src/main/res/drawable-hdpi/list_blue_middle.9.png differ diff --git a/src/main/res/drawable-hdpi/list_blue_single.9.png b/src/main/res/drawable-hdpi/list_blue_single.9.png new file mode 100644 index 0000000..d7e7206 Binary files /dev/null and b/src/main/res/drawable-hdpi/list_blue_single.9.png differ diff --git a/src/main/res/drawable-hdpi/list_blue_up.9.png b/src/main/res/drawable-hdpi/list_blue_up.9.png new file mode 100644 index 0000000..632e88c Binary files /dev/null and b/src/main/res/drawable-hdpi/list_blue_up.9.png differ diff --git a/src/main/res/drawable-hdpi/list_folder.9.png b/src/main/res/drawable-hdpi/list_folder.9.png new file mode 100644 index 0000000..829f61b Binary files /dev/null and b/src/main/res/drawable-hdpi/list_folder.9.png differ diff --git a/src/main/res/drawable-hdpi/list_footer_bg.9.png b/src/main/res/drawable-hdpi/list_footer_bg.9.png new file mode 100644 index 0000000..5325c25 Binary files /dev/null and b/src/main/res/drawable-hdpi/list_footer_bg.9.png differ diff --git a/src/main/res/drawable-hdpi/list_green_down.9.png b/src/main/res/drawable-hdpi/list_green_down.9.png new file mode 100644 index 0000000..64a39d9 Binary files /dev/null and b/src/main/res/drawable-hdpi/list_green_down.9.png differ diff --git a/src/main/res/drawable-hdpi/list_green_middle.9.png b/src/main/res/drawable-hdpi/list_green_middle.9.png new file mode 100644 index 0000000..897325a Binary files /dev/null and b/src/main/res/drawable-hdpi/list_green_middle.9.png differ diff --git a/src/main/res/drawable-hdpi/list_green_single.9.png b/src/main/res/drawable-hdpi/list_green_single.9.png new file mode 100644 index 0000000..c83405f Binary files /dev/null and b/src/main/res/drawable-hdpi/list_green_single.9.png differ diff --git a/src/main/res/drawable-hdpi/list_green_up.9.png b/src/main/res/drawable-hdpi/list_green_up.9.png new file mode 100644 index 0000000..141f9e1 Binary files /dev/null and b/src/main/res/drawable-hdpi/list_green_up.9.png differ diff --git a/src/main/res/drawable-hdpi/list_red_down.9.png b/src/main/res/drawable-hdpi/list_red_down.9.png new file mode 100644 index 0000000..4224309 Binary files /dev/null and b/src/main/res/drawable-hdpi/list_red_down.9.png differ diff --git a/src/main/res/drawable-hdpi/list_red_middle.9.png b/src/main/res/drawable-hdpi/list_red_middle.9.png new file mode 100644 index 0000000..9988f17 Binary files /dev/null and b/src/main/res/drawable-hdpi/list_red_middle.9.png differ diff --git a/src/main/res/drawable-hdpi/list_red_single.9.png b/src/main/res/drawable-hdpi/list_red_single.9.png new file mode 100644 index 0000000..587c348 Binary files /dev/null and b/src/main/res/drawable-hdpi/list_red_single.9.png differ diff --git a/src/main/res/drawable-hdpi/list_red_up.9.png b/src/main/res/drawable-hdpi/list_red_up.9.png new file mode 100644 index 0000000..46b4757 Binary files /dev/null and b/src/main/res/drawable-hdpi/list_red_up.9.png differ diff --git a/src/main/res/drawable-hdpi/list_white_down.9.png b/src/main/res/drawable-hdpi/list_white_down.9.png new file mode 100644 index 0000000..29f9d8c Binary files /dev/null and b/src/main/res/drawable-hdpi/list_white_down.9.png differ diff --git a/src/main/res/drawable-hdpi/list_white_middle.9.png b/src/main/res/drawable-hdpi/list_white_middle.9.png new file mode 100644 index 0000000..77a4ab4 Binary files /dev/null and b/src/main/res/drawable-hdpi/list_white_middle.9.png differ diff --git a/src/main/res/drawable-hdpi/list_white_single.9.png b/src/main/res/drawable-hdpi/list_white_single.9.png new file mode 100644 index 0000000..3e79189 Binary files /dev/null and b/src/main/res/drawable-hdpi/list_white_single.9.png differ diff --git a/src/main/res/drawable-hdpi/list_white_up.9.png b/src/main/res/drawable-hdpi/list_white_up.9.png new file mode 100644 index 0000000..e23cd5c Binary files /dev/null and b/src/main/res/drawable-hdpi/list_white_up.9.png differ diff --git a/src/main/res/drawable-hdpi/list_yellow_down.9.png b/src/main/res/drawable-hdpi/list_yellow_down.9.png new file mode 100644 index 0000000..31cfc1e Binary files /dev/null and b/src/main/res/drawable-hdpi/list_yellow_down.9.png differ diff --git a/src/main/res/drawable-hdpi/list_yellow_middle.9.png b/src/main/res/drawable-hdpi/list_yellow_middle.9.png new file mode 100644 index 0000000..b6549b2 Binary files /dev/null and b/src/main/res/drawable-hdpi/list_yellow_middle.9.png differ diff --git a/src/main/res/drawable-hdpi/list_yellow_single.9.png b/src/main/res/drawable-hdpi/list_yellow_single.9.png new file mode 100644 index 0000000..3faf507 Binary files /dev/null and b/src/main/res/drawable-hdpi/list_yellow_single.9.png differ diff --git a/src/main/res/drawable-hdpi/list_yellow_up.9.png b/src/main/res/drawable-hdpi/list_yellow_up.9.png new file mode 100644 index 0000000..4ae791c Binary files /dev/null and b/src/main/res/drawable-hdpi/list_yellow_up.9.png differ diff --git a/src/main/res/drawable-hdpi/menu_delete.png b/src/main/res/drawable-hdpi/menu_delete.png new file mode 100644 index 0000000..ccdfc4b Binary files /dev/null and b/src/main/res/drawable-hdpi/menu_delete.png differ diff --git a/src/main/res/drawable-hdpi/menu_move.png b/src/main/res/drawable-hdpi/menu_move.png new file mode 100644 index 0000000..1140b71 Binary files /dev/null and b/src/main/res/drawable-hdpi/menu_move.png differ diff --git a/src/main/res/drawable-hdpi/new_note_normal.png b/src/main/res/drawable-hdpi/new_note_normal.png new file mode 100644 index 0000000..e24e0d1 Binary files /dev/null and b/src/main/res/drawable-hdpi/new_note_normal.png differ diff --git a/src/main/res/drawable-hdpi/new_note_pressed.png b/src/main/res/drawable-hdpi/new_note_pressed.png new file mode 100644 index 0000000..c748936 Binary files /dev/null and b/src/main/res/drawable-hdpi/new_note_pressed.png differ diff --git a/src/main/res/drawable-hdpi/note_edit_color_selector_panel.png b/src/main/res/drawable-hdpi/note_edit_color_selector_panel.png new file mode 100644 index 0000000..fc49552 Binary files /dev/null and b/src/main/res/drawable-hdpi/note_edit_color_selector_panel.png differ diff --git a/src/main/res/drawable-hdpi/notification.png b/src/main/res/drawable-hdpi/notification.png new file mode 100644 index 0000000..b13ab4a Binary files /dev/null and b/src/main/res/drawable-hdpi/notification.png differ diff --git a/src/main/res/drawable-hdpi/search_result.png b/src/main/res/drawable-hdpi/search_result.png new file mode 100644 index 0000000..ff2befd Binary files /dev/null and b/src/main/res/drawable-hdpi/search_result.png differ diff --git a/src/main/res/drawable-hdpi/selected.png b/src/main/res/drawable-hdpi/selected.png new file mode 100644 index 0000000..b889bef Binary files /dev/null and b/src/main/res/drawable-hdpi/selected.png differ diff --git a/src/main/res/drawable-hdpi/title_alert.png b/src/main/res/drawable-hdpi/title_alert.png new file mode 100644 index 0000000..544ee9c Binary files /dev/null and b/src/main/res/drawable-hdpi/title_alert.png differ diff --git a/src/main/res/drawable-hdpi/title_bar_bg.9.png b/src/main/res/drawable-hdpi/title_bar_bg.9.png new file mode 100644 index 0000000..eb6bff0 Binary files /dev/null and b/src/main/res/drawable-hdpi/title_bar_bg.9.png differ diff --git a/src/main/res/drawable-hdpi/widget_2x_blue.png b/src/main/res/drawable-hdpi/widget_2x_blue.png new file mode 100644 index 0000000..a1707f4 Binary files /dev/null and b/src/main/res/drawable-hdpi/widget_2x_blue.png differ diff --git a/src/main/res/drawable-hdpi/widget_2x_green.png b/src/main/res/drawable-hdpi/widget_2x_green.png new file mode 100644 index 0000000..f86886c Binary files /dev/null and b/src/main/res/drawable-hdpi/widget_2x_green.png differ diff --git a/src/main/res/drawable-hdpi/widget_2x_red.png b/src/main/res/drawable-hdpi/widget_2x_red.png new file mode 100644 index 0000000..0e66c29 Binary files /dev/null and b/src/main/res/drawable-hdpi/widget_2x_red.png differ diff --git a/src/main/res/drawable-hdpi/widget_2x_white.png b/src/main/res/drawable-hdpi/widget_2x_white.png new file mode 100644 index 0000000..5f0619a Binary files /dev/null and b/src/main/res/drawable-hdpi/widget_2x_white.png differ diff --git a/src/main/res/drawable-hdpi/widget_2x_yellow.png b/src/main/res/drawable-hdpi/widget_2x_yellow.png new file mode 100644 index 0000000..12d1c2b Binary files /dev/null and b/src/main/res/drawable-hdpi/widget_2x_yellow.png differ diff --git a/src/main/res/drawable-hdpi/widget_4x_blue.png b/src/main/res/drawable-hdpi/widget_4x_blue.png new file mode 100644 index 0000000..9183738 Binary files /dev/null and b/src/main/res/drawable-hdpi/widget_4x_blue.png differ diff --git a/src/main/res/drawable-hdpi/widget_4x_green.png b/src/main/res/drawable-hdpi/widget_4x_green.png new file mode 100644 index 0000000..fa8b452 Binary files /dev/null and b/src/main/res/drawable-hdpi/widget_4x_green.png differ diff --git a/src/main/res/drawable-hdpi/widget_4x_red.png b/src/main/res/drawable-hdpi/widget_4x_red.png new file mode 100644 index 0000000..62de074 Binary files /dev/null and b/src/main/res/drawable-hdpi/widget_4x_red.png differ diff --git a/src/main/res/drawable-hdpi/widget_4x_white.png b/src/main/res/drawable-hdpi/widget_4x_white.png new file mode 100644 index 0000000..a37d67c Binary files /dev/null and b/src/main/res/drawable-hdpi/widget_4x_white.png differ diff --git a/src/main/res/drawable-hdpi/widget_4x_yellow.png b/src/main/res/drawable-hdpi/widget_4x_yellow.png new file mode 100644 index 0000000..d7c5fa4 Binary files /dev/null and b/src/main/res/drawable-hdpi/widget_4x_yellow.png differ diff --git a/src/main/res/drawable/new_note.xml b/src/main/res/drawable/new_note.xml new file mode 100644 index 0000000..2154ebc --- /dev/null +++ b/src/main/res/drawable/new_note.xml @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/src/main/res/layout/account_dialog_title.xml b/src/main/res/layout/account_dialog_title.xml new file mode 100644 index 0000000..7717112 --- /dev/null +++ b/src/main/res/layout/account_dialog_title.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/layout/add_account_text.xml b/src/main/res/layout/add_account_text.xml new file mode 100644 index 0000000..c799178 --- /dev/null +++ b/src/main/res/layout/add_account_text.xml @@ -0,0 +1,32 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/res/layout/datetime_picker.xml b/src/main/res/layout/datetime_picker.xml new file mode 100644 index 0000000..f10d592 --- /dev/null +++ b/src/main/res/layout/datetime_picker.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/layout/dialog_edit_text.xml b/src/main/res/layout/dialog_edit_text.xml new file mode 100644 index 0000000..361b39a --- /dev/null +++ b/src/main/res/layout/dialog_edit_text.xml @@ -0,0 +1,23 @@ + + + + + \ No newline at end of file diff --git a/src/main/res/layout/folder_list_item.xml b/src/main/res/layout/folder_list_item.xml new file mode 100644 index 0000000..77e8148 --- /dev/null +++ b/src/main/res/layout/folder_list_item.xml @@ -0,0 +1,29 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/res/layout/note_edit.xml b/src/main/res/layout/note_edit.xml new file mode 100644 index 0000000..10b2aa7 --- /dev/null +++ b/src/main/res/layout/note_edit.xml @@ -0,0 +1,400 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/res/layout/note_edit_list_item.xml b/src/main/res/layout/note_edit_list_item.xml new file mode 100644 index 0000000..a885f9c --- /dev/null +++ b/src/main/res/layout/note_edit_list_item.xml @@ -0,0 +1,39 @@ + + + + + + + + + + diff --git a/src/main/res/layout/note_item.xml b/src/main/res/layout/note_item.xml new file mode 100644 index 0000000..d541f6a --- /dev/null +++ b/src/main/res/layout/note_item.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/res/layout/note_list.xml b/src/main/res/layout/note_list.xml new file mode 100644 index 0000000..6b25d38 --- /dev/null +++ b/src/main/res/layout/note_list.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + +