diff --git a/doc/04_小米便签维护-需求与设计方案_庄昊伦.docx b/doc/04_小米便签维护-需求与设计方案_庄昊伦.docx index d49f981..4b05fbd 100644 Binary files a/doc/04_小米便签维护-需求与设计方案_庄昊伦.docx and b/doc/04_小米便签维护-需求与设计方案_庄昊伦.docx differ diff --git a/doc/test.txt.txt b/doc/test.txt.txt deleted file mode 100644 index 30d74d2..0000000 --- a/doc/test.txt.txt +++ /dev/null @@ -1 +0,0 @@ -test \ No newline at end of file diff --git a/model/Gtask_UML.pdf b/model/Gtask_UML.pdf deleted file mode 100644 index 03f1720..0000000 Binary files a/model/Gtask_UML.pdf and /dev/null differ diff --git a/model/UI_UML.pdf b/model/UI_UML.pdf deleted file mode 100644 index 0bfdae9..0000000 Binary files a/model/UI_UML.pdf and /dev/null differ diff --git a/model/data_UML.pdf b/model/data_UML.pdf deleted file mode 100644 index a4a32b8..0000000 Binary files a/model/data_UML.pdf and /dev/null differ diff --git a/model/model_UML.pdf b/model/model_UML.pdf deleted file mode 100644 index 14177ef..0000000 Binary files a/model/model_UML.pdf and /dev/null differ diff --git a/model/wighet_UML.pdf b/model/wighet_UML.pdf deleted file mode 100644 index 71e3d8e..0000000 Binary files a/model/wighet_UML.pdf and /dev/null differ diff --git a/src/note_but_github/.gradle/7.5/checksums/checksums.lock b/src/note_but_github/.gradle/7.5/checksums/checksums.lock index 8ba6a81..480aae0 100644 Binary files a/src/note_but_github/.gradle/7.5/checksums/checksums.lock and b/src/note_but_github/.gradle/7.5/checksums/checksums.lock differ diff --git a/src/note_but_github/.gradle/7.5/checksums/sha1-checksums.bin b/src/note_but_github/.gradle/7.5/checksums/sha1-checksums.bin index 715bd2b..8a5b1f7 100644 Binary files a/src/note_but_github/.gradle/7.5/checksums/sha1-checksums.bin and b/src/note_but_github/.gradle/7.5/checksums/sha1-checksums.bin differ diff --git a/src/note_but_github/.gradle/7.5/executionHistory/executionHistory.bin b/src/note_but_github/.gradle/7.5/executionHistory/executionHistory.bin index 421b7e6..24d0243 100644 Binary files a/src/note_but_github/.gradle/7.5/executionHistory/executionHistory.bin and b/src/note_but_github/.gradle/7.5/executionHistory/executionHistory.bin differ diff --git a/src/note_but_github/.gradle/7.5/executionHistory/executionHistory.lock b/src/note_but_github/.gradle/7.5/executionHistory/executionHistory.lock index af7cd06..2b22082 100644 Binary files a/src/note_but_github/.gradle/7.5/executionHistory/executionHistory.lock and b/src/note_but_github/.gradle/7.5/executionHistory/executionHistory.lock differ diff --git a/src/note_but_github/.gradle/7.5/fileHashes/fileHashes.bin b/src/note_but_github/.gradle/7.5/fileHashes/fileHashes.bin index 1bce679..4ec6819 100644 Binary files a/src/note_but_github/.gradle/7.5/fileHashes/fileHashes.bin and b/src/note_but_github/.gradle/7.5/fileHashes/fileHashes.bin differ diff --git a/src/note_but_github/.gradle/7.5/fileHashes/fileHashes.lock b/src/note_but_github/.gradle/7.5/fileHashes/fileHashes.lock index 17f74e7..bc77908 100644 Binary files a/src/note_but_github/.gradle/7.5/fileHashes/fileHashes.lock and b/src/note_but_github/.gradle/7.5/fileHashes/fileHashes.lock differ diff --git a/src/note_but_github/.gradle/7.5/fileHashes/resourceHashesCache.bin b/src/note_but_github/.gradle/7.5/fileHashes/resourceHashesCache.bin index 7ab7fbf..48a7d30 100644 Binary files a/src/note_but_github/.gradle/7.5/fileHashes/resourceHashesCache.bin and b/src/note_but_github/.gradle/7.5/fileHashes/resourceHashesCache.bin differ diff --git a/src/note_but_github/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/src/note_but_github/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 77c8f2e..b81220e 100644 Binary files a/src/note_but_github/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/src/note_but_github/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/src/note_but_github/.gradle/buildOutputCleanup/outputFiles.bin b/src/note_but_github/.gradle/buildOutputCleanup/outputFiles.bin index 62ad3ad..fa5330a 100644 Binary files a/src/note_but_github/.gradle/buildOutputCleanup/outputFiles.bin and b/src/note_but_github/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/src/note_but_github/.gradle/file-system.probe b/src/note_but_github/.gradle/file-system.probe index b764d56..17b71e4 100644 Binary files a/src/note_but_github/.gradle/file-system.probe and b/src/note_but_github/.gradle/file-system.probe differ diff --git a/src/note_but_github/.idea/compiler.xml b/src/note_but_github/.idea/compiler.xml index b589d56..fb7f4a8 100644 --- a/src/note_but_github/.idea/compiler.xml +++ b/src/note_but_github/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/src/note_but_github/.idea/misc.xml b/src/note_but_github/.idea/misc.xml index d673ade..bdd9278 100644 --- a/src/note_but_github/.idea/misc.xml +++ b/src/note_but_github/.idea/misc.xml @@ -1,7 +1,7 @@ - + diff --git a/src/note_but_github/app/build/intermediates/apk/debug/app-debug.apk b/src/note_but_github/app/build/intermediates/apk/debug/app-debug.apk index e4ff743..2882aec 100644 Binary files a/src/note_but_github/app/build/intermediates/apk/debug/app-debug.apk and b/src/note_but_github/app/build/intermediates/apk/debug/app-debug.apk differ diff --git a/src/note_but_github/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar b/src/note_but_github/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar index a54964f..1ec30c6 100644 Binary files a/src/note_but_github/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar and b/src/note_but_github/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar differ diff --git a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_0/graph.bin b/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_0/graph.bin deleted file mode 100644 index 601f245..0000000 Binary files a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_0/graph.bin and /dev/null differ diff --git a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_1/graph.bin b/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_1/graph.bin deleted file mode 100644 index 601f245..0000000 Binary files a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_1/graph.bin and /dev/null differ diff --git a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_2/graph.bin b/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_2/graph.bin deleted file mode 100644 index 601f245..0000000 Binary files a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_2/graph.bin and /dev/null differ diff --git a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_3/graph.bin b/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_3/graph.bin deleted file mode 100644 index 601f245..0000000 Binary files a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_3/graph.bin and /dev/null differ diff --git a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_4/graph.bin b/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_4/graph.bin deleted file mode 100644 index 601f245..0000000 Binary files a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_4/graph.bin and /dev/null differ diff --git a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_5/graph.bin b/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_5/graph.bin deleted file mode 100644 index 601f245..0000000 Binary files a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_5/graph.bin and /dev/null differ diff --git a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_6/graph.bin b/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_6/graph.bin deleted file mode 100644 index 601f245..0000000 Binary files a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_6/graph.bin and /dev/null differ diff --git a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_7/graph.bin b/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_7/graph.bin deleted file mode 100644 index 601f245..0000000 Binary files a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_7/graph.bin and /dev/null differ diff --git a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_8/graph.bin b/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_8/graph.bin deleted file mode 100644 index 601f245..0000000 Binary files a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_8/graph.bin and /dev/null differ diff --git a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_9/graph.bin b/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_9/graph.bin deleted file mode 100644 index 601f245..0000000 Binary files a/src/note_but_github/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f836f84d675c4cfe07b6ac6a775024a4cbd9c7021a86eb10fe91096c463a908d_bucket_9/graph.bin and /dev/null differ diff --git a/src/note_but_github/app/build/intermediates/dex/debug/mergeDexDebug/classes.dex b/src/note_but_github/app/build/intermediates/dex/debug/mergeDexDebug/classes.dex index 43b20c8..254420d 100644 Binary files a/src/note_but_github/app/build/intermediates/dex/debug/mergeDexDebug/classes.dex and b/src/note_but_github/app/build/intermediates/dex/debug/mergeDexDebug/classes.dex differ diff --git a/src/note_but_github/app/build/intermediates/dex_archive_input_jar_hashes/debug/out b/src/note_but_github/app/build/intermediates/dex_archive_input_jar_hashes/debug/out index f8d79b4..ed08c47 100644 Binary files a/src/note_but_github/app/build/intermediates/dex_archive_input_jar_hashes/debug/out and b/src/note_but_github/app/build/intermediates/dex_archive_input_jar_hashes/debug/out differ diff --git a/src/note_but_github/app/build/intermediates/incremental/debug/mergeDebugResources/compile-file-map.properties b/src/note_but_github/app/build/intermediates/incremental/debug/mergeDebugResources/compile-file-map.properties index 909a3da..70a4ee8 100644 --- a/src/note_but_github/app/build/intermediates/incremental/debug/mergeDebugResources/compile-file-map.properties +++ b/src/note_but_github/app/build/intermediates/incremental/debug/mergeDebugResources/compile-file-map.properties @@ -1,96 +1,167 @@ -#Thu Mar 20 19:24:36 CST 2025 -net.micode.notes.app-main-7\:/drawable-hdpi/font_super.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_super.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/call_record.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_call_record.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/new_note_normal.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_new_note_normal.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/edit_yellow.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_yellow.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_green.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_green.9.png.flat -net.micode.notes.app-main-7\:/menu/sub_folder.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\menu_sub_folder.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_yellow.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_yellow.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/font_small.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_small.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_white.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_white.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/edit_white.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_white.9.png.flat -net.micode.notes.app-main-7\:/layout/account_dialog_title.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_account_dialog_title.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_green.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_green.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_blue_down.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_blue_down.9.png.flat -net.micode.notes.app-main-7\:/color/secondary_text_dark.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\color_secondary_text_dark.xml.flat -net.micode.notes.app-main-7\:/layout/dialog_edit_text.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_dialog_edit_text.xml.flat -net.micode.notes.app-main-7\:/layout/widget_4x.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_widget_4x.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_yellow_middle.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_yellow_middle.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/menu_delete.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_menu_delete.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/clock.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_clock.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/font_normal.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_normal.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/dropdown_icon.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_dropdown_icon.9.png.flat -net.micode.notes.app-main-7\:/layout/note_edit.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_note_edit.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/edit_green.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_green.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_green_single.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_green_single.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_white_single.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_white_single.9.png.flat -net.micode.notes.app-main-7\:/raw-zh-rCN/introduction=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\raw-zh-rCN_introduction.flat -net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_green.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_green.png.flat -net.micode.notes.app-main-7\:/xml/preferences.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\xml_preferences.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_red_single.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_red_single.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/delete.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_delete.png.flat -net.micode.notes.app-main-7\:/menu/call_record_folder.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\menu_call_record_folder.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_red.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_red.png.flat -net.micode.notes.app-main-7\:/layout/widget_2x.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_widget_2x.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/menu_move.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_menu_move.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_green_down.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_green_down.9.png.flat -net.micode.notes.app-main-7\:/layout/note_edit_list_item.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_note_edit_list_item.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_blue.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_blue.png.flat -net.micode.notes.app-main-7\:/layout/add_account_text.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_add_account_text.xml.flat -net.micode.notes.app-main-7\:/xml/widget_4x_info.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\xml_widget_4x_info.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/font_size_selector_bg.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_size_selector_bg.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/selected.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_selected.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/search_result.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_search_result.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_white.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_white.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_blue_middle.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_blue_middle.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_green_middle.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_green_middle.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_white_down.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_white_down.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_blue_single.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_blue_single.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/font_large.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_large.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_yellow_up.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_yellow_up.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_red_middle.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_red_middle.9.png.flat -net.micode.notes.app-main-7\:/layout/settings_header.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_settings_header.xml.flat -net.micode.notes.app-main-7\:/menu/note_list.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\menu_note_list.xml.flat -net.micode.notes.app-main-7\:/menu/call_note_edit.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\menu_call_note_edit.xml.flat -net.micode.notes.app-main-7\:/drawable/new_note.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_new_note.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/edit_red.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_red.9.png.flat -net.micode.notes.app-main-7\:/layout/note_list.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_note_list.xml.flat -net.micode.notes.app-main-7\:/color/primary_text_dark.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\color_primary_text_dark.xml.flat -net.micode.notes.app-main-7\:/layout/datetime_picker.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_datetime_picker.xml.flat -net.micode.notes.app-main-7\:/raw/introduction=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\raw_introduction.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_yellow_single.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_yellow_single.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_yellow.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_yellow.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_red.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_red.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/title_alert.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_title_alert.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_red_down.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_red_down.9.png.flat -net.micode.notes.app-main-7\:/menu/note_list_options.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\menu_note_list_options.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_yellow.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_yellow.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/icon_app.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_icon_app.png.flat -net.micode.notes.app-main-7\:/layout/note_item.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_note_item.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_background.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_background.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_red.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_red.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/title_bar_bg.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_title_bar_bg.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_footer_bg.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_footer_bg.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/new_note_pressed.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_new_note_pressed.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_green_up.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_green_up.9.png.flat -net.micode.notes.app-main-7\:/layout/note_list_dropdown_menu.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_note_list_dropdown_menu.xml.flat -net.micode.notes.app-main-7\:/layout/note_list_footer.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_note_list_footer.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_red_up.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_red_up.9.png.flat -net.micode.notes.app-main-7\:/menu/note_list_dropdown.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\menu_note_list_dropdown.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_white_up.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_white_up.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_blue.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_blue.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/bg_color_btn_mask.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_bg_color_btn_mask.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/edit_blue.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_blue.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/bg_btn_set_color.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_bg_btn_set_color.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_white.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_white.9.png.flat -net.micode.notes.app-main-7\:/xml/searchable.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\xml_searchable.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/notification.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_notification.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_blue_up.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_blue_up.9.png.flat -net.micode.notes.app-main-7\:/xml/widget_2x_info.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\xml_widget_2x_info.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/note_edit_color_selector_panel.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_note_edit_color_selector_panel.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_white_middle.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_white_middle.9.png.flat -net.micode.notes.app-main-7\:/layout/folder_list_item.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_folder_list_item.xml.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_folder.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_folder.9.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_blue.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_blue.png.flat -net.micode.notes.app-main-7\:/drawable-hdpi/list_yellow_down.9.png=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_yellow_down.9.png.flat -net.micode.notes.app-main-7\:/menu/note_edit.xml=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\menu_note_edit.xml.flat +#Mon May 26 08:21:52 CST 2025 +net.micode.notes.app-main-7\:/drawable-hdpi/call_record.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_call_record.png.flat +net.micode.notes.app-main-7\:/drawable/widget_2x_blue.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_widget_2x_blue.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_green.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_green.9.png.flat +net.micode.notes.app-main-7\:/drawable/list_blue_single.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_blue_single.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_yellow.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_yellow.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/font_small.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_small.png.flat +net.micode.notes.app-main-7\:/drawable/font_normal.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_font_normal.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_white.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_white.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_white.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_white.9.png.flat +net.micode.notes.app-main-7\:/drawable/widget_4x_red.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_widget_4x_red.png.flat +net.micode.notes.app-main-7\:/drawable/list_background.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_background.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_blue_down.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_blue_down.9.png.flat +net.micode.notes.app-main-7\:/color/secondary_text_dark.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\color_secondary_text_dark.xml.flat +net.micode.notes.app-main-7\:/layout/widget_4x.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_widget_4x.xml.flat +net.micode.notes.app-main-7\:/drawable/list_yellow_down.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_yellow_down.9.png.flat +net.micode.notes.app-main-7\:/drawable/list_yellow_up.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_yellow_up.9.png.flat +net.micode.notes.app-main-7\:/drawable/list_red_up.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_red_up.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/menu_delete.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_menu_delete.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/clock.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_clock.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/dropdown_icon.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_dropdown_icon.9.png.flat +net.micode.notes.app-main-7\:/drawable/bg_btn_set_color.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_bg_btn_set_color.png.flat +net.micode.notes.app-main-7\:/drawable/edit_title_red.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_edit_title_red.9.png.flat +net.micode.notes.app-main-7\:/drawable/menu_move.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_menu_move.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_green.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_green.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_white_single.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_white_single.9.png.flat +net.micode.notes.app-main-7\:/raw-zh-rCN/introduction=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\raw-zh-rCN_introduction.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_green.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_green.png.flat +net.micode.notes.app-main-7\:/xml/preferences.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\xml_preferences.xml.flat +net.micode.notes.app-main-7\:/drawable/list_green_up.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_green_up.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/delete.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_delete.png.flat +net.micode.notes.app-main-7\:/menu/call_record_folder.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\menu_call_record_folder.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_red.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_red.png.flat +net.micode.notes.app-main-7\:/layout/widget_2x.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_widget_2x.xml.flat +net.micode.notes.app-main-7\:/drawable/new_note_pressed.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_new_note_pressed.png.flat +net.micode.notes.app-main-7\:/drawable/list_green_down.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_green_down.9.png.flat +net.micode.notes.app-main-7\:/drawable/recover.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_recover.png.flat +net.micode.notes.app-main-7\:/drawable/dropdown_icon.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_dropdown_icon.9.png.flat +net.micode.notes.app-main-7\:/drawable/font_large.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_font_large.png.flat +net.micode.notes.app-main-7\:/drawable/list_red_single.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_red_single.9.png.flat +net.micode.notes.app-main-7\:/drawable/deselect_all.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_deselect_all.png.flat +net.micode.notes.app-main-7\:/layout/add_account_text.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_add_account_text.xml.flat +net.micode.notes.app-main-7\:/drawable/widget_4x_green.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_widget_4x_green.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/selected.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_selected.png.flat +net.micode.notes.app-main-7\:/drawable/list_green_single.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_green_single.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_blue_middle.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_blue_middle.9.png.flat +net.micode.notes.app-main-7\:/menu/recyclebin_options.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\menu_recyclebin_options.xml.flat +net.micode.notes.app-main-7\:/drawable/title_alert.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_title_alert.png.flat +net.micode.notes.app-main-7\:/drawable/widget_2x_red.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_widget_2x_red.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_blue_single.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_blue_single.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/font_large.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_large.png.flat +net.micode.notes.app-main-7\:/drawable/notification.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_notification.png.flat +net.micode.notes.app-main-7\:/layout/settings_header.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_settings_header.xml.flat +net.micode.notes.app-main-7\:/menu/call_note_edit.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\menu_call_note_edit.xml.flat +net.micode.notes.app-main-7\:/drawable/list_yellow_single.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_yellow_single.9.png.flat +net.micode.notes.app-main-7\:/drawable/list_white_single.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_white_single.9.png.flat +net.micode.notes.app-main-7\:/raw/introduction=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\raw_introduction.flat +net.micode.notes.app-main-7\:/drawable/new_note_normal.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_new_note_normal.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_yellow.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_yellow.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_red.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_red.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/title_alert.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_title_alert.png.flat +net.micode.notes.app-main-7\:/drawable/edit_blue.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_edit_blue.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_yellow.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_yellow.png.flat +net.micode.notes.app-main-7\:/drawable/list_blue_down.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_blue_down.9.png.flat +net.micode.notes.app-main-7\:/drawable/widget_2x_green.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_widget_2x_green.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_red.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_red.9.png.flat +net.micode.notes.app-main-7\:/drawable/selected.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_selected.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/title_bar_bg.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_title_bar_bg.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_green_up.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_green_up.9.png.flat +net.micode.notes.app-main-7\:/layout/note_list_dropdown_menu.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_note_list_dropdown_menu.xml.flat +net.micode.notes.app-main-7\:/layout/note_list_footer.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_note_list_footer.xml.flat +net.micode.notes.app-main-7\:/drawable/list_white_middle.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_white_middle.9.png.flat +net.micode.notes.app-main-7\:/drawable/edit_red.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_edit_red.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_white_up.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_white_up.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_blue.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_blue.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/bg_color_btn_mask.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_bg_color_btn_mask.png.flat +net.micode.notes.app-main-7\:/drawable/menu_delete.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_menu_delete.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_blue.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_blue.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/bg_btn_set_color.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_bg_btn_set_color.png.flat +net.micode.notes.app-main-7\:/drawable/bg_color_btn_mask.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_bg_color_btn_mask.png.flat +net.micode.notes.app-main-7\:/xml/searchable.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\xml_searchable.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/notification.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_notification.png.flat +net.micode.notes.app-main-7\:/drawable/list_blue_up.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_blue_up.9.png.flat +net.micode.notes.app-main-7\:/drawable/edit_title_blue.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_edit_title_blue.9.png.flat +net.micode.notes.app-main-7\:/drawable/font_size_selector_bg.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_font_size_selector_bg.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_blue_up.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_blue_up.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/note_edit_color_selector_panel.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_note_edit_color_selector_panel.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_white_middle.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_white_middle.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_folder.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_folder.9.png.flat +net.micode.notes.app-main-7\:/drawable/title_bar_bg.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_title_bar_bg.9.png.flat +net.micode.notes.app-main-7\:/drawable/icon_app.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_icon_app.png.flat +net.micode.notes.app-main-7\:/menu/note_edit.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\menu_note_edit.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/font_super.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_super.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/new_note_normal.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_new_note_normal.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_yellow.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_yellow.9.png.flat +net.micode.notes.app-main-7\:/menu/sub_folder.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\menu_sub_folder.xml.flat +net.micode.notes.app-main-7\:/drawable/font_super.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_font_super.png.flat +net.micode.notes.app-main-7\:/layout/account_dialog_title.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_account_dialog_title.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_green.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_green.png.flat +net.micode.notes.app-main-7\:/drawable/list_blue_middle.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_blue_middle.9.png.flat +net.micode.notes.app-main-7\:/layout/dialog_edit_text.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_dialog_edit_text.xml.flat +net.micode.notes.app-main-7\:/drawable/edit_white.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_edit_white.9.png.flat +net.micode.notes.app-main-7\:/drawable/edit_green.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_edit_green.9.png.flat +net.micode.notes.app-main-7\:/drawable/widget_4x_yellow.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_widget_4x_yellow.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_yellow_middle.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_yellow_middle.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/font_normal.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_normal.png.flat +net.micode.notes.app-main-7\:/drawable/widget_2x_yellow.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_widget_2x_yellow.png.flat +net.micode.notes.app-main-7\:/layout/note_edit.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_note_edit.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_green_single.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_green_single.9.png.flat +net.micode.notes.app-main-7\:/drawable/note_edit_color_selector_panel.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_note_edit_color_selector_panel.png.flat +net.micode.notes.app-main-7\:/drawable/call_record.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_call_record.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_red_single.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_red_single.9.png.flat +net.micode.notes.app-main-7\:/drawable/list_footer_bg.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_footer_bg.9.png.flat +net.micode.notes.app-main-7\:/layout/recycle_bin.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_recycle_bin.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/menu_move.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_menu_move.png.flat +net.micode.notes.app-main-7\:/drawable/edit_yellow.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_edit_yellow.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_green_down.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_green_down.9.png.flat +net.micode.notes.app-main-7\:/drawable/clock.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_clock.png.flat +net.micode.notes.app-main-7\:/layout/note_edit_list_item.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_note_edit_list_item.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_blue.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_blue.png.flat +net.micode.notes.app-main-7\:/drawable/search_result.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_search_result.png.flat +net.micode.notes.app-main-7\:/drawable/recycle_list.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_recycle_list.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/font_size_selector_bg.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_size_selector_bg.9.png.flat +net.micode.notes.app-main-7\:/xml/widget_4x_info.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\xml_widget_4x_info.xml.flat +net.micode.notes.app-main-7\:/drawable/edit_title_yellow.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_edit_title_yellow.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/search_result.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_search_result.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_white.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_white.png.flat +net.micode.notes.app-main-7\:/drawable/list_white_up.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_white_up.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_green_middle.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_green_middle.9.png.flat +net.micode.notes.app-main-7\:/drawable/widget_4x_blue.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_widget_4x_blue.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_white_down.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_white_down.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_yellow_up.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_yellow_up.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_red_middle.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_red_middle.9.png.flat +net.micode.notes.app-main-7\:/menu/note_list.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\menu_note_list.xml.flat +net.micode.notes.app-main-7\:/drawable/new_note.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_new_note.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_red.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_red.9.png.flat +net.micode.notes.app-main-7\:/drawable/widget_2x_white.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_widget_2x_white.png.flat +net.micode.notes.app-main-7\:/drawable/select_all.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_select_all.png.flat +net.micode.notes.app-main-7\:/layout/note_list.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_note_list.xml.flat +net.micode.notes.app-main-7\:/color/primary_text_dark.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\color_primary_text_dark.xml.flat +net.micode.notes.app-main-7\:/drawable/list_red_middle.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_red_middle.9.png.flat +net.micode.notes.app-main-7\:/layout/datetime_picker.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_datetime_picker.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_yellow_single.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_yellow_single.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_red_down.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_red_down.9.png.flat +net.micode.notes.app-main-7\:/menu/note_list_options.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\menu_note_list_options.xml.flat +net.micode.notes.app-main-7\:/drawable/edit_title_green.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_edit_title_green.9.png.flat +net.micode.notes.app-main-7\:/drawable/list_white_down.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_white_down.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/icon_app.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_icon_app.png.flat +net.micode.notes.app-main-7\:/layout/note_item.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_note_item.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_background.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_background.png.flat +net.micode.notes.app-main-7\:/drawable/widget_4x_white.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_widget_4x_white.png.flat +net.micode.notes.app-main-7\:/drawable/list_yellow_middle.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_yellow_middle.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_footer_bg.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_footer_bg.9.png.flat +net.micode.notes.app-main-7\:/drawable/list_green_middle.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_green_middle.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/new_note_pressed.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_new_note_pressed.png.flat +net.micode.notes.app-main-7\:/drawable/edit_title_white.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_edit_title_white.9.png.flat +net.micode.notes.app-main-7\:/drawable/list_folder.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_folder.9.png.flat +net.micode.notes.app-main-7\:/drawable/list_red_down.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_list_red_down.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_red_up.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_red_up.9.png.flat +net.micode.notes.app-main-7\:/menu/note_list_dropdown.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\menu_note_list_dropdown.xml.flat +net.micode.notes.app-main-7\:/drawable/font_small.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_font_small.png.flat +net.micode.notes.app-main-7\:/drawable/delete.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable_delete.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_white.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_white.9.png.flat +net.micode.notes.app-main-7\:/xml/widget_2x_info.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\xml_widget_2x_info.xml.flat +net.micode.notes.app-main-7\:/layout/folder_list_item.xml=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\layout_folder_list_item.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_blue.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_blue.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_yellow_down.9.png=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_yellow_down.9.png.flat diff --git a/src/note_but_github/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml b/src/note_but_github/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml deleted file mode 100644 index d65e0cc..0000000 --- a/src/note_but_github/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - 短信 - 邮件 - - - %1$s 条符合“%2$s”的搜索结果 - - 确认删除文件夹及所包含的便签吗? - 确认要删除该条便签吗? - 确认要删除所选的 %d 条便签吗? - 删除 - 便签 - 便签2x2 - 便签4x4 - 删除 - 通话便签 - 取消 - 设置 - 成功删除提醒 - 不能为空便签设置闹钟提醒 - 不能将空便签发送到桌面 - 要查看的便签不存在 - 导出文本时发生错误,请检查SD卡 - SD卡被占用,不能操作 - 同步已取消 - 同步失败,发生内部错误 - 同步失败,请检查网络和帐号设置 - 导出失败 - 文件夹 %1$s 已存在,请重新命名 - yyyyMMdd - MM月dd日 kk:mm - 已将文本文件(%1$s)输出至SD卡(%2$s)目录 - 已将所选 %1$d 条便签移到 %2$s 文件夹 - 请输入名称 - 已添加到桌面 - 提醒我 - 新建文件夹 - 删除 - 取消全选 - 导出文本 - 修改文件夹名称 - 刪除文件夹 - 查看文件夹 - - 正常 - 文字大小 - - 超大 - 进入清单模式 - 移动到文件夹 - 上一级文件夹 - 退出清单模式 - 删除提醒 - 搜索 - 全选 - 没有选中项,操作无效 - 选中了 %d 项 - 发送到桌面 - 设置 - 分享 - 同步 - 取消同步 - 选择文件夹 - 已过期 - 发送邮件 - 打开地图 - 呼叫电话 - 浏览网页 - 查看 - 知道了 - 新建便签 - ... - 与google task同步便签记录 - 同步账号 - 添加账号 - 新建便签背景颜色随机 - 取消同步 - 立即同步 - 当前帐号 %1$s - 如更换同步帐号,过去的帐号同步信息将被清空,再次切换的同时可能会造成数据重复 - 请选择google帐号,便签将与该帐号的google task内容同步。 - 同步便签 - 上次同步于 %1$s - 取消 - 更换账号 - 删除账号 - 设置 - 正在同步中,不能修改同步帐号 - 同步帐号已设置为%1$s - 便签 - 搜索便签 - 正在搜索便签 - 便签中的文字 - 创建提醒 - 导出成功 - 与%1$s同步成功 - 正在获取服务器便签列表... - 登录%1$s... - 正在同步本地便签... - 同步已取消 - 同步失败 - 同步成功 - 同步便签... - 没有关联内容,点击新建便签。 - 访客模式下,便签内容不可见 - \ No newline at end of file diff --git a/src/note_but_github/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml b/src/note_but_github/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml deleted file mode 100644 index 226b5bc..0000000 --- a/src/note_but_github/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/note_but_github/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values/values.xml b/src/note_but_github/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values/values.xml deleted file mode 100644 index e49b0c3..0000000 --- a/src/note_but_github/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values/values.xml +++ /dev/null @@ -1,169 +0,0 @@ - - - - -%s - --%s - --%s - --%s - - - Messaging - Email - - #335b5b5b - 26sp - 20sp - 17sp - 14sp - 33sp - - %1$s result for \"%2$s\" - - %1$s results for \"%2$s\" - - Confirm to delete folder and its notes? - Confirm to delete this note? - Confirm to delete the selected %d notes? - Delete selected notes - Notes - Notes 2x2 - Notes 4x4 - Delete - Call notes - cancel - set - Delete reminder successfully - Sorry, can not set clock on empty note - Sorry, can not send and empty note to home - The note is not exist - Export failed, please check SD card - SD card busy, not available now - Sync is canceled - Sync failed, internal error occurs - Sync failed, please check network and account settings - Export fail - notes_%s.txt - /MIUI/notes/ - The folder %1$s exist, please rename - yyyyMMdd - MMMd kk:mm - Export text file (%1$s) to SD (%2$s) directory - (%d) - Have moved selected %1$d notes to %2$s folder - Input name - Note added to home - Remind me - New Folder - Delete - Deselect all - Export text - Change folder name - Delete folder - View folder - Large - Medium - Font size - Small - Super - Enter check list - Move to folder - Parent folder - Leave check list - Delete reminder - Search - Select all - Nothing selected, the operation is invalid - %d selected - Send to home - Settings - Share - Sync - Cancel syncing - Select folder - Expired - Send email - Open map - Call - Browse web - Take a look - Got it - Add note - ... - Sync notes with google task - Sync account - Add account - New note background color random - Cancel syncing - Sync immediately - Current account %1$s - All sync related information will be deleted, which may result in duplicated items sometime - Please select a google account. Local notes will be synced with google task. - Sync notes - Last sync time %1$s - yyyy-MM-dd hh:mm:ss - Cancel - Change sync account - Remove sync account - Settings - Cannot change the account because sync is in progress - %1$s has been set as the sync account - Notes - Search notes - Searching Notes - Text in your notes - Set reminder - Export successful - Sync is successful with account %1$s - Getting remote note list... - Logging into %1$s... - Synchronize local notes with Google Task... - Sync is canceled - Sync is failed - Sync is successful - Syncing notes... - No associated note found, click to create associated note. - Privacy mode,can not see note content - - - - - - - - - - - - \ No newline at end of file diff --git a/src/note_but_github/app/build/intermediates/incremental/debug/mergeDebugResources/merger.xml b/src/note_but_github/app/build/intermediates/incremental/debug/mergeDebugResources/merger.xml index 0d0c902..87dd124 100644 --- a/src/note_but_github/app/build/intermediates/incremental/debug/mergeDebugResources/merger.xml +++ b/src/note_but_github/app/build/intermediates/incremental/debug/mergeDebugResources/merger.xml @@ -1,5 +1,5 @@ - + -%s --%s --%s @@ -7,11 +7,11 @@ Messaging Email - #335b5b5b33sp26sp20sp17sp14spNotesNotes 2x2Notes 4x4No associated note found, click to create associated note.Privacy mode,can not see note content...Add noteDelete reminder successfullySet reminderExpiredyyyyMMddMMMd kk:mmGot itTake a lookCallSend emailBrowse webOpen map/MIUI/notes/notes_%s.txt(%d)New FolderExport textSyncCancel syncingSettingsSearchDeleteMove to folder%d selectedNothing selected, the operation is invalidSelect allDeselect allFont sizeSmallMediumLargeSuperEnter check listLeave check listView folderDelete folderChange folder nameThe folder %1$s exist, please renameShareSend to homeRemind meDelete reminderSelect folderParent folderNote added to homeConfirm to delete folder and its notes?Delete selected notesConfirm to delete the selected %d notes?Confirm to delete this note?Have moved selected %1$d notes to %2$s folderSD card busy, not available nowExport failed, please check SD cardThe note is not existSorry, can not set clock on empty noteSorry, can not send and empty note to homeExport successfulExport failExport text file (%1$s) to SD (%2$s) directorySyncing notes...Sync is successfulSync is failedSync is canceledSync is successful with account %1$sSync failed, please check network and account settingsSync failed, internal error occursSync is canceledLogging into %1$s...Getting remote note list...Synchronize local notes with Google Task...SettingsSync accountSync notes with google taskLast sync time %1$syyyy-MM-dd hh:mm:ssAdd accountChange sync accountRemove sync accountCancelSync immediatelyCancel syncingCurrent account %1$sAll sync related information will be deleted, which may result in duplicated items sometimeSync notesPlease select a google account. Local notes will be synced with google task.Cannot change the account because sync is in progress%1$s has been set as the sync accountNew note background color randomDeleteCall notesInput nameSearching NotesSearch notesText in your notesNotessetcancel + #335b5b5b33sp26sp20sp17sp14spTrash CanNotesNotes 2x2Notes 4x4No associated note found, click to create associated note.Privacy mode,can not see note content...Add noteDelete reminder successfullySet reminderExpiredyyyyMMddMMMd kk:mmGot itTake a lookCallSend emailBrowse webOpen map/MIUI/notes/notes_%s.txt(%d)New FolderExport textSyncCancel syncingSettingsSearchDeleteMove to folder%d selectedNothing selected, the operation is invalidSelect allDeselect allFont sizeSmallMediumLargeSuperEnter check listLeave check listView folderDelete folderChange folder nameThe folder %1$s exist, please renameShareSend to homeRemind meDelete reminderSelect folderParent folderNote added to homeConfirm to delete folder and its notes?Delete selected notesConfirm to delete the selected %d notes?Confirm to delete this note?Have moved selected %1$d notes to %2$s folderSD card busy, not available nowExport failed, please check SD cardThe note is not existSorry, can not set clock on empty noteSorry, can not send and empty note to homeExport successfulExport failExport text file (%1$s) to SD (%2$s) directorySyncing notes...Sync is successfulSync is failedSync is canceledSync is successful with account %1$sSync failed, please check network and account settingsSync failed, internal error occursSync is canceledLogging into %1$s...Getting remote note list...Synchronize local notes with Google Task...SettingsSync accountSync notes with google taskLast sync time %1$syyyy-MM-dd hh:mm:ssAdd accountChange sync accountRemove sync accountCancelSync immediatelyCancel syncingCurrent account %1$sAll sync related information will be deleted, which may result in duplicated items sometimeSync notesPlease select a google account. Local notes will be synced with google task.Cannot change the account because sync is in progress%1$s has been set as the sync accountNew note background color randomDeleteCall notesInput nameSearching NotesSearch notesText in your notesNotessetcancel %1$s result for \"%2$s\" %1$s results for \"%2$s\" - + visible + 短信 邮件 - 便签便签2x2便签4x4没有关联内容,点击新建便签。访客模式下,便签内容不可见...新建便签成功删除提醒创建提醒已过期yyyyMMddMM月dd日 kk:mm知道了查看呼叫电话发送邮件浏览网页打开地图新建文件夹导出文本同步取消同步设置搜索删除移动到文件夹选中了 %d 项没有选中项,操作无效全选取消全选文字大小正常超大进入清单模式退出清单模式查看文件夹刪除文件夹修改文件夹名称文件夹 %1$s 已存在,请重新命名分享发送到桌面提醒我删除提醒选择文件夹上一级文件夹已添加到桌面删除确认要删除所选的 %d 条便签吗?确认要删除该条便签吗?确认删除文件夹及所包含的便签吗?已将所选 %1$d 条便签移到 %2$s 文件夹SD卡被占用,不能操作导出文本时发生错误,请检查SD卡要查看的便签不存在不能为空便签设置闹钟提醒不能将空便签发送到桌面导出成功导出失败已将文本文件(%1$s)输出至SD卡(%2$s)目录同步便签...同步成功同步失败同步已取消与%1$s同步成功同步失败,请检查网络和帐号设置同步失败,发生内部错误同步已取消登录%1$s...正在获取服务器便签列表...正在同步本地便签...设置同步账号与google task同步便签记录上次同步于 %1$s添加账号更换账号删除账号取消立即同步取消同步当前帐号 %1$s如更换同步帐号,过去的帐号同步信息将被清空,再次切换的同时可能会造成数据重复同步便签请选择google帐号,便签将与该帐号的google task内容同步。正在同步中,不能修改同步帐号同步帐号已设置为%1$s新建便签背景颜色随机删除通话便签请输入名称正在搜索便签搜索便签便签中的文字便签设置取消 + 便签便签2x2便签4x4没有关联内容,点击新建便签。访客模式下,便签内容不可见...新建便签成功删除提醒创建提醒已过期yyyyMMddMM月dd日 kk:mm知道了查看呼叫电话发送邮件浏览网页打开地图新建文件夹导出文本同步取消同步设置搜索删除移动到文件夹选中了 %d 项没有选中项,操作无效全选取消全选文字大小正常超大进入清单模式退出清单模式查看文件夹刪除文件夹修改文件夹名称文件夹 %1$s 已存在,请重新命名分享发送到桌面提醒我删除提醒选择文件夹上一级文件夹已添加到桌面删除确认要删除所选的 %d 条便签吗?确认要删除该条便签吗?确认删除文件夹及所包含的便签吗?已将所选 %1$d 条便签移到 %2$s 文件夹SD卡被占用,不能操作导出文本时发生错误,请检查SD卡要查看的便签不存在不能为空便签设置闹钟提醒不能将空便签发送到桌面导出成功导出失败已将文本文件(%1$s)输出至SD卡(%2$s)目录同步便签...同步成功同步失败同步已取消与%1$s同步成功同步失败,请检查网络和帐号设置同步失败,发生内部错误同步已取消登录%1$s...正在获取服务器便签列表...正在同步本地便签...设置同步账号与google task同步便签记录上次同步于 %1$s添加账号更换账号删除账号取消立即同步取消同步当前帐号 %1$s如更换同步帐号,过去的帐号同步信息将被清空,再次切换的同时可能会造成数据重复同步便签请选择google帐号,便签将与该帐号的google task内容同步。正在同步中,不能修改同步帐号同步帐号已设置为%1$s新建便签背景颜色随机删除通话便签请输入名称正在搜索便签搜索便签便签中的文字便签设置取消 %1$s 条符合“%2$s”的搜索结果 - + 短信 郵件 - 便簽便簽2x2便簽4x4沒有關聯內容,點擊新建便簽。訪客模式下,便籤內容不可見...新建便簽成功刪除提醒創建提醒已過期yyyyMMddMM月dd日 kk:mm知道了查看呼叫電話發送郵件浏覽網頁打開地圖已將所選 %1$d 便籤移到 %2$s 文件夾新建文件夾導出文本同步取消同步設置搜尋刪除移動到文件夾選中了 %d 項沒有選中項,操作無效全選取消全選文字大小正常超大進入清單模式退出清單模式查看文件夾刪除文件夾修改文件夾名稱文件夾 %1$s 已存在,請重新命名分享發送到桌面提醒我刪除提醒選擇文件夾上一級文件夾已添加到桌面刪除确认要刪除所選的 %d 條便籤嗎?确认要删除該條便籤嗎?確認刪除檔夾及所包含的便簽嗎?SD卡被佔用,不能操作導出TXT時發生錯誤,請檢查SD卡要查看的便籤不存在不能爲空便籤設置鬧鐘提醒不能將空便籤發送到桌面導出成功導出失敗已將文本文件(%1$s)導出至SD(%2$s)目錄同步便簽...同步成功同步失敗同步已取消與%1$s同步成功同步失敗,請檢查網絡和帳號設置同步失敗,發生內部錯誤同步已取消登陸%1$s...正在獲取服務器便籤列表...正在同步本地便籤...設置同步賬號与google task同步便簽記錄上次同步于 %1$s添加賬號更換賬號刪除賬號取消立即同步取消同步當前帳號 %1$s如更換同步帳號,過去的帳號同步信息將被清空,再次切換的同時可能會造成數據重復同步便簽請選擇google帳號,便簽將與該帳號的google task內容同步。正在同步中,不能修改同步帳號同步帳號已設置為%1$s新建便籤背景顏色隨機刪除通話便籤請輸入名稱正在搜索便籤搜索便籤便籤中的文字便籤設置取消 + 便簽便簽2x2便簽4x4沒有關聯內容,點擊新建便簽。訪客模式下,便籤內容不可見...新建便簽成功刪除提醒創建提醒已過期yyyyMMddMM月dd日 kk:mm知道了查看呼叫電話發送郵件浏覽網頁打開地圖已將所選 %1$d 便籤移到 %2$s 文件夾新建文件夾導出文本同步取消同步設置搜尋刪除移動到文件夾選中了 %d 項沒有選中項,操作無效全選取消全選文字大小正常超大進入清單模式退出清單模式查看文件夾刪除文件夾修改文件夾名稱文件夾 %1$s 已存在,請重新命名分享發送到桌面提醒我刪除提醒選擇文件夾上一級文件夾已添加到桌面刪除确认要刪除所選的 %d 條便籤嗎?确认要删除該條便籤嗎?確認刪除檔夾及所包含的便簽嗎?SD卡被佔用,不能操作導出TXT時發生錯誤,請檢查SD卡要查看的便籤不存在不能爲空便籤設置鬧鐘提醒不能將空便籤發送到桌面導出成功導出失敗已將文本文件(%1$s)導出至SD(%2$s)目錄同步便簽...同步成功同步失敗同步已取消與%1$s同步成功同步失敗,請檢查網絡和帳號設置同步失敗,發生內部錯誤同步已取消登陸%1$s...正在獲取服務器便籤列表...正在同步本地便籤...設置同步賬號与google task同步便簽記錄上次同步于 %1$s添加賬號更換賬號刪除賬號取消立即同步取消同步當前帳號 %1$s如更換同步帳號,過去的帳號同步信息將被清空,再次切換的同時可能會造成數據重復同步便簽請選擇google帳號,便簽將與該帳號的google task內容同步。正在同步中,不能修改同步帳號同步帳號已設置為%1$s新建便籤背景顏色隨機刪除通話便籤請輸入名稱正在搜索便籤搜索便籤便籤中的文字便籤設置取消 %1$s 條符合”%2$s“的搜尋結果 - \ No newline at end of file + \ No newline at end of file diff --git a/src/note_but_github/app/build/intermediates/incremental/mergeDebugAssets/merger.xml b/src/note_but_github/app/build/intermediates/incremental/mergeDebugAssets/merger.xml index e32ba79..eb8f44c 100644 --- a/src/note_but_github/app/build/intermediates/incremental/mergeDebugAssets/merger.xml +++ b/src/note_but_github/app/build/intermediates/incremental/mergeDebugAssets/merger.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/note_but_github/app/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml b/src/note_but_github/app/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml index 115236d..b0a96b4 100644 --- a/src/note_but_github/app/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +++ b/src/note_but_github/app/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/note_but_github/app/build/intermediates/incremental/mergeDebugShaders/merger.xml b/src/note_but_github/app/build/intermediates/incremental/mergeDebugShaders/merger.xml index 3717660..85b2603 100644 --- a/src/note_but_github/app/build/intermediates/incremental/mergeDebugShaders/merger.xml +++ b/src/note_but_github/app/build/intermediates/incremental/mergeDebugShaders/merger.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/note_but_github/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt b/src/note_but_github/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt index d8940ad..24d9871 100644 --- a/src/note_but_github/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt +++ b/src/note_but_github/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt @@ -1,4 +1,4 @@ -#Tue Mar 25 18:17:58 CST 2025 -base.0=D\:\\xueye\\xiaominote\\note_but_github\\app\\build\\intermediates\\dex\\debug\\mergeDexDebug\\classes.dex +#Mon May 26 08:22:08 CST 2025 +base.0=D\:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\build\\intermediates\\dex\\debug\\mergeDexDebug\\classes.dex renamed.0=classes.dex path.0=classes.dex diff --git a/src/note_but_github/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/androidResources b/src/note_but_github/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/androidResources index 5f5a841..b05dc62 100644 Binary files a/src/note_but_github/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/androidResources and b/src/note_but_github/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/androidResources differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper.class index d04f952..fa23db5 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class index 976265d..1f78d33 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/MetaData.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/MetaData.class index 2319eaf..0da31e8 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/MetaData.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/MetaData.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/Node.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/Node.class index d2dcfb5..b2c63d4 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/Node.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/Node.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlData.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlData.class index c61d69f..be5b129 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlData.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlData.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlNote.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlNote.class index 26c68fb..d004695 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlNote.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlNote.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/TaskList.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/TaskList.class index 69ac9b5..5590b3b 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/TaskList.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/TaskList.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/ActionFailureException.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/ActionFailureException.class index 3c7e5b6..b47859c 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/ActionFailureException.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/ActionFailureException.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/NetworkFailureException.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/NetworkFailureException.class index 06827bd..5cc6db5 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/NetworkFailureException.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/NetworkFailureException.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskASyncTask.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskASyncTask.class index 763c6c3..7730b56 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskASyncTask.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskASyncTask.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskManager.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskManager.class index f105e8c..5d7829c 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskManager.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskManager.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class index e9f5b68..a44b3a2 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils$TextExport.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils$TextExport.class index bfb671c..e62d53b 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils$TextExport.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils$TextExport.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils.class index ed4ac8e..e3f60f6 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/DataUtils.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/DataUtils.class index fc1d9a2..835abf0 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/DataUtils.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/DataUtils.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteBgResources.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteBgResources.class index f1053bc..16ca0ef 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteBgResources.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteBgResources.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteItemBgResources.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteItemBgResources.class index 2a3fdb3..0dc0cc2 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteItemBgResources.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteItemBgResources.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$TextAppearanceResources.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$TextAppearanceResources.class index b4c98c4..38dafb9 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$TextAppearanceResources.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$TextAppearanceResources.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$WidgetBgResources.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$WidgetBgResources.class index 126d6aa..14b7078 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$WidgetBgResources.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$WidgetBgResources.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser.class index 7ded6f4..4d31bb6 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class index 94fd184..a76d68c 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker.class index ff95cab..df75a15 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog.class index 81d6513..38a0205 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu.class index 86cabc1..5fb5347 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class index 5012ef9..db1f4ee 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter.class index 354ae8e..e92b56c 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class index 5b0d475..b47c690 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class index 926becc..34b010e 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class index 1aacd35..bfa835a 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class index 432dd4e..25c75de 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class index 0db9dac..109154c 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$1.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$1.class index 5c26900..5b90336 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$1.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$1.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText.class index fa0393d..1d3f36b 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class index e56515b..e91dff0 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class index 4c8e4ce..0c250ec 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class index ecd8c01..c22457d 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class index 677c614..6d13f3a 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class index 23339c8..83c7a02 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class index 76b61b2..73f6545 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class index 3bf9de1..616449d 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class index e86c11d..a3e98d9 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class index e0d186b..d0463b5 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class index b1e1063..a3994a8 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class index b979434..6cd9194 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class index e8eaf4b..4af37e9 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class index b243892..2cce5c1 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class index 06036f1..25bfef7 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class index 08ab9fa..52efe7b 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class index ee5b653..eef60cb 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class index 1f9f3a0..8027e8f 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class index b58eac3..f0593ea 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListItem.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListItem.class index 9ec847b..3dbbad1 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListItem.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListItem.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class index 7598ed0..c611ac8 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class index 5053337..efd2b98 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity.class index f6e1ed8..3764d5a 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider.class index fabc84f..fece2ea 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_2x.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_2x.class index e33d1c0..f131f5c 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_2x.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_2x.class differ diff --git a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_4x.class b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_4x.class index e315716..1b35381 100644 Binary files a/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_4x.class and b/src/note_but_github/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_4x.class differ diff --git a/src/note_but_github/app/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt b/src/note_but_github/app/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt index 159a880..22d594b 100644 --- a/src/note_but_github/app/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +++ b/src/note_but_github/app/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt @@ -20,254 +20,262 @@ 20 android:versionName="0.1" > 21 22 D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:23:5-44 +22-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:23:5-44 23 android:minSdkVersion="14" -23-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:23:15-41 +23-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:23:15-41 24 android:targetSdkVersion="29" /> -24-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:23:5-44 +24-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:23:5-44 25 26 -26-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:25:5-81 -26-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:25:22-78 +26-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:25:5-81 +26-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:25:22-78 27 -27-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:26:5-88 -27-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:26:22-85 +27-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:26:5-88 +27-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:26:22-85 28 -28-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:27:5-67 -28-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:27:22-64 +28-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:27:5-67 +28-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:27:22-64 29 -29-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:28:5-72 -29-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:28:22-69 +29-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:28:5-72 +29-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:28:22-69 30 -30-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:29:5-74 -30-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:29:22-71 +30-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:29:5-74 +30-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:29:22-71 31 -31-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:30:5-80 -31-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:30:22-77 +31-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:30:5-80 +31-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:30:22-77 32 -32-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:31:5-71 -32-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:31:22-68 +32-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:31:5-71 +32-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:31:22-68 33 -33-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:32:5-74 -33-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:32:22-71 +33-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:32:5-74 +33-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:32:22-71 34 -34-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:33:5-81 -34-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:33:22-78 +34-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:33:5-81 +34-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:33:22-78 35 36 D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:35:5-149:19 +36-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:35:5-155:19 37 android:debuggable="true" 38 android:icon="@drawable/icon_app" -38-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:36:9-42 +38-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:36:9-42 39 android:label="@string/app_name" -39-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:37:9-41 +39-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:37:9-41 40 android:testOnly="true" > 41 D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:38:9-51:20 +41-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:38:9-51:20 42 android:name="net.micode.notes.ui.NotesListActivity" -42-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:39:13-49 +42-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:39:13-49 43 android:configChanges="keyboardHidden|orientation|screenSize" -43-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:40:13-74 +43-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:40:13-74 44 android:label="@string/app_name" -44-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:41:13-45 +44-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:41:13-45 45 android:launchMode="singleTop" -45-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:42:13-43 +45-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:42:13-43 46 android:theme="@style/NoteTheme" -46-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:43:13-45 +46-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:43:13-45 47 android:uiOptions="splitActionBarWhenNarrow" -47-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:44:13-57 +47-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:44:13-57 48 android:windowSoftInputMode="adjustPan" > -48-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:45:13-52 +48-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:45:13-52 49 -49-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:47:13-50:29 +49-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:47:13-50:29 50 -50-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:48:17-69 -50-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:48:25-66 +50-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:48:17-69 +50-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:48:25-66 51 52 -52-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:49:17-77 -52-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:49:27-74 +52-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:49:17-77 +52-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:49:27-74 53 54 55 D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:53:9-81:20 +55-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:53:9-81:20 56 android:name="net.micode.notes.ui.NoteEditActivity" -56-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:54:13-48 +56-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:54:13-48 57 android:configChanges="keyboardHidden|orientation|screenSize" -57-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:55:13-74 +57-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:55:13-74 58 android:launchMode="singleTop" -58-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:56:13-43 +58-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:56:13-43 59 android:theme="@style/NoteTheme" > -59-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:57:13-45 +59-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:57:13-45 60 -60-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:59:13-64:29 +60-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:59:13-64:29 61 -61-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:60:17-69 -61-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:60:25-66 +61-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:60:17-69 +61-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:60:25-66 62 63 -63-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:61:17-76 -63-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:61:27-73 +63-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:61:17-76 +63-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:61:27-73 64 65 -65-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:62:17-78 -65-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:62:23-75 +65-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:62:17-78 +65-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:62:23-75 66 -66-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:62:17-78 -66-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:62:23-75 +66-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:62:17-78 +66-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:62:23-75 67 68 -68-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:66:13-71:29 +68-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:66:13-71:29 69 -69-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:67:17-79 -69-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:67:25-76 +69-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:67:17-79 +69-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:67:25-76 70 71 -71-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:61:17-76 -71-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:61:27-73 +71-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:61:17-76 +71-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:61:27-73 72 73 -73-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:62:17-78 -73-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:62:23-75 +73-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:62:17-78 +73-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:62:23-75 74 -74-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:62:17-78 -74-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:62:23-75 +74-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:62:17-78 +74-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:62:23-75 75 76 -76-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:73:13-76:29 +76-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:73:13-76:29 77 -77-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:74:17-71 -77-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:74:25-68 +77-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:74:17-71 +77-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:74:25-68 78 79 -79-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:61:17-76 -79-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:61:27-73 +79-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:61:17-76 +79-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:61:27-73 80 81 82 D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:78:13-80:54 +82-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:78:13-80:54 83 android:name="android.app.searchable" -83-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:79:17-54 +83-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:79:17-54 84 android:resource="@xml/searchable" /> -84-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:80:17-51 +84-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:80:17-51 85 86 87 D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:83:9-86:43 +87-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:83:9-86:43 88 android:name="net.micode.notes.data.NotesProvider" -88-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:84:13-63 +88-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:84:13-63 89 android:authorities="micode_notes" -89-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:85:13-47 +89-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:85:13-47 90 android:multiprocess="true" /> -90-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:86:13-40 +90-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:86:13-40 91 92 D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:88:9-100:20 +92-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:88:9-100:20 93 android:name="net.micode.notes.widget.NoteWidgetProvider_2x" -93-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:89:13-57 +93-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:89:13-57 94 android:label="@string/app_widget2x2" > -94-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:90:13-50 +94-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:90:13-50 95 -95-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:91:13-95:29 +95-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:91:13-95:29 96 -96-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:92:17-84 -96-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:92:25-81 +96-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:92:17-84 +96-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:92:25-81 97 -97-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:93:17-85 -97-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:93:25-82 +97-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:93:17-85 +97-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:93:25-82 98 -98-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:94:17-85 -98-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:94:25-82 +98-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:94:17-85 +98-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:94:25-82 99 100 101 D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:97:13-99:58 +101-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:97:13-99:58 102 android:name="android.appwidget.provider" -102-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:98:17-58 +102-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:98:17-58 103 android:resource="@xml/widget_2x_info" /> -103-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:99:17-55 +103-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:99:17-55 104 105 D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:101:9-114:20 +105-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:101:9-114:20 106 android:name="net.micode.notes.widget.NoteWidgetProvider_4x" -106-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:102:13-57 +106-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:102:13-57 107 android:label="@string/app_widget4x4" > -107-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:103:13-50 +107-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:103:13-50 108 -108-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:91:13-95:29 +108-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:91:13-95:29 109 -109-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:92:17-84 -109-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:92:25-81 +109-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:92:17-84 +109-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:92:25-81 110 -110-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:93:17-85 -110-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:93:25-82 +110-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:93:17-85 +110-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:93:25-82 111 -111-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:94:17-85 -111-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:94:25-82 +111-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:94:17-85 +111-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:94:25-82 112 113 114 D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:97:13-99:58 +114-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:97:13-99:58 115 android:name="android.appwidget.provider" -115-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:98:17-58 +115-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:98:17-58 116 android:resource="@xml/widget_4x_info" /> -116-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:99:17-55 +116-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:99:17-55 117 118 -118-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:116:9-120:20 -118-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:116:19-55 +118-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:116:9-120:20 +118-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:116:19-55 119 -119-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:117:13-119:29 +119-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:117:13-119:29 120 -120-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:118:17-79 -120-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:118:25-76 +120-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:118:17-79 +120-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:118:25-76 121 122 123 D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:122:9-125:20 +123-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:122:9-125:20 124 android:name="net.micode.notes.ui.AlarmReceiver" -124-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:123:13-61 +124-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:123:13-61 125 android:process=":remote" > -125-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:124:13-38 +125-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:124:13-38 126 127 128 D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:127:9-132:20 +128-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:127:9-132:20 129 android:name="net.micode.notes.ui.AlarmAlertActivity" -129-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:128:13-50 +129-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:128:13-50 130 android:label="@string/app_name" -130-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:129:13-45 +130-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:129:13-45 131 android:launchMode="singleInstance" -131-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:130:13-48 +131-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:130:13-48 132 android:theme="@android:style/Theme.Holo.Wallpaper.NoTitleBar" > -132-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:131:13-75 +132-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:131:13-75 133 134 D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:134:9-139:20 +134-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:134:9-139:20 135 android:name="net.micode.notes.ui.NotesPreferenceActivity" -135-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:135:13-71 +135-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:135:13-71 136 android:label="@string/preferences_title" -136-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:136:13-54 +136-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:136:13-54 137 android:launchMode="singleTop" -137-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:137:13-43 +137-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:137:13-43 138 android:theme="@android:style/Theme.Holo.Light" > -138-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:138:13-60 +138-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:138:13-60 139 140 141 D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:141:9-144:19 +141-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:141:9-144:19 142 android:name="net.micode.notes.gtask.remote.GTaskSyncService" -142-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:142:13-74 +142-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:142:13-74 143 android:exported="false" > -143-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:143:13-37 +143-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:143:13-37 144 145 146 D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:146:9-148:52 +146-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:146:9-148:52 147 android:name="android.app.default_searchable" -147-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:147:13-58 +147-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:147:13-58 148 android:value=".ui.NoteEditActivity" /> -148-->D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:148:13-49 -149 -150 -151 +148-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:148:13-49 +149 +150 D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:150:9-153:20 +151 android:name="net.micode.notes.ui.TrashFolderActivity" +151-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:151:13-67 +152 android:exported="false" > +152-->D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:152:13-37 +153 +154 +155 +156 diff --git a/src/note_but_github/app/build/intermediates/merged_manifest/debug/AndroidManifest.xml b/src/note_but_github/app/build/intermediates/merged_manifest/debug/AndroidManifest.xml index f17b551..576cf5f 100644 --- a/src/note_but_github/app/build/intermediates/merged_manifest/debug/AndroidManifest.xml +++ b/src/note_but_github/app/build/intermediates/merged_manifest/debug/AndroidManifest.xml @@ -146,6 +146,11 @@ + + + \ No newline at end of file diff --git a/src/note_but_github/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml b/src/note_but_github/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml index f17b551..576cf5f 100644 --- a/src/note_but_github/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml +++ b/src/note_but_github/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml @@ -146,6 +146,11 @@ + + + \ No newline at end of file diff --git a/src/note_but_github/app/build/intermediates/merged_res/debug/layout_note_edit.xml.flat b/src/note_but_github/app/build/intermediates/merged_res/debug/layout_note_edit.xml.flat index 951dd2f..7c34e58 100644 Binary files a/src/note_but_github/app/build/intermediates/merged_res/debug/layout_note_edit.xml.flat and b/src/note_but_github/app/build/intermediates/merged_res/debug/layout_note_edit.xml.flat differ diff --git a/src/note_but_github/app/build/intermediates/merged_res/debug/layout_note_list.xml.flat b/src/note_but_github/app/build/intermediates/merged_res/debug/layout_note_list.xml.flat index b092461..c90273b 100644 Binary files a/src/note_but_github/app/build/intermediates/merged_res/debug/layout_note_list.xml.flat and b/src/note_but_github/app/build/intermediates/merged_res/debug/layout_note_list.xml.flat differ diff --git a/src/note_but_github/app/build/intermediates/merged_res/debug/menu_note_list.xml.flat b/src/note_but_github/app/build/intermediates/merged_res/debug/menu_note_list.xml.flat index c138bc9..7338730 100644 Binary files a/src/note_but_github/app/build/intermediates/merged_res/debug/menu_note_list.xml.flat and b/src/note_but_github/app/build/intermediates/merged_res/debug/menu_note_list.xml.flat differ diff --git a/src/note_but_github/app/build/intermediates/merged_res/debug/raw-zh-rCN_introduction.flat b/src/note_but_github/app/build/intermediates/merged_res/debug/raw-zh-rCN_introduction.flat index 17cb018..e25eb7b 100644 Binary files a/src/note_but_github/app/build/intermediates/merged_res/debug/raw-zh-rCN_introduction.flat and b/src/note_but_github/app/build/intermediates/merged_res/debug/raw-zh-rCN_introduction.flat differ diff --git a/src/note_but_github/app/build/intermediates/merged_res/debug/values_values.arsc.flat b/src/note_but_github/app/build/intermediates/merged_res/debug/values_values.arsc.flat index ea0ebfc..1dc58ee 100644 Binary files a/src/note_but_github/app/build/intermediates/merged_res/debug/values_values.arsc.flat and b/src/note_but_github/app/build/intermediates/merged_res/debug/values_values.arsc.flat differ diff --git a/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/debug.json b/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/debug.json index 29b125a..3785d23 100644 --- a/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/debug.json +++ b/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/debug.json @@ -1,17 +1,17 @@ { "logs": [ { - "outputFile": "net.micode.notes.app-merged_res-5:/values-zh-rCN_values-zh-rCN.arsc.flat", + "outputFile": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\values-zh-rTW_values-zh-rTW.arsc.flat", "map": [ { - "source": "D:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values-zh-rCN\\arrays.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values-zh-rTW\\arrays.xml", "from": { "startLines": "18", "startColumns": "4", - "startOffsets": "712", + "startOffsets": "730", "endLines": "21", "endColumns": "19", - "endOffsets": "817" + "endOffsets": "838" }, "to": { "startLines": "2", @@ -23,92 +23,136 @@ } }, { - "source": "D:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values-zh-rCN\\strings.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\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": "6532,3495,3429,3356,3306,827,867,915,6083,6128,6478,6428,1199,3861,3929,3802,3737,3674,4592,4532,4469,4061,2877,1369,1422,4115,3568,6185,3247,3034,1798,2079,2325,1851,2817,2764,2713,2518,2470,2376,2424,2564,2611,2122,3188,2661,3077,2036,2278,2222,2167,2979,1992,2937,1901,1942,3129,1318,1623,1719,1576,1672,1529,1484,1148,1095,4967,4908,5108,6009,5419,5350,5483,5561,5744,5671,5042,5295,5165,5230,4859,5848,5931,6390,6283,6235,6328,1261,4006,4410,4705,4647,4772,4362,4317,4269,4218,963,1029", - "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": "6704,3563,3490,3424,3351,862,910,958,6123,6180,6527,6473,1256,3924,4001,3856,3797,3732,4642,4587,4527,4110,2932,1417,1479,4195,3644,6230,3301,3072,1846,2117,2371,1896,2872,2812,2759,2559,2513,2419,2465,2606,2656,2162,3242,2708,3124,2074,2320,2273,2217,3029,2031,2974,1937,1987,3183,1364,1667,1763,1618,1714,1571,1524,1194,1143,5037,4962,5160,6078,5478,5414,5556,5666,5843,5739,5103,5345,5225,5290,4903,5926,6004,6423,6323,6278,6385,1313,4056,4464,4767,4700,4829,4405,4357,4312,4264,1024,1090" + "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" } } ] }, { - "outputFile": "net.micode.notes.app-merged_res-5:/values_values.arsc.flat", + "outputFile": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\values_values.arsc.flat", "map": [ { - "source": "D:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values\\strings.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\dimens.xml", "from": { - "startLines": "128,72,75,74,73,19,20,21,118,119,127,126,26,81,82,80,79,78,94,93,92,84,39,38,64,29,30,85,41,76,120,71,67,42,48,53,43,63,62,61,57,56,54,55,58,59,49,70,60,68,47,52,51,50,66,46,65,44,45,69,28,34,36,33,35,32,31,25,24,101,100,104,116,109,108,110,111,113,112,102,103,107,105,106,99,114,115,125,123,122,124,27,83,91,96,95,97,90,89,88,87,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,4,4,4,4", - "startOffsets": "8008,3898,4159,4063,3994,827,870,922,7506,7555,7950,7899,1282,4613,4707,4542,4458,4375,5574,5491,5389,4883,2004,1953,3397,1486,1539,4944,2097,4242,7618,3827,3582,2156,2471,2772,2214,3326,3265,3208,2986,2934,2831,2884,3036,3086,2518,3761,3146,3631,2424,2717,2629,2571,3520,2374,3475,2271,2314,3694,1431,1750,1858,1703,1805,1647,1599,1227,1174,6030,5963,6271,7409,6635,6554,6709,6798,7040,6961,6114,6189,6495,6335,6415,5908,7184,7306,7858,7731,7674,7784,1366,4815,5303,5709,5640,5789,5244,5189,5127,5067,974,1084", - "endLines": "132,72,75,74,73,19,20,21,118,119,127,126,26,81,82,80,79,78,94,93,92,84,39,38,64,29,30,85,41,76,120,71,67,42,48,53,43,63,62,61,57,56,54,55,58,59,49,70,60,68,47,52,51,50,66,46,65,44,45,69,28,34,36,33,35,32,31,25,24,101,100,104,116,109,108,110,111,113,112,102,103,107,105,106,99,114,115,125,123,122,124,27,83,91,96,95,97,90,89,88,87,22,23", - "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": "8412,3989,4237,4154,4058,865,917,969,7550,7613,8003,7945,1361,4702,4810,4608,4537,4453,5635,5569,5486,4939,2061,1999,3470,1534,1594,5044,2151,4339,7668,3893,3626,2209,2513,2826,2266,3392,3321,3260,3031,2981,2879,2929,3081,3141,2566,3822,3203,3689,2466,2767,2712,2624,3577,2419,3515,2309,2369,3756,1481,1800,1906,1745,1853,1698,1642,1277,1222,6109,6025,6330,7500,6704,6630,6793,6956,7179,7035,6184,6266,6549,6410,6490,5958,7301,7404,7894,7779,7726,7853,1426,4878,5384,5784,5704,5878,5298,5239,5184,5122,1079,1169" + "startLines": "-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1", + "startOffsets": "-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" + "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:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values\\dimens.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\colors.xml", "from": { - "startLines": "19,20,21,22,18", - "startColumns": "4,4,4,4,4", - "startOffsets": "764,816,869,922,712", - "endColumns": "51,52,52,51,51", - "endOffsets": "811,864,917,969,759" + "startLines": "-1", + "startColumns": "-1", + "startOffsets": "-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" + "startLines": "12", + "startColumns": "4", + "startOffsets": "420", + "endColumns": "56", + "endOffsets": "472" } }, { - "source": "D:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values\\styles.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\styles.xml", "from": { - "startLines": "50,55,64,60,22,26,30,35,40,18,45", - "startColumns": "4,4,4,4,4,4,4,4,4,4,4", - "startOffsets": "2062,2267,2640,2479,895,1078,1263,1449,1653,712,1860", - "endLines": "53,58,67,62,25,29,33,38,43,21,48", - "endColumns": "12,12,12,12,12,12,12,12,12,12,12", - "endOffsets": "2261,2473,2843,2634,1073,1258,1443,1647,1854,890,2056" + "startLines": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" }, "to": { - "startLines": "125,129,133,137,140,144,148,152,156,160,164", + "startLines": "132,136,140,144,147,151,155,159,163,167,171", "startColumns": "4,4,4,4,4,4,4,4,4,4,4", - "startOffsets": "8124,8328,8539,8746,8906,9089,9274,9459,9662,9868,10051", - "endLines": "128,132,136,139,143,147,151,155,159,163,167", + "startOffsets": "8539,8743,8954,9164,9324,9507,9692,9877,10080,10286,10469", + "endLines": "135,139,143,146,150,154,158,162,166,170,174", "endColumns": "12,12,12,12,12,12,12,12,12,12,12", - "endOffsets": "8323,8534,8741,8901,9084,9269,9454,9657,9863,10046,10247" + "endOffsets": "8738,8949,9159,9319,9502,9687,9872,10075,10281,10464,10665" } }, { - "source": "D:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values\\colors.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\arrays.xml", "from": { - "startLines": "18", - "startColumns": "4", - "startOffsets": "712", - "endColumns": "56", - "endOffsets": "764" + "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:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\strings.xml", + "from": { + "startLines": "135,-1,-1,-1,23,22,-1,-1,-1,-1,-1,-1,-1,-1,-1,21,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,20,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "4,-1,-1,-1,4,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "8558,-1,-1,-1,1104,1031,-1,-1,-1,-1,-1,-1,-1,-1,-1,954,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,899,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endLines": "139,-1,-1,-1,23,22,-1,-1,-1,-1,-1,-1,-1,-1,-1,21,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,20,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endColumns": "14,-1,-1,-1,77,71,-1,-1,-1,-1,-1,-1,-1,-1,-1,75,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,53,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endOffsets": "8966,-1,-1,-1,1177,1098,-1,-1,-1,-1,-1,-1,-1,-1,-1,1025,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,948,-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,125,126,127,128,129,130,131", + "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,4,4,4,4,4,4,4", + "startOffsets": "739,1092,1188,1271,1367,1445,1517,1586,1629,1681,1733,1782,1845,1903,1954,2038,2114,2208,2316,2387,2471,2554,2620,2703,2805,2866,2928,2979,3057,3110,3170,3275,3334,3436,3491,3562,3611,3669,3716,3775,3832,3903,3964,4021,4071,4123,4176,4226,4276,4336,4389,4455,4517,4580,4627,4682,4770,4828,4890,4940,4985,5028,5088,5155,5207,5262,5317,5370,5417,5470,5526,5574,5629,5682,5766,5833,5897,5993,6067,6148,6237,6400,6544,6623,6698,6780,6839,6919,6999,7054,7176,7279,7323,7362,7416,7457,7510,7567,7641,7706,7774,7860,7940,8009,8103,8162,8217,8279,8339,8449", + "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,125,126,127,128,129,130,131", + "endColumns": "14,95,82,95,77,71,68,42,51,51,48,62,57,50,83,75,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,51,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,43,38,53,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89", + "endOffsets": "1087,1183,1266,1362,1440,1512,1581,1624,1676,1728,1777,1840,1898,1949,2033,2109,2203,2311,2382,2466,2549,2615,2698,2800,2861,2923,2974,3052,3105,3165,3270,3329,3431,3486,3557,3606,3664,3711,3770,3827,3898,3959,4016,4066,4118,4171,4221,4271,4331,4384,4450,4512,4575,4622,4677,4765,4823,4885,4935,4980,5023,5083,5150,5202,5257,5312,5365,5412,5465,5521,5569,5624,5677,5761,5828,5892,5988,6062,6143,6232,6395,6539,6618,6693,6775,6834,6914,6994,7049,7171,7274,7318,7357,7411,7452,7505,7562,7636,7701,7769,7855,7935,8004,8098,8157,8212,8274,8334,8444,8534" + } + } + ] + }, + { + "outputFile": "net.micode.notes.app-merged_res-5:/values_values.arsc.flat", + "map": [ + { + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\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:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\colors.xml", + "from": { + "startLines": "-1", + "startColumns": "-1", + "startOffsets": "-1" }, "to": { "startLines": "12", @@ -119,14 +163,27 @@ } }, { - "source": "D:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values\\arrays.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\styles.xml", "from": { - "startLines": "19,26", - "startColumns": "4,4", - "startOffsets": "739,1047", - "endLines": "24,29", - "endColumns": "19,19", - "endOffsets": "1041,1162" + "startLines": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "132,136,140,144,147,151,155,159,163,167,171", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "8536,8740,8951,9161,9321,9504,9689,9874,10077,10283,10466", + "endLines": "135,139,143,146,150,154,158,162,166,170,174", + "endColumns": "12,12,12,12,12,12,12,12,12,12,12", + "endOffsets": "8735,8946,9156,9316,9499,9684,9869,10072,10278,10461,10662" + } + }, + { + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\arrays.xml", + "from": { + "startLines": "-1,-1", + "startColumns": "-1,-1", + "startOffsets": "-1,-1" }, "to": { "startLines": "2,8", @@ -136,21 +193,40 @@ "endColumns": "19,19", "endOffsets": "295,415" } + }, + { + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\strings.xml", + "from": { + "startLines": "135,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,19,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-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": "4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-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": "8555,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,846,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endLines": "139,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,19,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endColumns": "14,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endOffsets": "8963,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,890,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-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,125,126,127,128,129,130,131", + "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,4,4,4,4,4,4,4", + "startOffsets": "739,1092,1188,1271,1367,1445,1517,1586,1629,1681,1733,1782,1845,1903,1954,2038,2114,2208,2316,2387,2471,2554,2620,2703,2805,2866,2928,2979,3057,3110,3170,3275,3334,3436,3491,3562,3611,3669,3716,3775,3832,3903,3964,4021,4071,4123,4176,4226,4276,4336,4389,4455,4517,4580,4627,4682,4770,4828,4890,4940,4985,5028,5088,5155,5204,5259,5314,5367,5414,5467,5523,5571,5626,5679,5763,5830,5894,5990,6064,6145,6234,6397,6541,6620,6695,6777,6836,6916,6996,7051,7173,7276,7320,7359,7413,7454,7507,7564,7638,7703,7771,7857,7937,8006,8100,8159,8214,8276,8336,8446", + "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,125,126,127,128,129,130,131", + "endColumns": "14,95,82,95,77,71,68,42,51,51,48,62,57,50,83,75,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,48,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,43,38,53,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89", + "endOffsets": "1087,1183,1266,1362,1440,1512,1581,1624,1676,1728,1777,1840,1898,1949,2033,2109,2203,2311,2382,2466,2549,2615,2698,2800,2861,2923,2974,3052,3105,3165,3270,3329,3431,3486,3557,3606,3664,3711,3770,3827,3898,3959,4016,4066,4118,4171,4221,4271,4331,4384,4450,4512,4575,4622,4677,4765,4823,4885,4935,4980,5023,5083,5150,5199,5254,5309,5362,5409,5462,5518,5566,5621,5674,5758,5825,5889,5985,6059,6140,6229,6392,6536,6615,6690,6772,6831,6911,6991,7046,7168,7271,7315,7354,7408,7449,7502,7559,7633,7698,7766,7852,7932,8001,8095,8154,8209,8271,8331,8441,8531" + } } ] }, { - "outputFile": "net.micode.notes.app-merged_res-5:/values-zh-rTW_values-zh-rTW.arsc.flat", + "outputFile": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\values-zh-rCN_values-zh-rCN.arsc.flat", "map": [ { - "source": "D:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values-zh-rTW\\arrays.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values-zh-rCN\\arrays.xml", "from": { "startLines": "18", "startColumns": "4", - "startOffsets": "712", + "startOffsets": "730", "endLines": "21", "endColumns": "19", - "endOffsets": "817" + "endOffsets": "838" }, "to": { "startLines": "2", @@ -162,22 +238,22 @@ } }, { - "source": "D:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values-zh-rTW\\strings.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\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": "6507,3575,3509,3436,3386,827,867,915,6057,6102,6453,6403,1199,3835,3903,3776,3710,3647,4565,4505,4442,4035,2957,1369,1422,4089,1768,6159,3327,3114,1878,2159,2405,1931,2897,2844,2793,2598,2550,2456,2504,2644,2691,2202,3268,2741,3157,2116,2358,2302,2247,3059,2072,3017,1981,2022,3209,1318,1623,1719,1576,1672,1529,1484,1148,1095,4940,4881,5081,5982,5392,5323,5456,5534,5717,5644,5015,5268,5138,5203,4832,5821,5904,6365,6258,6210,6303,1261,3980,4383,4678,4620,4745,4335,4290,4242,4191,963,1029", - "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": "6679,3642,3570,3504,3431,862,910,958,6097,6154,6502,6448,1256,3898,3975,3830,3771,3705,4615,4560,4500,4084,3012,1417,1479,4168,1843,6204,3381,3152,1926,2197,2451,1976,2952,2892,2839,2639,2593,2499,2545,2686,2736,2242,3322,2788,3204,2154,2400,2353,2297,3109,2111,3054,2017,2067,3263,1364,1667,1763,1618,1714,1571,1524,1194,1143,5010,4935,5133,6051,5451,5387,5529,5639,5816,5712,5076,5318,5198,5263,4876,5899,5977,6398,6298,6253,6360,1313,4030,4437,4740,4673,4802,4378,4330,4285,4237,1024,1090" + "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" } } ] diff --git a/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rCN.json b/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rCN.json index 222603c..2a1cb68 100644 --- a/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rCN.json +++ b/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rCN.json @@ -4,14 +4,14 @@ "outputFile": "net.micode.notes.app-mergeDebugResources-3:/values-zh-rCN/values-zh-rCN.xml", "map": [ { - "source": "D:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values-zh-rCN\\arrays.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values-zh-rCN\\arrays.xml", "from": { "startLines": "18", "startColumns": "4", - "startOffsets": "712", + "startOffsets": "730", "endLines": "21", "endColumns": "19", - "endOffsets": "817" + "endOffsets": "838" }, "to": { "startLines": "2", @@ -23,14 +23,14 @@ } }, { - "source": "D:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values-zh-rCN\\strings.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values-zh-rCN\\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", "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": "6532,3495,3429,3356,3306,827,867,915,6083,6128,6478,6428,1199,3861,3929,3802,3737,3674,4592,4532,4469,4061,2877,1369,1422,4115,3568,6185,3247,3034,1798,2079,2325,1851,2817,2764,2713,2518,2470,2376,2424,2564,2611,2122,3188,2661,3077,2036,2278,2222,2167,2979,1992,2937,1901,1942,3129,1318,1623,1719,1576,1672,1529,1484,1148,1095,4967,4908,5108,6009,5419,5350,5483,5561,5744,5671,5042,5295,5165,5230,4859,5848,5931,6390,6283,6235,6328,1261,4006,4410,4705,4647,4772,4362,4317,4269,4218,963,1029", + "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": "6704,3563,3490,3424,3351,862,910,958,6123,6180,6527,6473,1256,3924,4001,3856,3797,3732,4642,4587,4527,4110,2932,1417,1479,4195,3644,6230,3301,3072,1846,2117,2371,1896,2872,2812,2759,2559,2513,2419,2465,2606,2656,2162,3242,2708,3124,2074,2320,2273,2217,3029,2031,2974,1937,1987,3183,1364,1667,1763,1618,1714,1571,1524,1194,1143,5037,4962,5160,6078,5478,5414,5556,5666,5843,5739,5103,5345,5225,5290,4903,5926,6004,6423,6323,6278,6385,1313,4056,4464,4767,4700,4829,4405,4357,4312,4264,1024,1090" + "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", diff --git a/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rTW.json b/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rTW.json index 59f3c03..33b38b7 100644 --- a/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rTW.json +++ b/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rTW.json @@ -4,14 +4,14 @@ "outputFile": "net.micode.notes.app-mergeDebugResources-3:/values-zh-rTW/values-zh-rTW.xml", "map": [ { - "source": "D:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values-zh-rTW\\arrays.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values-zh-rTW\\arrays.xml", "from": { "startLines": "18", "startColumns": "4", - "startOffsets": "712", + "startOffsets": "730", "endLines": "21", "endColumns": "19", - "endOffsets": "817" + "endOffsets": "838" }, "to": { "startLines": "2", @@ -23,14 +23,14 @@ } }, { - "source": "D:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values-zh-rTW\\strings.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values-zh-rTW\\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", "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": "6507,3575,3509,3436,3386,827,867,915,6057,6102,6453,6403,1199,3835,3903,3776,3710,3647,4565,4505,4442,4035,2957,1369,1422,4089,1768,6159,3327,3114,1878,2159,2405,1931,2897,2844,2793,2598,2550,2456,2504,2644,2691,2202,3268,2741,3157,2116,2358,2302,2247,3059,2072,3017,1981,2022,3209,1318,1623,1719,1576,1672,1529,1484,1148,1095,4940,4881,5081,5982,5392,5323,5456,5534,5717,5644,5015,5268,5138,5203,4832,5821,5904,6365,6258,6210,6303,1261,3980,4383,4678,4620,4745,4335,4290,4242,4191,963,1029", + "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": "6679,3642,3570,3504,3431,862,910,958,6097,6154,6502,6448,1256,3898,3975,3830,3771,3705,4615,4560,4500,4084,3012,1417,1479,4168,1843,6204,3381,3152,1926,2197,2451,1976,2952,2892,2839,2639,2593,2499,2545,2686,2736,2242,3322,2788,3204,2154,2400,2353,2297,3109,2111,3054,2017,2067,3263,1364,1667,1763,1618,1714,1571,1524,1194,1143,5010,4935,5133,6051,5451,5387,5529,5639,5816,5712,5076,5318,5198,5263,4876,5899,5977,6398,6298,6253,6360,1313,4030,4437,4740,4673,4802,4378,4330,4285,4237,1024,1090" + "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", diff --git a/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values.json b/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values.json index bedb57f..cf155a9 100644 --- a/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values.json +++ b/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values.json @@ -1,71 +1,115 @@ { "logs": [ { - "outputFile": "net.micode.notes.app-mergeDebugResources-3:/values/values.xml", + "outputFile": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-mergeDebugResources-3:\\values\\values.xml", "map": [ { - "source": "D:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values\\strings.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\dimens.xml", "from": { - "startLines": "128,72,75,74,73,19,20,21,118,119,127,126,26,81,82,80,79,78,94,93,92,84,39,38,64,29,30,85,41,76,120,71,67,42,48,53,43,63,62,61,57,56,54,55,58,59,49,70,60,68,47,52,51,50,66,46,65,44,45,69,28,34,36,33,35,32,31,25,24,101,100,104,116,109,108,110,111,113,112,102,103,107,105,106,99,114,115,125,123,122,124,27,83,91,96,95,97,90,89,88,87,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,4,4,4,4", - "startOffsets": "8008,3898,4159,4063,3994,827,870,922,7506,7555,7950,7899,1282,4613,4707,4542,4458,4375,5574,5491,5389,4883,2004,1953,3397,1486,1539,4944,2097,4242,7618,3827,3582,2156,2471,2772,2214,3326,3265,3208,2986,2934,2831,2884,3036,3086,2518,3761,3146,3631,2424,2717,2629,2571,3520,2374,3475,2271,2314,3694,1431,1750,1858,1703,1805,1647,1599,1227,1174,6030,5963,6271,7409,6635,6554,6709,6798,7040,6961,6114,6189,6495,6335,6415,5908,7184,7306,7858,7731,7674,7784,1366,4815,5303,5709,5640,5789,5244,5189,5127,5067,974,1084", - "endLines": "132,72,75,74,73,19,20,21,118,119,127,126,26,81,82,80,79,78,94,93,92,84,39,38,64,29,30,85,41,76,120,71,67,42,48,53,43,63,62,61,57,56,54,55,58,59,49,70,60,68,47,52,51,50,66,46,65,44,45,69,28,34,36,33,35,32,31,25,24,101,100,104,116,109,108,110,111,113,112,102,103,107,105,106,99,114,115,125,123,122,124,27,83,91,96,95,97,90,89,88,87,22,23", - "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": "8412,3989,4237,4154,4058,865,917,969,7550,7613,8003,7945,1361,4702,4810,4608,4537,4453,5635,5569,5486,4939,2061,1999,3470,1534,1594,5044,2151,4339,7668,3893,3626,2209,2513,2826,2266,3392,3321,3260,3031,2981,2879,2929,3081,3141,2566,3822,3203,3689,2466,2767,2712,2624,3577,2419,3515,2309,2369,3756,1481,1800,1906,1745,1853,1698,1642,1277,1222,6109,6025,6330,7500,6704,6630,6793,6956,7179,7035,6184,6266,6549,6410,6490,5958,7301,7404,7894,7779,7726,7853,1426,4878,5384,5784,5704,5878,5298,5239,5184,5122,1079,1169" + "startLines": "-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1", + "startOffsets": "-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" + "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:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values\\dimens.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\colors.xml", "from": { - "startLines": "19,20,21,22,18", - "startColumns": "4,4,4,4,4", - "startOffsets": "764,816,869,922,712", - "endColumns": "51,52,52,51,51", - "endOffsets": "811,864,917,969,759" + "startLines": "-1", + "startColumns": "-1", + "startOffsets": "-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" + "startLines": "12", + "startColumns": "4", + "startOffsets": "420", + "endColumns": "56", + "endOffsets": "472" } }, { - "source": "D:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values\\styles.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\styles.xml", "from": { - "startLines": "50,55,64,60,22,26,30,35,40,18,45", - "startColumns": "4,4,4,4,4,4,4,4,4,4,4", - "startOffsets": "2062,2267,2640,2479,895,1078,1263,1449,1653,712,1860", - "endLines": "53,58,67,62,25,29,33,38,43,21,48", - "endColumns": "12,12,12,12,12,12,12,12,12,12,12", - "endOffsets": "2261,2473,2843,2634,1073,1258,1443,1647,1854,890,2056" + "startLines": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" }, "to": { - "startLines": "125,129,133,137,140,144,148,152,156,160,164", + "startLines": "132,136,140,144,147,151,155,159,163,167,171", "startColumns": "4,4,4,4,4,4,4,4,4,4,4", - "startOffsets": "8124,8328,8539,8746,8906,9089,9274,9459,9662,9868,10051", - "endLines": "128,132,136,139,143,147,151,155,159,163,167", + "startOffsets": "8539,8743,8954,9164,9324,9507,9692,9877,10080,10286,10469", + "endLines": "135,139,143,146,150,154,158,162,166,170,174", "endColumns": "12,12,12,12,12,12,12,12,12,12,12", - "endOffsets": "8323,8534,8741,8901,9084,9269,9454,9657,9863,10046,10247" + "endOffsets": "8738,8949,9159,9319,9502,9687,9872,10075,10281,10464,10665" } }, { - "source": "D:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values\\colors.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\arrays.xml", "from": { - "startLines": "18", - "startColumns": "4", - "startOffsets": "712", - "endColumns": "56", - "endOffsets": "764" + "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:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\strings.xml", + "from": { + "startLines": "135,-1,-1,-1,23,22,-1,-1,-1,-1,-1,-1,-1,-1,-1,21,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,20,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "4,-1,-1,-1,4,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "8558,-1,-1,-1,1104,1031,-1,-1,-1,-1,-1,-1,-1,-1,-1,954,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,899,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endLines": "139,-1,-1,-1,23,22,-1,-1,-1,-1,-1,-1,-1,-1,-1,21,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,20,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endColumns": "14,-1,-1,-1,77,71,-1,-1,-1,-1,-1,-1,-1,-1,-1,75,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,53,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endOffsets": "8966,-1,-1,-1,1177,1098,-1,-1,-1,-1,-1,-1,-1,-1,-1,1025,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,948,-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,125,126,127,128,129,130,131", + "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,4,4,4,4,4,4,4", + "startOffsets": "739,1092,1188,1271,1367,1445,1517,1586,1629,1681,1733,1782,1845,1903,1954,2038,2114,2208,2316,2387,2471,2554,2620,2703,2805,2866,2928,2979,3057,3110,3170,3275,3334,3436,3491,3562,3611,3669,3716,3775,3832,3903,3964,4021,4071,4123,4176,4226,4276,4336,4389,4455,4517,4580,4627,4682,4770,4828,4890,4940,4985,5028,5088,5155,5207,5262,5317,5370,5417,5470,5526,5574,5629,5682,5766,5833,5897,5993,6067,6148,6237,6400,6544,6623,6698,6780,6839,6919,6999,7054,7176,7279,7323,7362,7416,7457,7510,7567,7641,7706,7774,7860,7940,8009,8103,8162,8217,8279,8339,8449", + "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,125,126,127,128,129,130,131", + "endColumns": "14,95,82,95,77,71,68,42,51,51,48,62,57,50,83,75,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,51,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,43,38,53,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89", + "endOffsets": "1087,1183,1266,1362,1440,1512,1581,1624,1676,1728,1777,1840,1898,1949,2033,2109,2203,2311,2382,2466,2549,2615,2698,2800,2861,2923,2974,3052,3105,3165,3270,3329,3431,3486,3557,3606,3664,3711,3770,3827,3898,3959,4016,4066,4118,4171,4221,4271,4331,4384,4450,4512,4575,4622,4677,4765,4823,4885,4935,4980,5023,5083,5150,5202,5257,5312,5365,5412,5465,5521,5569,5624,5677,5761,5828,5892,5988,6062,6143,6232,6395,6539,6618,6693,6775,6834,6914,6994,7049,7171,7274,7318,7357,7411,7452,7505,7562,7636,7701,7769,7855,7935,8004,8098,8157,8212,8274,8334,8444,8534" + } + } + ] + }, + { + "outputFile": "net.micode.notes.app-mergeDebugResources-3:/values/values.xml", + "map": [ + { + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\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:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\colors.xml", + "from": { + "startLines": "-1", + "startColumns": "-1", + "startOffsets": "-1" }, "to": { "startLines": "12", @@ -76,14 +120,27 @@ } }, { - "source": "D:\\xueye\\xiaominote\\note_but_github\\app\\src\\main\\res\\values\\arrays.xml", + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\styles.xml", "from": { - "startLines": "19,26", - "startColumns": "4,4", - "startOffsets": "739,1047", - "endLines": "24,29", - "endColumns": "19,19", - "endOffsets": "1041,1162" + "startLines": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "132,136,140,144,147,151,155,159,163,167,171", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "8536,8740,8951,9161,9321,9504,9689,9874,10077,10283,10466", + "endLines": "135,139,143,146,150,154,158,162,166,170,174", + "endColumns": "12,12,12,12,12,12,12,12,12,12,12", + "endOffsets": "8735,8946,9156,9316,9499,9684,9869,10072,10278,10461,10662" + } + }, + { + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\arrays.xml", + "from": { + "startLines": "-1,-1", + "startColumns": "-1,-1", + "startOffsets": "-1,-1" }, "to": { "startLines": "2,8", @@ -93,6 +150,25 @@ "endColumns": "19,19", "endOffsets": "295,415" } + }, + { + "source": "D:\\xueye\\softproject\\gitProject\\src\\note_but_github\\app\\src\\main\\res\\values\\strings.xml", + "from": { + "startLines": "135,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,19,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-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": "4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-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": "8555,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,846,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endLines": "139,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,19,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endColumns": "14,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endOffsets": "8963,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,890,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-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,125,126,127,128,129,130,131", + "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,4,4,4,4,4,4,4", + "startOffsets": "739,1092,1188,1271,1367,1445,1517,1586,1629,1681,1733,1782,1845,1903,1954,2038,2114,2208,2316,2387,2471,2554,2620,2703,2805,2866,2928,2979,3057,3110,3170,3275,3334,3436,3491,3562,3611,3669,3716,3775,3832,3903,3964,4021,4071,4123,4176,4226,4276,4336,4389,4455,4517,4580,4627,4682,4770,4828,4890,4940,4985,5028,5088,5155,5204,5259,5314,5367,5414,5467,5523,5571,5626,5679,5763,5830,5894,5990,6064,6145,6234,6397,6541,6620,6695,6777,6836,6916,6996,7051,7173,7276,7320,7359,7413,7454,7507,7564,7638,7703,7771,7857,7937,8006,8100,8159,8214,8276,8336,8446", + "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,125,126,127,128,129,130,131", + "endColumns": "14,95,82,95,77,71,68,42,51,51,48,62,57,50,83,75,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,48,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,43,38,53,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89", + "endOffsets": "1087,1183,1266,1362,1440,1512,1581,1624,1676,1728,1777,1840,1898,1949,2033,2109,2203,2311,2382,2466,2549,2615,2698,2800,2861,2923,2974,3052,3105,3165,3270,3329,3431,3486,3557,3606,3664,3711,3770,3827,3898,3959,4016,4066,4118,4171,4221,4271,4331,4384,4450,4512,4575,4622,4677,4765,4823,4885,4935,4980,5023,5083,5150,5199,5254,5309,5362,5409,5462,5518,5566,5621,5674,5758,5825,5889,5985,6059,6140,6229,6392,6536,6615,6690,6772,6831,6911,6991,7046,7168,7271,7315,7354,7408,7449,7502,7559,7633,7698,7766,7852,7932,8001,8095,8154,8209,8271,8331,8441,8531" + } } ] } diff --git a/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/single/debug.json b/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/single/debug.json index 2a106a9..3eb51b2 100644 --- a/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/single/debug.json +++ b/src/note_but_github/app/build/intermediates/merged_res_blame_folder/debug/out/single/debug.json @@ -1,382 +1,670 @@ [ { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_red_middle.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_red_middle.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_call_record.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\call_record.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/layout_note_list_dropdown_menu.xml.flat", - "source": "net.micode.notes.app-main-7:/layout/note_list_dropdown_menu.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\menu_note_list_options.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\menu\\note_list_options.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_title_bar_bg.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/title_bar_bg.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_white_up.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_white_up.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_folder.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_folder.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_yellow_up.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_yellow_up.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/layout_folder_list_item.xml.flat", - "source": "net.micode.notes.app-main-7:/layout/folder_list_item.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_new_note_normal.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\new_note_normal.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_red_single.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_red_single.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_green_single.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_green_single.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_selected.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/selected.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_edit_white.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\edit_white.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_title_yellow.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_title_yellow.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_menu_delete.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\menu_delete.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_notification.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/notification.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_title_white.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_title_white.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_red_down.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_red_down.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\menu_recyclebin_options.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\menu\\recyclebin_options.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_new_note_pressed.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/new_note_pressed.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_blue_middle.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_blue_middle.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_white.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_white.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_notification.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\notification.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/layout_note_item.xml.flat", - "source": "net.micode.notes.app-main-7:/layout/note_item.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_folder.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_folder.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/menu_sub_folder.xml.flat", - "source": "net.micode.notes.app-main-7:/menu/sub_folder.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\menu_note_list.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\menu\\note_list.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_footer_bg.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_footer_bg.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_white_middle.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_white_middle.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/layout_settings_header.xml.flat", - "source": "net.micode.notes.app-main-7:/layout/settings_header.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_icon_app.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\icon_app.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_note_edit_color_selector_panel.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/note_edit_color_selector_panel.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_yellow_single.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_yellow_single.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_title_alert.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/title_alert.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_blue_middle.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_blue_middle.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_4x_red.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_4x_red.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_widget_2x_blue.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\widget_2x_blue.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_clock.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/clock.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_bg_color_btn_mask.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\bg_color_btn_mask.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_4x_yellow.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_4x_yellow.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\menu_call_record_folder.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\menu\\call_record_folder.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/raw_introduction.flat", - "source": "net.micode.notes.app-main-7:/raw/introduction" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_new_note_pressed.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\new_note_pressed.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_font_large.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/font_large.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_4x_blue.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_4x_blue.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_blue_middle.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_blue_middle.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_4x_yellow.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_4x_yellow.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_2x_blue.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_2x_blue.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_add_account_text.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\add_account_text.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_white_up.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_white_up.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_footer_bg.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_footer_bg.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_red_up.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_red_up.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_deselect_all.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\deselect_all.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_4x_blue.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_4x_blue.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_selected.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\selected.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_4x_white.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_4x_white.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_select_all.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\select_all.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_2x_green.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_2x_green.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_red_up.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_red_up.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable_new_note.xml.flat", - "source": "net.micode.notes.app-main-7:/drawable/new_note.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_title_alert.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\title_alert.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/layout_widget_2x.xml.flat", - "source": "net.micode.notes.app-main-7:/layout/widget_2x.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_widget_2x.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\widget_2x.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_yellow_up.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_yellow_up.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_font_normal.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\font_normal.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/xml_widget_2x_info.xml.flat", - "source": "net.micode.notes.app-main-7:/xml/widget_2x_info.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_blue_up.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_blue_up.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/menu_call_record_folder.xml.flat", - "source": "net.micode.notes.app-main-7:/menu/call_record_folder.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\menu_note_edit.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\menu\\note_edit.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_2x_white.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_2x_white.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_4x_red.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_4x_red.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/xml_preferences.xml.flat", - "source": "net.micode.notes.app-main-7:/xml/preferences.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\raw-zh-rCN_introduction.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\raw-zh-rCN\\introduction" }, { - "merged": "net.micode.notes.app-merged_res-5:/layout_dialog_edit_text.xml.flat", - "source": "net.micode.notes.app-main-7:/layout/dialog_edit_text.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_widget_2x_red.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\widget_2x_red.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_title_white.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_title_white.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_blue_up.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_blue_up.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_title_blue.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_title_blue.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\color_secondary_text_dark.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\color\\secondary_text_dark.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_yellow_down.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_yellow_down.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\xml_widget_4x_info.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\xml\\widget_4x_info.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/raw-zh-rCN_introduction.flat", - "source": "net.micode.notes.app-main-7:/raw-zh-rCN/introduction" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_menu_delete.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\menu_delete.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_yellow_single.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_yellow_single.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_red_middle.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_red_middle.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_background.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_background.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_delete.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\delete.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/color_secondary_text_dark.xml.flat", - "source": "net.micode.notes.app-main-7:/color/secondary_text_dark.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_red_single.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_red_single.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/xml_widget_4x_info.xml.flat", - "source": "net.micode.notes.app-main-7:/xml/widget_4x_info.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_search_result.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\search_result.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_blue_up.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_blue_up.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_folder.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_folder.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_white_middle.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_white_middle.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_notification.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\notification.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_white_single.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_white_single.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_yellow_up.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_yellow_up.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_yellow.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_yellow.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_green_middle.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_green_middle.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_search_result.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/search_result.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_2x_yellow.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_2x_yellow.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/layout_note_edit.xml.flat", - "source": "net.micode.notes.app-main-7:/layout/note_edit.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_bg_btn_set_color.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\bg_btn_set_color.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_4x_green.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_4x_green.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_folder_list_item.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\folder_list_item.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/layout_widget_4x.xml.flat", - "source": "net.micode.notes.app-main-7:/layout/widget_4x.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_2x_green.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_2x_green.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_title_green.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_title_green.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_red_down.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_red_down.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_red.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_red.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_dialog_edit_text.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\dialog_edit_text.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/xml_searchable.xml.flat", - "source": "net.micode.notes.app-main-7:/xml/searchable.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_clock.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\clock.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_green_middle.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_green_middle.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_datetime_picker.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\datetime_picker.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_menu_delete.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/menu_delete.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_edit_green.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\edit_green.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/layout_note_list.xml.flat", - "source": "net.micode.notes.app-main-7:/layout/note_list.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_bg_color_btn_mask.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\bg_color_btn_mask.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_green_down.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_green_down.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_widget_4x_red.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\widget_4x_red.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_font_normal.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/font_normal.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_selected.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\selected.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_yellow_middle.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_yellow_middle.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_delete.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\delete.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_icon_app.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/icon_app.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\menu_sub_folder.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\menu\\sub_folder.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_dropdown_icon.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/dropdown_icon.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_font_size_selector_bg.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\font_size_selector_bg.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_bg_btn_set_color.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/bg_btn_set_color.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_dropdown_icon.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\dropdown_icon.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_new_note_normal.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/new_note_normal.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_title_bar_bg.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\title_bar_bg.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/menu_note_list_dropdown.xml.flat", - "source": "net.micode.notes.app-main-7:/menu/note_list_dropdown.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_note_edit_list_item.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\note_edit_list_item.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/menu_note_list.xml.flat", - "source": "net.micode.notes.app-main-7:/menu/note_list.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_red_down.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_red_down.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/layout_note_edit_list_item.xml.flat", - "source": "net.micode.notes.app-main-7:/layout/note_edit_list_item.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_2x_blue.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_2x_blue.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/layout_note_list_footer.xml.flat", - "source": "net.micode.notes.app-main-7:/layout/note_list_footer.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_widget_2x_green.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\widget_2x_green.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_menu_move.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/menu_move.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\menu_note_list_dropdown.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\menu\\note_list_dropdown.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_bg_color_btn_mask.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/bg_color_btn_mask.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_title_alert.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\title_alert.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_blue_down.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_blue_down.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_recycle_bin.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\recycle_bin.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/layout_add_account_text.xml.flat", - "source": "net.micode.notes.app-main-7:/layout/add_account_text.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_widget_2x_yellow.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\widget_2x_yellow.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_font_size_selector_bg.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/font_size_selector_bg.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_note_edit_color_selector_panel.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\note_edit_color_selector_panel.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/layout_datetime_picker.xml.flat", - "source": "net.micode.notes.app-main-7:/layout/datetime_picker.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_edit_title_white.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\edit_title_white.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_font_super.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/font_super.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_title_bar_bg.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\title_bar_bg.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_title_red.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_title_red.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_note_item.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\note_item.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_blue.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_blue.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_2x_white.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_2x_white.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/menu_note_list_options.xml.flat", - "source": "net.micode.notes.app-main-7:/menu/note_list_options.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_note_edit_color_selector_panel.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\note_edit_color_selector_panel.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_blue_single.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_blue_single.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_title_yellow.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_title_yellow.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/menu_call_note_edit.xml.flat", - "source": "net.micode.notes.app-main-7:/menu/call_note_edit.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_green_up.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_green_up.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_green_single.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_green_single.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_blue_single.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_blue_single.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_2x_yellow.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_2x_yellow.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_green_down.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_green_down.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_2x_red.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_2x_red.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_title_green.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_title_green.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_delete.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/delete.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_green_down.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_green_down.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/color_primary_text_dark.xml.flat", - "source": "net.micode.notes.app-main-7:/color/primary_text_dark.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_title_blue.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_title_blue.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_green.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_green.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_note_list_footer.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\note_list_footer.xml" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_white_down.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_white_down.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_blue.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_blue.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/menu_note_edit.xml.flat", - "source": "net.micode.notes.app-main-7:/menu/note_edit.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_green_up.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_green_up.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_font_small.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/font_small.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_4x_white.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_4x_white.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/layout_account_dialog_title.xml.flat", - "source": "net.micode.notes.app-main-7:/layout/account_dialog_title.xml" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_menu_move.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\menu_move.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_call_record.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/call_record.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_edit_yellow.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\edit_yellow.9.png" }, { - "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_green_up.9.png.flat", - "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_green_up.9.png" + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\color_primary_text_dark.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\color\\primary_text_dark.xml" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_widget_2x_white.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\widget_2x_white.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_edit_title_green.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\edit_title_green.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\xml_searchable.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\xml\\searchable.xml" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_yellow_middle.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_yellow_middle.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_search_result.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\search_result.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_2x_red.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_2x_red.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_edit_red.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\edit_red.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_title_red.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_title_red.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_account_dialog_title.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\account_dialog_title.xml" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_red.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_red.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_recover.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\recover.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_footer_bg.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_footer_bg.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_menu_move.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\menu_move.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_note_list.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\note_list.xml" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_widget_4x_yellow.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\widget_4x_yellow.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_background.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_background.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_white.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_white.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_white_down.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_white_down.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_widget_4x_blue.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\widget_4x_blue.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_new_note_pressed.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\new_note_pressed.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_green_single.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_green_single.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_red_single.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_red_single.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_font_small.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\font_small.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_call_record.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\call_record.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_white_single.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_white_single.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_yellow_middle.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_yellow_middle.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_clock.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\clock.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_dropdown_icon.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\dropdown_icon.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_green_middle.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_green_middle.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_bg_btn_set_color.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\bg_btn_set_color.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_font_super.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\font_super.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/menu_recyclebin_options.xml.flat", + "source": "net.micode.notes.app-main-7:/menu/recyclebin_options.xml" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_icon_app.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\icon_app.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_4x_green.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_4x_green.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_font_small.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\font_small.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_new_note.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\new_note.xml" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_white_middle.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_white_middle.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_white_single.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_white_single.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_recycle_list.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\recycle_list.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_edit_blue.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\edit_blue.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_yellow.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_yellow.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_widget_4x.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\widget_4x.xml" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_font_super.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\font_super.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_yellow_down.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_yellow_down.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_green.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_green.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_red_middle.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_red_middle.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\xml_preferences.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\xml\\preferences.xml" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_edit_title_yellow.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\edit_title_yellow.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_note_list_dropdown_menu.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\note_list_dropdown_menu.xml" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_font_normal.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\font_normal.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_font_size_selector_bg.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\font_size_selector_bg.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\raw_introduction.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\raw\\introduction" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_widget_4x_green.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\widget_4x_green.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\menu_call_note_edit.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\menu\\call_note_edit.xml" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_edit_title_red.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\edit_title_red.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\xml_widget_2x_info.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\xml\\widget_2x_info.xml" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_settings_header.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\settings_header.xml" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_note_edit.xml.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\note_edit.xml" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_blue_down.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_blue_down.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_edit_title_blue.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\edit_title_blue.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_white_down.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_white_down.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_blue_down.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_blue_down.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_widget_4x_white.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\widget_4x_white.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_font_large.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\font_large.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_new_note_normal.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\new_note_normal.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_red_up.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_red_up.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_yellow_single.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_yellow_single.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_background.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_background.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_yellow_down.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_yellow_down.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_font_large.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\font_large.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_list_white_up.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\list_white_up.9.png" + }, + { + "merged": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_blue_single.9.png.flat", + "source": "C:\\Users\\夜凌鹰劫\\.gradle\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_blue_single.9.png" } ] \ No newline at end of file diff --git a/src/note_but_github/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml b/src/note_but_github/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml index f17b551..576cf5f 100644 --- a/src/note_but_github/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml +++ b/src/note_but_github/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml @@ -146,6 +146,11 @@ + + + \ No newline at end of file diff --git a/src/note_but_github/app/build/intermediates/processed_res/debug/out/resources-debug.ap_ b/src/note_but_github/app/build/intermediates/processed_res/debug/out/resources-debug.ap_ index 9a0c5df..1a028ee 100644 Binary files a/src/note_but_github/app/build/intermediates/processed_res/debug/out/resources-debug.ap_ and b/src/note_but_github/app/build/intermediates/processed_res/debug/out/resources-debug.ap_ differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/3b39a0f8c9a74077ddf9126288e67b5aee0b290a2f74293e2d6f45ae0690b824_9.jar b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/3b39a0f8c9a74077ddf9126288e67b5aee0b290a2f74293e2d6f45ae0690b824_9.jar deleted file mode 100644 index fa87605..0000000 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/3b39a0f8c9a74077ddf9126288e67b5aee0b290a2f74293e2d6f45ae0690b824_9.jar and /dev/null differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesDatabaseHelper.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesDatabaseHelper.dex index 046b7e1..c3856e8 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesDatabaseHelper.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesDatabaseHelper.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesProvider.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesProvider.dex index 33a1e8e..1356d73 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesProvider.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesProvider.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/MetaData.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/MetaData.dex index edca6c2..e296020 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/MetaData.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/MetaData.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/Node.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/Node.dex index 43fbb95..6750092 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/Node.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/Node.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlData.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlData.dex index c804edb..2f8fc90 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlData.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlData.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlNote.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlNote.dex index 7a975d2..7c79bc6 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlNote.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlNote.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/TaskList.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/TaskList.dex index 8fa92ab..09e3eac 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/TaskList.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/TaskList.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/ActionFailureException.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/ActionFailureException.dex index 7484169..f9dde7b 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/ActionFailureException.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/ActionFailureException.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/NetworkFailureException.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/NetworkFailureException.dex index aa009a0..df2e041 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/NetworkFailureException.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/NetworkFailureException.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskASyncTask.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskASyncTask.dex index f6c6327..a797880 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskASyncTask.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskASyncTask.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskManager.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskManager.dex index 3f534f4..1742a7a 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskManager.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskManager.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote.dex index d8d0af5..d9d7595 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils$TextExport.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils$TextExport.dex index 36627fa..9530dd6 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils$TextExport.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils$TextExport.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils.dex index 16a8e64..bae658c 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/DataUtils.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/DataUtils.dex index 7193315..bb6f044 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/DataUtils.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/DataUtils.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteBgResources.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteBgResources.dex index 86f7f9f..df0e527 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteBgResources.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteBgResources.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteItemBgResources.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteItemBgResources.dex index c25f01b..c9c5e67 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteItemBgResources.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteItemBgResources.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$TextAppearanceResources.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$TextAppearanceResources.dex index 6b7472f..eb0a524 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$TextAppearanceResources.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$TextAppearanceResources.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$WidgetBgResources.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$WidgetBgResources.dex index 03b69e1..165c86b 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$WidgetBgResources.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$WidgetBgResources.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser.dex index 602aad6..e4b8b14 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmAlertActivity.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmAlertActivity.dex index c376710..59df28c 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmAlertActivity.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmAlertActivity.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker.dex index bd744fe..f0ad7fa 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog.dex index 1fb0182..af6aac7 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DropdownMenu.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DropdownMenu.dex index 6c5293d..8d025fb 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DropdownMenu.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DropdownMenu.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter$FolderListItem.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter$FolderListItem.dex index f2219ba..fe76adb 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter$FolderListItem.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter$FolderListItem.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter.dex index c64b75d..21cae92 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$1.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$1.dex index 5ab2e69..deaeed1 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$1.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$1.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$2.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$2.dex index 81a3c0e..ea5260d 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$2.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$2.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$3.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$3.dex index 1347cdb..1dc4335 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$3.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$3.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex index 5c48404..4ea6076 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity.dex index de97635..5575ec8 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText$1.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText$1.dex index 0baeaaf..3b9e91e 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText$1.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText$1.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText.dex index 0e376bc..66180a3 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$1.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$1.dex index 1a58301..047e981 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$1.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$1.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$2.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$2.dex index 5075cad..c0d9f61 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$2.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$2.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$3.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$3.dex index 1d976ee..8da77c6 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$3.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$3.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$4.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$4.dex index dd5898a..bb94760 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$4.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$4.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$5.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$5.dex index 479cbac..48800b8 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$5.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$5.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$6.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$6.dex index 4e2ed40..38ceb40 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$6.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$6.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$7.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$7.dex index 18d0339..c9ceefa 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$7.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$7.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$8.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$8.dex index 682a057..fdab09c 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$8.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$8.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$9.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$9.dex index 00c49f2..902c2b6 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$9.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$9.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex index c94c6ce..ea56e04 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ListEditState.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ListEditState.dex index 600d8fb..ca32d6d 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ListEditState.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ListEditState.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex index 4c8920b..4c5708b 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex index 9dee3c8..21c3498 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback.dex index ea4f037..ce8b075 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex index 768eac9..6e956e0 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex index a0b33a7..9b1f407 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity.dex index 453765c..92d967c 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListAdapter.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListAdapter.dex index ab39c99..264937b 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListAdapter.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListAdapter.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListItem.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListItem.dex index f8c2de3..14c3a9e 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListItem.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListItem.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$1.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$1.dex index 3884261..a6e9ac5 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$1.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$1.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.dex index aae067f..0e99a72 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity.dex index 2c28295..b7cb1d9 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider.dex index 61db915..19049a1 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_2x.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_2x.dex index c8c3677..dee886b 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_2x.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_2x.dex differ diff --git a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_4x.dex b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_4x.dex index affae58..c2d3984 100644 Binary files a/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_4x.dex and b/src/note_but_github/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_4x.dex differ diff --git a/src/note_but_github/app/build/intermediates/runtime_symbol_list/debug/R.txt b/src/note_but_github/app/build/intermediates/runtime_symbol_list/debug/R.txt index 00d6e91..48cc5bf 100644 --- a/src/note_but_github/app/build/intermediates/runtime_symbol_list/debug/R.txt +++ b/src/note_but_github/app/build/intermediates/runtime_symbol_list/debug/R.txt @@ -13,134 +13,143 @@ int drawable bg_color_btn_mask 0x7f040001 int drawable call_record 0x7f040002 int drawable clock 0x7f040003 int drawable delete 0x7f040004 -int drawable dropdown_icon 0x7f040005 -int drawable edit_blue 0x7f040006 -int drawable edit_green 0x7f040007 -int drawable edit_red 0x7f040008 -int drawable edit_title_blue 0x7f040009 -int drawable edit_title_green 0x7f04000a -int drawable edit_title_red 0x7f04000b -int drawable edit_title_white 0x7f04000c -int drawable edit_title_yellow 0x7f04000d -int drawable edit_white 0x7f04000e -int drawable edit_yellow 0x7f04000f -int drawable font_large 0x7f040010 -int drawable font_normal 0x7f040011 -int drawable font_size_selector_bg 0x7f040012 -int drawable font_small 0x7f040013 -int drawable font_super 0x7f040014 -int drawable icon_app 0x7f040015 -int drawable list_background 0x7f040016 -int drawable list_blue_down 0x7f040017 -int drawable list_blue_middle 0x7f040018 -int drawable list_blue_single 0x7f040019 -int drawable list_blue_up 0x7f04001a -int drawable list_folder 0x7f04001b -int drawable list_footer_bg 0x7f04001c -int drawable list_green_down 0x7f04001d -int drawable list_green_middle 0x7f04001e -int drawable list_green_single 0x7f04001f -int drawable list_green_up 0x7f040020 -int drawable list_red_down 0x7f040021 -int drawable list_red_middle 0x7f040022 -int drawable list_red_single 0x7f040023 -int drawable list_red_up 0x7f040024 -int drawable list_white_down 0x7f040025 -int drawable list_white_middle 0x7f040026 -int drawable list_white_single 0x7f040027 -int drawable list_white_up 0x7f040028 -int drawable list_yellow_down 0x7f040029 -int drawable list_yellow_middle 0x7f04002a -int drawable list_yellow_single 0x7f04002b -int drawable list_yellow_up 0x7f04002c -int drawable menu_delete 0x7f04002d -int drawable menu_move 0x7f04002e -int drawable new_note 0x7f04002f -int drawable new_note_normal 0x7f040030 -int drawable new_note_pressed 0x7f040031 -int drawable note_edit_color_selector_panel 0x7f040032 -int drawable notification 0x7f040033 -int drawable search_result 0x7f040034 -int drawable selected 0x7f040035 -int drawable title_alert 0x7f040036 -int drawable title_bar_bg 0x7f040037 -int drawable widget_2x_blue 0x7f040038 -int drawable widget_2x_green 0x7f040039 -int drawable widget_2x_red 0x7f04003a -int drawable widget_2x_white 0x7f04003b -int drawable widget_2x_yellow 0x7f04003c -int drawable widget_4x_blue 0x7f04003d -int drawable widget_4x_green 0x7f04003e -int drawable widget_4x_red 0x7f04003f -int drawable widget_4x_white 0x7f040040 -int drawable widget_4x_yellow 0x7f040041 +int drawable deselect_all 0x7f040005 +int drawable dropdown_icon 0x7f040006 +int drawable edit_blue 0x7f040007 +int drawable edit_green 0x7f040008 +int drawable edit_red 0x7f040009 +int drawable edit_title_blue 0x7f04000a +int drawable edit_title_green 0x7f04000b +int drawable edit_title_red 0x7f04000c +int drawable edit_title_white 0x7f04000d +int drawable edit_title_yellow 0x7f04000e +int drawable edit_white 0x7f04000f +int drawable edit_yellow 0x7f040010 +int drawable font_large 0x7f040011 +int drawable font_normal 0x7f040012 +int drawable font_size_selector_bg 0x7f040013 +int drawable font_small 0x7f040014 +int drawable font_super 0x7f040015 +int drawable icon_app 0x7f040016 +int drawable list_background 0x7f040017 +int drawable list_blue_down 0x7f040018 +int drawable list_blue_middle 0x7f040019 +int drawable list_blue_single 0x7f04001a +int drawable list_blue_up 0x7f04001b +int drawable list_folder 0x7f04001c +int drawable list_footer_bg 0x7f04001d +int drawable list_green_down 0x7f04001e +int drawable list_green_middle 0x7f04001f +int drawable list_green_single 0x7f040020 +int drawable list_green_up 0x7f040021 +int drawable list_red_down 0x7f040022 +int drawable list_red_middle 0x7f040023 +int drawable list_red_single 0x7f040024 +int drawable list_red_up 0x7f040025 +int drawable list_white_down 0x7f040026 +int drawable list_white_middle 0x7f040027 +int drawable list_white_single 0x7f040028 +int drawable list_white_up 0x7f040029 +int drawable list_yellow_down 0x7f04002a +int drawable list_yellow_middle 0x7f04002b +int drawable list_yellow_single 0x7f04002c +int drawable list_yellow_up 0x7f04002d +int drawable menu_delete 0x7f04002e +int drawable menu_move 0x7f04002f +int drawable new_note 0x7f040030 +int drawable new_note_normal 0x7f040031 +int drawable new_note_pressed 0x7f040032 +int drawable note_edit_color_selector_panel 0x7f040033 +int drawable notification 0x7f040034 +int drawable recover 0x7f040035 +int drawable search_result 0x7f040036 +int drawable select_all 0x7f040037 +int drawable selected 0x7f040038 +int drawable title_alert 0x7f040039 +int drawable title_bar_bg 0x7f04003a +int drawable widget_2x_blue 0x7f04003b +int drawable widget_2x_green 0x7f04003c +int drawable widget_2x_red 0x7f04003d +int drawable widget_2x_white 0x7f04003e +int drawable widget_2x_yellow 0x7f04003f +int drawable widget_4x_blue 0x7f040040 +int drawable widget_4x_green 0x7f040041 +int drawable widget_4x_red 0x7f040042 +int drawable widget_4x_white 0x7f040043 +int drawable widget_4x_yellow 0x7f040044 int id account_dialog_subtitle 0x7f050000 int id account_dialog_title 0x7f050001 int id action_select_all 0x7f050002 -int id amPm 0x7f050003 -int id btn_new_note 0x7f050004 -int id btn_set_bg_color 0x7f050005 -int id cb_edit_item 0x7f050006 -int id date 0x7f050007 -int id delete 0x7f050008 -int id et_edit_text 0x7f050009 -int id et_foler_name 0x7f05000a -int id font_size_selector 0x7f05000b -int id hour 0x7f05000c -int id iv_alert_icon 0x7f05000d -int id iv_bg_blue 0x7f05000e -int id iv_bg_blue_select 0x7f05000f -int id iv_bg_green 0x7f050010 -int id iv_bg_green_select 0x7f050011 -int id iv_bg_red 0x7f050012 -int id iv_bg_red_select 0x7f050013 -int id iv_bg_white 0x7f050014 -int id iv_bg_white_select 0x7f050015 -int id iv_bg_yellow 0x7f050016 -int id iv_bg_yellow_select 0x7f050017 -int id iv_large_select 0x7f050018 -int id iv_medium_select 0x7f050019 -int id iv_small_select 0x7f05001a -int id iv_super_select 0x7f05001b -int id ll_font_large 0x7f05001c -int id ll_font_normal 0x7f05001d -int id ll_font_small 0x7f05001e -int id ll_font_super 0x7f05001f -int id menu_alert 0x7f050020 -int id menu_delete 0x7f050021 -int id menu_delete_remind 0x7f050022 -int id menu_export_text 0x7f050023 -int id menu_font_size 0x7f050024 -int id menu_list_mode 0x7f050025 -int id menu_new_folder 0x7f050026 -int id menu_new_note 0x7f050027 -int id menu_search 0x7f050028 -int id menu_send_to_desktop 0x7f050029 -int id menu_setting 0x7f05002a -int id menu_share 0x7f05002b -int id menu_sync 0x7f05002c -int id minute 0x7f05002d -int id move 0x7f05002e -int id navigation_bar 0x7f05002f -int id note_bg_color_selector 0x7f050030 -int id note_edit_list 0x7f050031 -int id note_edit_view 0x7f050032 -int id note_item 0x7f050033 -int id note_title 0x7f050034 -int id notes_list 0x7f050035 -int id prefenerece_sync_status_textview 0x7f050036 -int id preference_sync_button 0x7f050037 -int id selection_menu 0x7f050038 -int id sv_note_edit 0x7f050039 -int id tv_alert_date 0x7f05003a -int id tv_folder_name 0x7f05003b -int id tv_modified_date 0x7f05003c -int id tv_name 0x7f05003d -int id tv_time 0x7f05003e -int id tv_title 0x7f05003f -int id tv_title_bar 0x7f050040 -int id widget_bg_image 0x7f050041 -int id widget_text 0x7f050042 +int id add_img_btn 0x7f050003 +int id amPm 0x7f050004 +int id btn_new_note 0x7f050005 +int id btn_set_bg_color 0x7f050006 +int id cb_edit_item 0x7f050007 +int id date 0x7f050008 +int id delete 0x7f050009 +int id et_edit_text 0x7f05000a +int id et_foler_name 0x7f05000b +int id font_size_selector 0x7f05000c +int id hour 0x7f05000d +int id iv_alert_icon 0x7f05000e +int id iv_bg_blue 0x7f05000f +int id iv_bg_blue_select 0x7f050010 +int id iv_bg_green 0x7f050011 +int id iv_bg_green_select 0x7f050012 +int id iv_bg_red 0x7f050013 +int id iv_bg_red_select 0x7f050014 +int id iv_bg_white 0x7f050015 +int id iv_bg_white_select 0x7f050016 +int id iv_bg_yellow 0x7f050017 +int id iv_bg_yellow_select 0x7f050018 +int id iv_large_select 0x7f050019 +int id iv_medium_select 0x7f05001a +int id iv_small_select 0x7f05001b +int id iv_super_select 0x7f05001c +int id ll_font_large 0x7f05001d +int id ll_font_normal 0x7f05001e +int id ll_font_small 0x7f05001f +int id ll_font_super 0x7f050020 +int id menu_alert 0x7f050021 +int id menu_delete 0x7f050022 +int id menu_delete_remind 0x7f050023 +int id menu_export_text 0x7f050024 +int id menu_font_size 0x7f050025 +int id menu_list_mode 0x7f050026 +int id menu_new_folder 0x7f050027 +int id menu_new_note 0x7f050028 +int id menu_search 0x7f050029 +int id menu_send_to_desktop 0x7f05002a +int id menu_setting 0x7f05002b +int id menu_share 0x7f05002c +int id menu_sync 0x7f05002d +int id menu_trash 0x7f05002e +int id minute 0x7f05002f +int id move 0x7f050030 +int id navigation_bar 0x7f050031 +int id note_bg_color_selector 0x7f050032 +int id note_edit_list 0x7f050033 +int id note_edit_view 0x7f050034 +int id note_item 0x7f050035 +int id note_title 0x7f050036 +int id notes_list 0x7f050037 +int id prefenerece_sync_status_textview 0x7f050038 +int id preference_sync_button 0x7f050039 +int id realdelete 0x7f05003a +int id recover 0x7f05003b +int id recycle_bin 0x7f05003c +int id select_all 0x7f05003d +int id selection_menu 0x7f05003e +int id sv_note_edit 0x7f05003f +int id tv_alert_date 0x7f050040 +int id tv_folder_name 0x7f050041 +int id tv_modified_date 0x7f050042 +int id tv_name 0x7f050043 +int id tv_time 0x7f050044 +int id tv_title 0x7f050045 +int id tv_title_bar 0x7f050046 +int id widget_bg_image 0x7f050047 +int id widget_text 0x7f050048 int layout account_dialog_title 0x7f060000 int layout add_account_text 0x7f060001 int layout datetime_picker 0x7f060002 @@ -152,120 +161,129 @@ int layout note_item 0x7f060007 int layout note_list 0x7f060008 int layout note_list_dropdown_menu 0x7f060009 int layout note_list_footer 0x7f06000a -int layout settings_header 0x7f06000b -int layout widget_2x 0x7f06000c -int layout widget_4x 0x7f06000d +int layout recycle_bin 0x7f06000b +int layout settings_header 0x7f06000c +int layout widget_2x 0x7f06000d +int layout widget_4x 0x7f06000e int menu call_note_edit 0x7f070000 int menu call_record_folder 0x7f070001 int menu note_edit 0x7f070002 int menu note_list 0x7f070003 int menu note_list_dropdown 0x7f070004 int menu note_list_options 0x7f070005 -int menu sub_folder 0x7f070006 +int menu recyclebin_options 0x7f070006 +int menu sub_folder 0x7f070007 int plurals search_results_title 0x7f080000 int raw introduction 0x7f090000 int string alert_message_delete_folder 0x7f0a0000 int string alert_message_delete_note 0x7f0a0001 int string alert_message_delete_notes 0x7f0a0002 -int string alert_title_delete 0x7f0a0003 -int string app_name 0x7f0a0004 -int string app_widget2x2 0x7f0a0005 -int string app_widget4x4 0x7f0a0006 -int string button_delete 0x7f0a0007 -int string call_record_folder_name 0x7f0a0008 -int string datetime_dialog_cancel 0x7f0a0009 -int string datetime_dialog_ok 0x7f0a000a -int string delete_remind_time_message 0x7f0a000b -int string error_note_empty_for_clock 0x7f0a000c -int string error_note_empty_for_send_to_desktop 0x7f0a000d -int string error_note_not_exist 0x7f0a000e -int string error_sdcard_export 0x7f0a000f -int string error_sdcard_unmounted 0x7f0a0010 -int string error_sync_cancelled 0x7f0a0011 -int string error_sync_internal 0x7f0a0012 -int string error_sync_network 0x7f0a0013 -int string failed_sdcard_export 0x7f0a0014 -int string file_name_txt_format 0x7f0a0015 -int string file_path 0x7f0a0016 -int string folder_exist 0x7f0a0017 -int string format_date_ymd 0x7f0a0018 -int string format_datetime_mdhm 0x7f0a0019 -int string format_exported_file_location 0x7f0a001a -int string format_folder_files_count 0x7f0a001b -int string format_move_notes_to_folder 0x7f0a001c -int string hint_foler_name 0x7f0a001d -int string info_note_enter_desktop 0x7f0a001e -int string menu_alert 0x7f0a001f -int string menu_create_folder 0x7f0a0020 -int string menu_delete 0x7f0a0021 -int string menu_deselect_all 0x7f0a0022 -int string menu_export_text 0x7f0a0023 -int string menu_folder_change_name 0x7f0a0024 -int string menu_folder_delete 0x7f0a0025 -int string menu_folder_view 0x7f0a0026 -int string menu_font_large 0x7f0a0027 -int string menu_font_normal 0x7f0a0028 -int string menu_font_size 0x7f0a0029 -int string menu_font_small 0x7f0a002a -int string menu_font_super 0x7f0a002b -int string menu_list_mode 0x7f0a002c -int string menu_move 0x7f0a002d -int string menu_move_parent_folder 0x7f0a002e -int string menu_normal_mode 0x7f0a002f -int string menu_remove_remind 0x7f0a0030 -int string menu_search 0x7f0a0031 -int string menu_select_all 0x7f0a0032 -int string menu_select_none 0x7f0a0033 -int string menu_select_title 0x7f0a0034 -int string menu_send_to_desktop 0x7f0a0035 -int string menu_setting 0x7f0a0036 -int string menu_share 0x7f0a0037 -int string menu_sync 0x7f0a0038 -int string menu_sync_cancel 0x7f0a0039 -int string menu_title_select_folder 0x7f0a003a -int string note_alert_expired 0x7f0a003b -int string note_link_email 0x7f0a003c -int string note_link_other 0x7f0a003d -int string note_link_tel 0x7f0a003e -int string note_link_web 0x7f0a003f -int string notealert_enter 0x7f0a0040 -int string notealert_ok 0x7f0a0041 -int string notelist_menu_new 0x7f0a0042 -int string notelist_string_info 0x7f0a0043 -int string preferences_account_summary 0x7f0a0044 -int string preferences_account_title 0x7f0a0045 -int string preferences_add_account 0x7f0a0046 -int string preferences_bg_random_appear_title 0x7f0a0047 -int string preferences_button_sync_cancel 0x7f0a0048 -int string preferences_button_sync_immediately 0x7f0a0049 -int string preferences_dialog_change_account_title 0x7f0a004a -int string preferences_dialog_change_account_warn_msg 0x7f0a004b -int string preferences_dialog_select_account_tips 0x7f0a004c -int string preferences_dialog_select_account_title 0x7f0a004d -int string preferences_last_sync_time 0x7f0a004e -int string preferences_last_sync_time_format 0x7f0a004f -int string preferences_menu_cancel 0x7f0a0050 -int string preferences_menu_change_account 0x7f0a0051 -int string preferences_menu_remove_account 0x7f0a0052 -int string preferences_title 0x7f0a0053 -int string preferences_toast_cannot_change_account 0x7f0a0054 -int string preferences_toast_success_set_accout 0x7f0a0055 -int string search 0x7f0a0056 -int string search_hint 0x7f0a0057 -int string search_label 0x7f0a0058 -int string search_setting_description 0x7f0a0059 -int string set_remind_time_message 0x7f0a005a -int string success_sdcard_export 0x7f0a005b -int string success_sync_account 0x7f0a005c -int string sync_progress_init_list 0x7f0a005d -int string sync_progress_login 0x7f0a005e -int string sync_progress_syncing 0x7f0a005f -int string ticker_cancel 0x7f0a0060 -int string ticker_fail 0x7f0a0061 -int string ticker_success 0x7f0a0062 -int string ticker_syncing 0x7f0a0063 -int string widget_havenot_content 0x7f0a0064 -int string widget_under_visit_mode 0x7f0a0065 +int string alert_message_realdelete 0x7f0a0003 +int string alert_message_recover 0x7f0a0004 +int string alert_title_delete 0x7f0a0005 +int string app_name 0x7f0a0006 +int string app_widget2x2 0x7f0a0007 +int string app_widget4x4 0x7f0a0008 +int string button_delete 0x7f0a0009 +int string call_record_folder_name 0x7f0a000a +int string datetime_dialog_cancel 0x7f0a000b +int string datetime_dialog_ok 0x7f0a000c +int string delete_remind_time_message 0x7f0a000d +int string error_delete_or_recover 0x7f0a000e +int string error_note_empty_for_clock 0x7f0a000f +int string error_note_empty_for_send_to_desktop 0x7f0a0010 +int string error_note_not_exist 0x7f0a0011 +int string error_sdcard_export 0x7f0a0012 +int string error_sdcard_unmounted 0x7f0a0013 +int string error_sync_cancelled 0x7f0a0014 +int string error_sync_internal 0x7f0a0015 +int string error_sync_network 0x7f0a0016 +int string failed_sdcard_export 0x7f0a0017 +int string file_name_txt_format 0x7f0a0018 +int string file_path 0x7f0a0019 +int string folder_exist 0x7f0a001a +int string format_date_ymd 0x7f0a001b +int string format_datetime_mdhm 0x7f0a001c +int string format_exported_file_location 0x7f0a001d +int string format_folder_files_count 0x7f0a001e +int string format_move_notes_to_folder 0x7f0a001f +int string hint_foler_name 0x7f0a0020 +int string info_note_enter_desktop 0x7f0a0021 +int string menu_alert 0x7f0a0022 +int string menu_create_folder 0x7f0a0023 +int string menu_delete 0x7f0a0024 +int string menu_deselect_all 0x7f0a0025 +int string menu_export_text 0x7f0a0026 +int string menu_folder_change_name 0x7f0a0027 +int string menu_folder_delete 0x7f0a0028 +int string menu_folder_view 0x7f0a0029 +int string menu_font_large 0x7f0a002a +int string menu_font_normal 0x7f0a002b +int string menu_font_size 0x7f0a002c +int string menu_font_small 0x7f0a002d +int string menu_font_super 0x7f0a002e +int string menu_list_mode 0x7f0a002f +int string menu_move 0x7f0a0030 +int string menu_move_parent_folder 0x7f0a0031 +int string menu_normal_mode 0x7f0a0032 +int string menu_remove_remind 0x7f0a0033 +int string menu_search 0x7f0a0034 +int string menu_select_all 0x7f0a0035 +int string menu_select_none 0x7f0a0036 +int string menu_select_title 0x7f0a0037 +int string menu_send_to_desktop 0x7f0a0038 +int string menu_setting 0x7f0a0039 +int string menu_share 0x7f0a003a +int string menu_sync 0x7f0a003b +int string menu_sync_cancel 0x7f0a003c +int string menu_title_select_folder 0x7f0a003d +int string menu_trash 0x7f0a003e +int string note_alert_expired 0x7f0a003f +int string note_link_email 0x7f0a0040 +int string note_link_other 0x7f0a0041 +int string note_link_tel 0x7f0a0042 +int string note_link_web 0x7f0a0043 +int string notealert_enter 0x7f0a0044 +int string notealert_ok 0x7f0a0045 +int string notelist_menu_new 0x7f0a0046 +int string notelist_string_info 0x7f0a0047 +int string preferences_account_summary 0x7f0a0048 +int string preferences_account_title 0x7f0a0049 +int string preferences_add_account 0x7f0a004a +int string preferences_bg_random_appear_title 0x7f0a004b +int string preferences_button_sync_cancel 0x7f0a004c +int string preferences_button_sync_immediately 0x7f0a004d +int string preferences_dialog_change_account_title 0x7f0a004e +int string preferences_dialog_change_account_warn_msg 0x7f0a004f +int string preferences_dialog_select_account_tips 0x7f0a0050 +int string preferences_dialog_select_account_title 0x7f0a0051 +int string preferences_last_sync_time 0x7f0a0052 +int string preferences_last_sync_time_format 0x7f0a0053 +int string preferences_menu_cancel 0x7f0a0054 +int string preferences_menu_change_account 0x7f0a0055 +int string preferences_menu_remove_account 0x7f0a0056 +int string preferences_title 0x7f0a0057 +int string preferences_toast_cannot_change_account 0x7f0a0058 +int string preferences_toast_success_set_accout 0x7f0a0059 +int string realdelete 0x7f0a005a +int string recover 0x7f0a005b +int string recycle_list 0x7f0a005c +int string search 0x7f0a005d +int string search_hint 0x7f0a005e +int string search_label 0x7f0a005f +int string search_setting_description 0x7f0a0060 +int string set_remind_time_message 0x7f0a0061 +int string success_sdcard_export 0x7f0a0062 +int string success_sync_account 0x7f0a0063 +int string sync_progress_init_list 0x7f0a0064 +int string sync_progress_login 0x7f0a0065 +int string sync_progress_syncing 0x7f0a0066 +int string ticker_cancel 0x7f0a0067 +int string ticker_fail 0x7f0a0068 +int string ticker_success 0x7f0a0069 +int string ticker_syncing 0x7f0a006a +int string widget_havenot_content 0x7f0a006b +int string widget_under_visit_mode 0x7f0a006c int style HighlightTextAppearancePrimary 0x7f0b0000 int style HighlightTextAppearanceSecondary 0x7f0b0001 int style NoteActionBarStyle 0x7f0b0002 diff --git a/src/note_but_github/app/build/intermediates/source_set_path_map/debug/file-map.txt b/src/note_but_github/app/build/intermediates/source_set_path_map/debug/file-map.txt index 3ba8de8..0640c1f 100644 --- a/src/note_but_github/app/build/intermediates/source_set_path_map/debug/file-map.txt +++ b/src/note_but_github/app/build/intermediates/source_set_path_map/debug/file-map.txt @@ -1,8 +1,8 @@ -net.micode.notes.app-pngs-0 D:\xueye\xiaominote\note_but_github\app\build\generated\res\pngs\debug -net.micode.notes.app-resValues-1 D:\xueye\xiaominote\note_but_github\app\build\generated\res\resValues\debug -net.micode.notes.app-rs-2 D:\xueye\xiaominote\note_but_github\app\build\generated\res\rs\debug -net.micode.notes.app-mergeDebugResources-3 D:\xueye\xiaominote\note_but_github\app\build\intermediates\incremental\debug\mergeDebugResources\merged.dir -net.micode.notes.app-mergeDebugResources-4 D:\xueye\xiaominote\note_but_github\app\build\intermediates\incremental\debug\mergeDebugResources\stripped.dir -net.micode.notes.app-merged_res-5 D:\xueye\xiaominote\note_but_github\app\build\intermediates\merged_res\debug -net.micode.notes.app-debug-6 D:\xueye\xiaominote\note_but_github\app\src\debug\res -net.micode.notes.app-main-7 D:\xueye\xiaominote\note_but_github\app\src\main\res +net.micode.notes.app-pngs-0 D:\xueye\softproject\gitProject\src\note_but_github\app\build\generated\res\pngs\debug +net.micode.notes.app-resValues-1 D:\xueye\softproject\gitProject\src\note_but_github\app\build\generated\res\resValues\debug +net.micode.notes.app-rs-2 D:\xueye\softproject\gitProject\src\note_but_github\app\build\generated\res\rs\debug +net.micode.notes.app-mergeDebugResources-3 D:\xueye\softproject\gitProject\src\note_but_github\app\build\intermediates\incremental\debug\mergeDebugResources\merged.dir +net.micode.notes.app-mergeDebugResources-4 D:\xueye\softproject\gitProject\src\note_but_github\app\build\intermediates\incremental\debug\mergeDebugResources\stripped.dir +net.micode.notes.app-merged_res-5 D:\xueye\softproject\gitProject\src\note_but_github\app\build\intermediates\merged_res\debug +net.micode.notes.app-debug-6 D:\xueye\softproject\gitProject\src\note_but_github\app\src\debug\res +net.micode.notes.app-main-7 D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\res diff --git a/src/note_but_github/app/build/intermediates/stable_resource_ids_file/debug/stableIds.txt b/src/note_but_github/app/build/intermediates/stable_resource_ids_file/debug/stableIds.txt index 4461006..4f71953 100644 --- a/src/note_but_github/app/build/intermediates/stable_resource_ids_file/debug/stableIds.txt +++ b/src/note_but_github/app/build/intermediates/stable_resource_ids_file/debug/stableIds.txt @@ -4,279 +4,297 @@ net.micode.notes:style/TextAppearanceSecondaryItem = 0x7f0b0008 net.micode.notes:style/TextAppearanceNormal = 0x7f0b0006 net.micode.notes:style/TextAppearanceLarge = 0x7f0b0004 net.micode.notes:style/HighlightTextAppearancePrimary = 0x7f0b0000 -net.micode.notes:string/widget_havenot_content = 0x7f0a0064 -net.micode.notes:string/ticker_syncing = 0x7f0a0063 -net.micode.notes:string/ticker_success = 0x7f0a0062 +net.micode.notes:string/widget_havenot_content = 0x7f0a006b +net.micode.notes:string/ticker_syncing = 0x7f0a006a +net.micode.notes:string/ticker_success = 0x7f0a0069 net.micode.notes:style/HighlightTextAppearanceSecondary = 0x7f0b0001 -net.micode.notes:string/ticker_cancel = 0x7f0a0060 -net.micode.notes:string/sync_progress_syncing = 0x7f0a005f -net.micode.notes:string/sync_progress_init_list = 0x7f0a005d -net.micode.notes:string/search_label = 0x7f0a0058 -net.micode.notes:string/preferences_toast_success_set_accout = 0x7f0a0055 -net.micode.notes:string/preferences_toast_cannot_change_account = 0x7f0a0054 -net.micode.notes:string/preferences_title = 0x7f0a0053 -net.micode.notes:string/preferences_menu_remove_account = 0x7f0a0052 +net.micode.notes:string/ticker_cancel = 0x7f0a0067 +net.micode.notes:string/sync_progress_syncing = 0x7f0a0066 +net.micode.notes:string/sync_progress_init_list = 0x7f0a0064 +net.micode.notes:string/search_label = 0x7f0a005f +net.micode.notes:string/recover = 0x7f0a005b +net.micode.notes:string/realdelete = 0x7f0a005a +net.micode.notes:string/preferences_toast_success_set_accout = 0x7f0a0059 +net.micode.notes:string/preferences_toast_cannot_change_account = 0x7f0a0058 +net.micode.notes:string/preferences_title = 0x7f0a0057 +net.micode.notes:string/preferences_menu_remove_account = 0x7f0a0056 net.micode.notes:style/NoteActionBarStyle = 0x7f0b0002 -net.micode.notes:string/preferences_menu_change_account = 0x7f0a0051 -net.micode.notes:string/preferences_menu_cancel = 0x7f0a0050 -net.micode.notes:string/preferences_last_sync_time = 0x7f0a004e -net.micode.notes:string/preferences_dialog_select_account_title = 0x7f0a004d -net.micode.notes:string/preferences_dialog_change_account_warn_msg = 0x7f0a004b -net.micode.notes:string/preferences_button_sync_immediately = 0x7f0a0049 -net.micode.notes:string/preferences_button_sync_cancel = 0x7f0a0048 -net.micode.notes:string/preferences_account_summary = 0x7f0a0044 -net.micode.notes:string/success_sdcard_export = 0x7f0a005b -net.micode.notes:string/notelist_string_info = 0x7f0a0043 -net.micode.notes:string/notelist_menu_new = 0x7f0a0042 -net.micode.notes:string/notealert_ok = 0x7f0a0041 -net.micode.notes:string/notealert_enter = 0x7f0a0040 -net.micode.notes:string/note_link_web = 0x7f0a003f -net.micode.notes:string/note_link_tel = 0x7f0a003e -net.micode.notes:string/note_link_other = 0x7f0a003d -net.micode.notes:string/note_link_email = 0x7f0a003c -net.micode.notes:string/note_alert_expired = 0x7f0a003b -net.micode.notes:string/menu_sync_cancel = 0x7f0a0039 -net.micode.notes:string/menu_sync = 0x7f0a0038 -net.micode.notes:string/menu_share = 0x7f0a0037 -net.micode.notes:string/menu_select_title = 0x7f0a0034 +net.micode.notes:string/preferences_menu_change_account = 0x7f0a0055 +net.micode.notes:string/preferences_last_sync_time = 0x7f0a0052 +net.micode.notes:string/preferences_dialog_select_account_title = 0x7f0a0051 +net.micode.notes:string/preferences_dialog_change_account_warn_msg = 0x7f0a004f +net.micode.notes:string/preferences_button_sync_immediately = 0x7f0a004d +net.micode.notes:string/preferences_button_sync_cancel = 0x7f0a004c +net.micode.notes:string/preferences_account_summary = 0x7f0a0048 +net.micode.notes:string/success_sdcard_export = 0x7f0a0062 +net.micode.notes:string/notelist_string_info = 0x7f0a0047 +net.micode.notes:string/notelist_menu_new = 0x7f0a0046 +net.micode.notes:string/notealert_ok = 0x7f0a0045 +net.micode.notes:string/notealert_enter = 0x7f0a0044 +net.micode.notes:string/note_link_web = 0x7f0a0043 +net.micode.notes:string/note_link_tel = 0x7f0a0042 +net.micode.notes:string/note_link_other = 0x7f0a0041 +net.micode.notes:string/note_link_email = 0x7f0a0040 +net.micode.notes:string/note_alert_expired = 0x7f0a003f +net.micode.notes:string/menu_sync_cancel = 0x7f0a003c +net.micode.notes:string/menu_sync = 0x7f0a003b +net.micode.notes:string/menu_share = 0x7f0a003a +net.micode.notes:string/menu_select_title = 0x7f0a0037 net.micode.notes:style/TextAppearanceMedium = 0x7f0b0005 -net.micode.notes:string/menu_select_none = 0x7f0a0033 -net.micode.notes:string/menu_title_select_folder = 0x7f0a003a -net.micode.notes:string/menu_select_all = 0x7f0a0032 -net.micode.notes:string/menu_search = 0x7f0a0031 -net.micode.notes:string/menu_remove_remind = 0x7f0a0030 -net.micode.notes:string/menu_normal_mode = 0x7f0a002f -net.micode.notes:string/menu_move_parent_folder = 0x7f0a002e -net.micode.notes:string/menu_move = 0x7f0a002d -net.micode.notes:string/menu_list_mode = 0x7f0a002c -net.micode.notes:string/menu_font_super = 0x7f0a002b -net.micode.notes:string/menu_font_small = 0x7f0a002a -net.micode.notes:string/menu_folder_change_name = 0x7f0a0024 -net.micode.notes:string/menu_export_text = 0x7f0a0023 -net.micode.notes:string/menu_deselect_all = 0x7f0a0022 -net.micode.notes:string/menu_create_folder = 0x7f0a0020 +net.micode.notes:string/menu_select_none = 0x7f0a0036 +net.micode.notes:string/menu_title_select_folder = 0x7f0a003d +net.micode.notes:string/menu_select_all = 0x7f0a0035 +net.micode.notes:string/menu_search = 0x7f0a0034 +net.micode.notes:string/menu_remove_remind = 0x7f0a0033 +net.micode.notes:string/menu_normal_mode = 0x7f0a0032 +net.micode.notes:string/menu_move_parent_folder = 0x7f0a0031 +net.micode.notes:string/menu_move = 0x7f0a0030 +net.micode.notes:string/menu_list_mode = 0x7f0a002f +net.micode.notes:string/menu_font_super = 0x7f0a002e +net.micode.notes:string/menu_font_small = 0x7f0a002d +net.micode.notes:string/menu_folder_change_name = 0x7f0a0027 +net.micode.notes:string/menu_export_text = 0x7f0a0026 +net.micode.notes:string/menu_deselect_all = 0x7f0a0025 +net.micode.notes:string/menu_create_folder = 0x7f0a0023 +net.micode.notes:string/format_move_notes_to_folder = 0x7f0a001f +net.micode.notes:string/format_folder_files_count = 0x7f0a001e +net.micode.notes:string/format_datetime_mdhm = 0x7f0a001c +net.micode.notes:string/format_date_ymd = 0x7f0a001b net.micode.notes:style/TextAppearancePrimaryItem = 0x7f0b0007 -net.micode.notes:string/folder_exist = 0x7f0a0017 -net.micode.notes:string/hint_foler_name = 0x7f0a001d -net.micode.notes:string/format_date_ymd = 0x7f0a0018 -net.micode.notes:string/file_path = 0x7f0a0016 -net.micode.notes:string/set_remind_time_message = 0x7f0a005a -net.micode.notes:string/error_sync_network = 0x7f0a0013 -net.micode.notes:string/error_sdcard_unmounted = 0x7f0a0010 -net.micode.notes:string/datetime_dialog_ok = 0x7f0a000a -net.micode.notes:string/datetime_dialog_cancel = 0x7f0a0009 -net.micode.notes:drawable/list_green_up = 0x7f040020 -net.micode.notes:string/call_record_folder_name = 0x7f0a0008 -net.micode.notes:drawable/new_note_normal = 0x7f040030 -net.micode.notes:string/button_delete = 0x7f0a0007 -net.micode.notes:string/app_widget2x2 = 0x7f0a0005 -net.micode.notes:string/menu_font_normal = 0x7f0a0028 -net.micode.notes:string/format_exported_file_location = 0x7f0a001a +net.micode.notes:string/hint_foler_name = 0x7f0a0020 +net.micode.notes:string/folder_exist = 0x7f0a001a +net.micode.notes:string/file_path = 0x7f0a0019 +net.micode.notes:string/ticker_fail = 0x7f0a0068 +net.micode.notes:string/file_name_txt_format = 0x7f0a0018 +net.micode.notes:string/failed_sdcard_export = 0x7f0a0017 +net.micode.notes:string/set_remind_time_message = 0x7f0a0061 +net.micode.notes:string/error_sync_network = 0x7f0a0016 +net.micode.notes:string/error_sdcard_unmounted = 0x7f0a0013 +net.micode.notes:string/datetime_dialog_ok = 0x7f0a000c +net.micode.notes:string/datetime_dialog_cancel = 0x7f0a000b +net.micode.notes:drawable/list_green_up = 0x7f040021 +net.micode.notes:string/call_record_folder_name = 0x7f0a000a +net.micode.notes:drawable/new_note_normal = 0x7f040031 +net.micode.notes:string/button_delete = 0x7f0a0009 +net.micode.notes:string/app_widget2x2 = 0x7f0a0007 +net.micode.notes:string/menu_font_normal = 0x7f0a002b +net.micode.notes:string/format_exported_file_location = 0x7f0a001d net.micode.notes:raw/introduction = 0x7f090000 -net.micode.notes:string/delete_remind_time_message = 0x7f0a000b +net.micode.notes:string/delete_remind_time_message = 0x7f0a000d net.micode.notes:dimen/text_font_size_super = 0x7f030004 -net.micode.notes:drawable/selected = 0x7f040035 +net.micode.notes:drawable/selected = 0x7f040038 net.micode.notes:plurals/search_results_title = 0x7f080000 -net.micode.notes:menu/sub_folder = 0x7f070006 +net.micode.notes:menu/sub_folder = 0x7f070007 +net.micode.notes:menu/recyclebin_options = 0x7f070006 +net.micode.notes:layout/recycle_bin = 0x7f06000b net.micode.notes:menu/note_edit = 0x7f070002 net.micode.notes:style/TextAppearanceSuper = 0x7f0b0009 net.micode.notes:color/secondary_text_dark = 0x7f020001 -net.micode.notes:id/move = 0x7f05002e -net.micode.notes:id/iv_bg_yellow_select = 0x7f050017 +net.micode.notes:id/move = 0x7f050030 +net.micode.notes:id/iv_bg_yellow_select = 0x7f050018 net.micode.notes:menu/call_note_edit = 0x7f070000 -net.micode.notes:drawable/new_note_pressed = 0x7f040031 -net.micode.notes:id/iv_bg_blue = 0x7f05000e -net.micode.notes:layout/settings_header = 0x7f06000b +net.micode.notes:drawable/new_note_pressed = 0x7f040032 +net.micode.notes:id/iv_bg_blue = 0x7f05000f +net.micode.notes:layout/settings_header = 0x7f06000c net.micode.notes:layout/note_list = 0x7f060008 -net.micode.notes:drawable/list_white_single = 0x7f040027 +net.micode.notes:drawable/list_white_single = 0x7f040028 net.micode.notes:layout/note_item = 0x7f060007 net.micode.notes:xml/widget_2x_info = 0x7f0c0002 +net.micode.notes:string/menu_trash = 0x7f0a003e net.micode.notes:string/alert_message_delete_folder = 0x7f0a0000 net.micode.notes:layout/datetime_picker = 0x7f060002 -net.micode.notes:id/btn_new_note = 0x7f050004 +net.micode.notes:id/btn_new_note = 0x7f050005 net.micode.notes:layout/note_list_footer = 0x7f06000a -net.micode.notes:id/widget_text = 0x7f050042 -net.micode.notes:id/tv_title_bar = 0x7f050040 -net.micode.notes:drawable/widget_2x_blue = 0x7f040038 -net.micode.notes:id/tv_time = 0x7f05003e -net.micode.notes:id/tv_name = 0x7f05003d -net.micode.notes:drawable/new_note = 0x7f04002f -net.micode.notes:id/sv_note_edit = 0x7f050039 -net.micode.notes:id/selection_menu = 0x7f050038 -net.micode.notes:string/error_sdcard_export = 0x7f0a000f -net.micode.notes:id/preference_sync_button = 0x7f050037 +net.micode.notes:id/widget_text = 0x7f050048 +net.micode.notes:id/tv_title_bar = 0x7f050046 +net.micode.notes:drawable/widget_2x_blue = 0x7f04003b +net.micode.notes:id/tv_time = 0x7f050044 +net.micode.notes:id/tv_name = 0x7f050043 +net.micode.notes:drawable/new_note = 0x7f040030 +net.micode.notes:id/sv_note_edit = 0x7f05003f +net.micode.notes:id/select_all = 0x7f05003d +net.micode.notes:id/recycle_bin = 0x7f05003c +net.micode.notes:string/recycle_list = 0x7f0a005c +net.micode.notes:string/error_sdcard_export = 0x7f0a0012 +net.micode.notes:id/preference_sync_button = 0x7f050039 net.micode.notes:layout/note_edit = 0x7f060005 -net.micode.notes:id/notes_list = 0x7f050035 +net.micode.notes:id/notes_list = 0x7f050037 net.micode.notes:string/alert_message_delete_notes = 0x7f0a0002 -net.micode.notes:drawable/title_alert = 0x7f040036 -net.micode.notes:id/note_title = 0x7f050034 -net.micode.notes:string/preferences_last_sync_time_format = 0x7f0a004f -net.micode.notes:id/note_edit_view = 0x7f050032 -net.micode.notes:id/navigation_bar = 0x7f05002f -net.micode.notes:string/app_widget4x4 = 0x7f0a0006 -net.micode.notes:drawable/font_normal = 0x7f040011 -net.micode.notes:id/minute = 0x7f05002d -net.micode.notes:drawable/font_super = 0x7f040014 -net.micode.notes:id/menu_sync = 0x7f05002c -net.micode.notes:string/info_note_enter_desktop = 0x7f0a001e -net.micode.notes:id/menu_share = 0x7f05002b -net.micode.notes:id/menu_setting = 0x7f05002a -net.micode.notes:string/widget_under_visit_mode = 0x7f0a0065 -net.micode.notes:id/menu_send_to_desktop = 0x7f050029 -net.micode.notes:id/menu_search = 0x7f050028 -net.micode.notes:drawable/list_green_down = 0x7f04001d -net.micode.notes:id/menu_new_note = 0x7f050027 -net.micode.notes:string/error_note_not_exist = 0x7f0a000e -net.micode.notes:id/menu_new_folder = 0x7f050026 -net.micode.notes:id/menu_list_mode = 0x7f050025 -net.micode.notes:id/iv_medium_select = 0x7f050019 -net.micode.notes:id/menu_export_text = 0x7f050023 -net.micode.notes:string/menu_folder_view = 0x7f0a0026 -net.micode.notes:id/menu_delete = 0x7f050021 -net.micode.notes:string/ticker_fail = 0x7f0a0061 -net.micode.notes:string/file_name_txt_format = 0x7f0a0015 -net.micode.notes:drawable/edit_blue = 0x7f040006 -net.micode.notes:id/prefenerece_sync_status_textview = 0x7f050036 -net.micode.notes:string/menu_font_size = 0x7f0a0029 -net.micode.notes:string/menu_alert = 0x7f0a001f -net.micode.notes:drawable/edit_title_yellow = 0x7f04000d -net.micode.notes:id/menu_alert = 0x7f050020 -net.micode.notes:string/success_sync_account = 0x7f0a005c -net.micode.notes:id/ll_font_super = 0x7f05001f -net.micode.notes:id/ll_font_small = 0x7f05001e +net.micode.notes:drawable/title_alert = 0x7f040039 +net.micode.notes:id/note_title = 0x7f050036 +net.micode.notes:string/preferences_last_sync_time_format = 0x7f0a0053 +net.micode.notes:id/note_edit_view = 0x7f050034 +net.micode.notes:id/navigation_bar = 0x7f050031 +net.micode.notes:string/app_widget4x4 = 0x7f0a0008 +net.micode.notes:drawable/font_normal = 0x7f040012 +net.micode.notes:id/minute = 0x7f05002f +net.micode.notes:drawable/font_super = 0x7f040015 +net.micode.notes:id/menu_sync = 0x7f05002d +net.micode.notes:id/menu_share = 0x7f05002c +net.micode.notes:id/menu_setting = 0x7f05002b +net.micode.notes:string/widget_under_visit_mode = 0x7f0a006c +net.micode.notes:id/menu_send_to_desktop = 0x7f05002a +net.micode.notes:drawable/deselect_all = 0x7f040005 +net.micode.notes:id/menu_search = 0x7f050029 +net.micode.notes:drawable/list_green_down = 0x7f04001e +net.micode.notes:id/menu_new_note = 0x7f050028 +net.micode.notes:string/error_note_not_exist = 0x7f0a0011 +net.micode.notes:string/alert_message_realdelete = 0x7f0a0003 +net.micode.notes:id/menu_new_folder = 0x7f050027 +net.micode.notes:id/menu_list_mode = 0x7f050026 +net.micode.notes:id/iv_medium_select = 0x7f05001a +net.micode.notes:id/menu_export_text = 0x7f050024 +net.micode.notes:string/menu_folder_view = 0x7f0a0029 +net.micode.notes:id/menu_delete = 0x7f050022 +net.micode.notes:drawable/edit_blue = 0x7f040007 +net.micode.notes:id/prefenerece_sync_status_textview = 0x7f050038 +net.micode.notes:string/menu_font_size = 0x7f0a002c +net.micode.notes:string/menu_alert = 0x7f0a0022 +net.micode.notes:drawable/edit_title_yellow = 0x7f04000e +net.micode.notes:id/menu_alert = 0x7f050021 +net.micode.notes:string/success_sync_account = 0x7f0a0063 +net.micode.notes:id/ll_font_super = 0x7f050020 +net.micode.notes:id/ll_font_small = 0x7f05001f net.micode.notes:menu/call_record_folder = 0x7f070001 -net.micode.notes:id/ll_font_normal = 0x7f05001d -net.micode.notes:id/ll_font_large = 0x7f05001c -net.micode.notes:id/note_bg_color_selector = 0x7f050030 -net.micode.notes:drawable/search_result = 0x7f040034 -net.micode.notes:id/iv_super_select = 0x7f05001b -net.micode.notes:id/iv_bg_yellow = 0x7f050016 -net.micode.notes:string/error_sync_cancelled = 0x7f0a0011 -net.micode.notes:id/iv_bg_white_select = 0x7f050015 -net.micode.notes:id/tv_alert_date = 0x7f05003a -net.micode.notes:dimen/text_font_size_large = 0x7f030000 -net.micode.notes:drawable/notification = 0x7f040033 -net.micode.notes:id/iv_bg_red = 0x7f050012 -net.micode.notes:string/menu_font_large = 0x7f0a0027 -net.micode.notes:drawable/widget_4x_blue = 0x7f04003d -net.micode.notes:id/iv_large_select = 0x7f050018 -net.micode.notes:id/widget_bg_image = 0x7f050041 -net.micode.notes:id/iv_bg_green_select = 0x7f050011 -net.micode.notes:string/error_note_empty_for_clock = 0x7f0a000c -net.micode.notes:string/preferences_dialog_change_account_title = 0x7f0a004a -net.micode.notes:drawable/menu_move = 0x7f04002e -net.micode.notes:drawable/widget_4x_white = 0x7f040040 -net.micode.notes:id/iv_bg_blue_select = 0x7f05000f -net.micode.notes:string/preferences_dialog_select_account_tips = 0x7f0a004c -net.micode.notes:id/font_size_selector = 0x7f05000b -net.micode.notes:id/et_edit_text = 0x7f050009 -net.micode.notes:id/et_foler_name = 0x7f05000a -net.micode.notes:drawable/edit_green = 0x7f040007 -net.micode.notes:layout/widget_4x = 0x7f06000d -net.micode.notes:string/search = 0x7f0a0056 -net.micode.notes:id/cb_edit_item = 0x7f050006 -net.micode.notes:id/btn_set_bg_color = 0x7f050005 +net.micode.notes:id/ll_font_normal = 0x7f05001e +net.micode.notes:id/ll_font_large = 0x7f05001d +net.micode.notes:id/note_bg_color_selector = 0x7f050032 +net.micode.notes:drawable/search_result = 0x7f040036 +net.micode.notes:id/iv_super_select = 0x7f05001c +net.micode.notes:string/error_sync_cancelled = 0x7f0a0014 +net.micode.notes:id/iv_bg_white_select = 0x7f050016 +net.micode.notes:id/iv_bg_white = 0x7f050015 +net.micode.notes:string/menu_font_large = 0x7f0a002a +net.micode.notes:drawable/widget_4x_blue = 0x7f040040 +net.micode.notes:id/iv_large_select = 0x7f050019 +net.micode.notes:id/widget_bg_image = 0x7f050047 +net.micode.notes:id/iv_bg_green_select = 0x7f050012 +net.micode.notes:string/error_note_empty_for_clock = 0x7f0a000f +net.micode.notes:string/preferences_dialog_change_account_title = 0x7f0a004e +net.micode.notes:drawable/menu_move = 0x7f04002f +net.micode.notes:drawable/widget_4x_white = 0x7f040043 +net.micode.notes:id/iv_bg_blue_select = 0x7f050010 +net.micode.notes:id/menu_trash = 0x7f05002e +net.micode.notes:string/preferences_dialog_select_account_tips = 0x7f0a0050 +net.micode.notes:id/font_size_selector = 0x7f05000c +net.micode.notes:id/et_edit_text = 0x7f05000a +net.micode.notes:id/et_foler_name = 0x7f05000b +net.micode.notes:drawable/edit_green = 0x7f040008 +net.micode.notes:layout/widget_4x = 0x7f06000e +net.micode.notes:string/search = 0x7f0a005d +net.micode.notes:id/cb_edit_item = 0x7f050007 +net.micode.notes:id/btn_set_bg_color = 0x7f050006 net.micode.notes:id/account_dialog_subtitle = 0x7f050000 net.micode.notes:menu/note_list = 0x7f070003 net.micode.notes:id/account_dialog_title = 0x7f050001 -net.micode.notes:id/iv_bg_green = 0x7f050010 -net.micode.notes:id/amPm = 0x7f050003 -net.micode.notes:drawable/widget_4x_green = 0x7f04003e +net.micode.notes:id/iv_bg_green = 0x7f050011 +net.micode.notes:id/amPm = 0x7f050004 +net.micode.notes:drawable/widget_4x_green = 0x7f040041 net.micode.notes:style/NoteTheme = 0x7f0b0003 -net.micode.notes:id/hour = 0x7f05000c -net.micode.notes:drawable/note_edit_color_selector_panel = 0x7f040032 -net.micode.notes:drawable/widget_2x_yellow = 0x7f04003c -net.micode.notes:string/format_move_notes_to_folder = 0x7f0a001c -net.micode.notes:drawable/widget_2x_red = 0x7f04003a +net.micode.notes:id/hour = 0x7f05000d +net.micode.notes:drawable/note_edit_color_selector_panel = 0x7f040033 +net.micode.notes:drawable/widget_2x_yellow = 0x7f04003f +net.micode.notes:dimen/text_font_size_large = 0x7f030000 +net.micode.notes:id/tv_alert_date = 0x7f050040 +net.micode.notes:drawable/widget_2x_red = 0x7f04003d net.micode.notes:style/TextAppearanceUnderMenuIcon = 0x7f0b000a -net.micode.notes:id/delete = 0x7f050008 -net.micode.notes:drawable/widget_2x_green = 0x7f040039 -net.micode.notes:drawable/title_bar_bg = 0x7f040037 -net.micode.notes:drawable/menu_delete = 0x7f04002d -net.micode.notes:string/error_sync_internal = 0x7f0a0012 -net.micode.notes:drawable/list_green_single = 0x7f04001f +net.micode.notes:id/delete = 0x7f050009 +net.micode.notes:drawable/widget_2x_green = 0x7f04003c +net.micode.notes:drawable/title_bar_bg = 0x7f04003a +net.micode.notes:id/action_select_all = 0x7f050002 +net.micode.notes:drawable/select_all = 0x7f040037 +net.micode.notes:id/iv_bg_red = 0x7f050013 +net.micode.notes:drawable/notification = 0x7f040034 +net.micode.notes:drawable/list_green_single = 0x7f040020 net.micode.notes:string/alert_message_delete_note = 0x7f0a0001 -net.micode.notes:id/tv_modified_date = 0x7f05003c -net.micode.notes:drawable/list_blue_middle = 0x7f040018 -net.micode.notes:id/iv_small_select = 0x7f05001a +net.micode.notes:id/tv_modified_date = 0x7f050042 +net.micode.notes:drawable/list_blue_middle = 0x7f040019 +net.micode.notes:id/iv_small_select = 0x7f05001b net.micode.notes:menu/note_list_options = 0x7f070005 net.micode.notes:xml/searchable = 0x7f0c0001 -net.micode.notes:string/menu_folder_delete = 0x7f0a0025 -net.micode.notes:drawable/dropdown_icon = 0x7f040005 -net.micode.notes:id/date = 0x7f050007 -net.micode.notes:drawable/list_yellow_single = 0x7f04002b -net.micode.notes:drawable/list_red_up = 0x7f040024 -net.micode.notes:drawable/widget_4x_yellow = 0x7f040041 -net.micode.notes:drawable/list_yellow_middle = 0x7f04002a -net.micode.notes:id/tv_folder_name = 0x7f05003b -net.micode.notes:drawable/list_yellow_down = 0x7f040029 -net.micode.notes:string/format_folder_files_count = 0x7f0a001b +net.micode.notes:string/menu_folder_delete = 0x7f0a0028 +net.micode.notes:drawable/dropdown_icon = 0x7f040006 +net.micode.notes:id/date = 0x7f050008 +net.micode.notes:drawable/list_yellow_single = 0x7f04002c +net.micode.notes:drawable/list_red_up = 0x7f040025 +net.micode.notes:drawable/widget_4x_yellow = 0x7f040044 +net.micode.notes:drawable/list_yellow_middle = 0x7f04002b +net.micode.notes:id/tv_folder_name = 0x7f050041 +net.micode.notes:drawable/list_yellow_down = 0x7f04002a net.micode.notes:drawable/clock = 0x7f040003 -net.micode.notes:drawable/list_white_up = 0x7f040028 -net.micode.notes:drawable/edit_title_blue = 0x7f040009 -net.micode.notes:drawable/edit_red = 0x7f040008 -net.micode.notes:id/iv_alert_icon = 0x7f05000d +net.micode.notes:drawable/list_white_up = 0x7f040029 +net.micode.notes:drawable/edit_title_blue = 0x7f04000a +net.micode.notes:drawable/edit_red = 0x7f040009 +net.micode.notes:id/iv_alert_icon = 0x7f05000e net.micode.notes:layout/dialog_edit_text = 0x7f060003 -net.micode.notes:string/preferences_account_title = 0x7f0a0045 -net.micode.notes:drawable/edit_white = 0x7f04000e -net.micode.notes:drawable/list_white_middle = 0x7f040026 +net.micode.notes:string/preferences_account_title = 0x7f0a0049 +net.micode.notes:drawable/edit_white = 0x7f04000f +net.micode.notes:drawable/list_white_middle = 0x7f040027 net.micode.notes:color/user_query_highlight = 0x7f020002 -net.micode.notes:drawable/list_white_down = 0x7f040025 -net.micode.notes:string/preferences_add_account = 0x7f0a0046 +net.micode.notes:drawable/list_white_down = 0x7f040026 +net.micode.notes:string/preferences_menu_cancel = 0x7f0a0054 +net.micode.notes:drawable/recover = 0x7f040035 +net.micode.notes:string/preferences_add_account = 0x7f0a004a net.micode.notes:drawable/bg_btn_set_color = 0x7f040000 -net.micode.notes:string/preferences_bg_random_appear_title = 0x7f0a0047 -net.micode.notes:layout/widget_2x = 0x7f06000c -net.micode.notes:drawable/list_footer_bg = 0x7f04001c -net.micode.notes:string/alert_title_delete = 0x7f0a0003 -net.micode.notes:drawable/edit_title_green = 0x7f04000a -net.micode.notes:drawable/icon_app = 0x7f040015 -net.micode.notes:string/menu_send_to_desktop = 0x7f0a0035 -net.micode.notes:drawable/list_red_single = 0x7f040023 -net.micode.notes:string/failed_sdcard_export = 0x7f0a0014 -net.micode.notes:drawable/widget_4x_red = 0x7f04003f -net.micode.notes:id/menu_delete_remind = 0x7f050022 -net.micode.notes:drawable/list_red_down = 0x7f040021 -net.micode.notes:drawable/list_red_middle = 0x7f040022 -net.micode.notes:id/iv_bg_white = 0x7f050014 -net.micode.notes:id/iv_bg_red_select = 0x7f050013 -net.micode.notes:string/error_note_empty_for_send_to_desktop = 0x7f0a000d +net.micode.notes:string/error_delete_or_recover = 0x7f0a000e +net.micode.notes:string/preferences_bg_random_appear_title = 0x7f0a004b +net.micode.notes:layout/widget_2x = 0x7f06000d +net.micode.notes:drawable/list_footer_bg = 0x7f04001d +net.micode.notes:string/alert_title_delete = 0x7f0a0005 +net.micode.notes:drawable/edit_title_green = 0x7f04000b +net.micode.notes:drawable/icon_app = 0x7f040016 +net.micode.notes:string/menu_send_to_desktop = 0x7f0a0038 +net.micode.notes:drawable/list_red_single = 0x7f040024 +net.micode.notes:drawable/widget_4x_red = 0x7f040042 +net.micode.notes:id/menu_delete_remind = 0x7f050023 +net.micode.notes:drawable/list_red_down = 0x7f040022 +net.micode.notes:drawable/list_red_middle = 0x7f040023 +net.micode.notes:string/alert_message_recover = 0x7f0a0004 +net.micode.notes:id/realdelete = 0x7f05003a +net.micode.notes:string/error_note_empty_for_send_to_desktop = 0x7f0a0010 net.micode.notes:layout/note_list_dropdown_menu = 0x7f060009 -net.micode.notes:drawable/list_blue_down = 0x7f040017 -net.micode.notes:id/action_select_all = 0x7f050002 -net.micode.notes:string/format_datetime_mdhm = 0x7f0a0019 -net.micode.notes:drawable/font_small = 0x7f040013 -net.micode.notes:string/sync_progress_login = 0x7f0a005e +net.micode.notes:drawable/list_blue_down = 0x7f040018 +net.micode.notes:drawable/font_small = 0x7f040014 +net.micode.notes:string/sync_progress_login = 0x7f0a0065 net.micode.notes:array/menu_share_ways = 0x7f010001 -net.micode.notes:drawable/widget_2x_white = 0x7f04003b +net.micode.notes:drawable/widget_2x_white = 0x7f04003e net.micode.notes:layout/folder_list_item = 0x7f060004 net.micode.notes:layout/add_account_text = 0x7f060001 -net.micode.notes:id/tv_title = 0x7f05003f +net.micode.notes:id/tv_title = 0x7f050045 net.micode.notes:color/primary_text_dark = 0x7f020000 -net.micode.notes:drawable/font_size_selector_bg = 0x7f040012 -net.micode.notes:drawable/list_blue_up = 0x7f04001a -net.micode.notes:string/search_setting_description = 0x7f0a0059 -net.micode.notes:drawable/list_blue_single = 0x7f040019 -net.micode.notes:drawable/font_large = 0x7f040010 +net.micode.notes:drawable/font_size_selector_bg = 0x7f040013 +net.micode.notes:drawable/list_blue_up = 0x7f04001b +net.micode.notes:string/search_setting_description = 0x7f0a0060 +net.micode.notes:drawable/list_blue_single = 0x7f04001a +net.micode.notes:drawable/font_large = 0x7f040011 +net.micode.notes:id/selection_menu = 0x7f05003e +net.micode.notes:string/info_note_enter_desktop = 0x7f0a0021 +net.micode.notes:id/add_img_btn = 0x7f050003 net.micode.notes:drawable/delete = 0x7f040004 -net.micode.notes:drawable/edit_yellow = 0x7f04000f -net.micode.notes:id/note_item = 0x7f050033 -net.micode.notes:drawable/edit_title_white = 0x7f04000c -net.micode.notes:id/note_edit_list = 0x7f050031 -net.micode.notes:drawable/edit_title_red = 0x7f04000b -net.micode.notes:string/menu_delete = 0x7f0a0021 -net.micode.notes:drawable/list_folder = 0x7f04001b +net.micode.notes:drawable/edit_yellow = 0x7f040010 +net.micode.notes:id/note_item = 0x7f050035 +net.micode.notes:drawable/edit_title_white = 0x7f04000d +net.micode.notes:id/note_edit_list = 0x7f050033 +net.micode.notes:drawable/edit_title_red = 0x7f04000c +net.micode.notes:string/menu_delete = 0x7f0a0024 +net.micode.notes:drawable/list_folder = 0x7f04001c net.micode.notes:drawable/call_record = 0x7f040002 -net.micode.notes:string/search_hint = 0x7f0a0057 -net.micode.notes:id/menu_font_size = 0x7f050024 +net.micode.notes:string/error_sync_internal = 0x7f0a0015 +net.micode.notes:drawable/menu_delete = 0x7f04002e +net.micode.notes:string/search_hint = 0x7f0a005e +net.micode.notes:id/menu_font_size = 0x7f050025 net.micode.notes:drawable/bg_color_btn_mask = 0x7f040001 -net.micode.notes:drawable/list_yellow_up = 0x7f04002c +net.micode.notes:id/iv_bg_yellow = 0x7f050017 +net.micode.notes:drawable/list_yellow_up = 0x7f04002d +net.micode.notes:id/iv_bg_red_select = 0x7f050014 net.micode.notes:dimen/text_font_size_small = 0x7f030003 net.micode.notes:dimen/text_font_size_normal = 0x7f030002 -net.micode.notes:drawable/list_green_middle = 0x7f04001e -net.micode.notes:drawable/list_background = 0x7f040016 -net.micode.notes:string/app_name = 0x7f0a0004 +net.micode.notes:drawable/list_green_middle = 0x7f04001f +net.micode.notes:string/app_name = 0x7f0a0006 +net.micode.notes:id/recover = 0x7f05003b +net.micode.notes:drawable/list_background = 0x7f040017 net.micode.notes:menu/note_list_dropdown = 0x7f070004 -net.micode.notes:string/menu_setting = 0x7f0a0036 +net.micode.notes:string/menu_setting = 0x7f0a0039 net.micode.notes:dimen/text_font_size_medium = 0x7f030001 net.micode.notes:layout/note_edit_list_item = 0x7f060006 net.micode.notes:layout/account_dialog_title = 0x7f060000 diff --git a/src/note_but_github/app/build/outputs/apk/debug/app-debug.apk b/src/note_but_github/app/build/outputs/apk/debug/app-debug.apk index 686b4de..8a6072c 100644 Binary files a/src/note_but_github/app/build/outputs/apk/debug/app-debug.apk and b/src/note_but_github/app/build/outputs/apk/debug/app-debug.apk differ diff --git a/src/note_but_github/app/build/outputs/logs/manifest-merger-debug-report.txt b/src/note_but_github/app/build/outputs/logs/manifest-merger-debug-report.txt index c7041c4..53b2986 100644 --- a/src/note_but_github/app/build/outputs/logs/manifest-merger-debug-report.txt +++ b/src/note_but_github/app/build/outputs/logs/manifest-merger-debug-report.txt @@ -1,235 +1,241 @@ -- Merging decision tree log --- manifest -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:18:1-150:12 -INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:18:1-150:12 -INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:18:1-150:12 -INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:18:1-150:12 -INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:18:1-150:12 -INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:18:1-150:12 -INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:18:1-150:12 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:18:1-156:12 +INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:18:1-156:12 +INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:18:1-156:12 +INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:18:1-156:12 +INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:18:1-156:12 +INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:18:1-156:12 +INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:18:1-156:12 package - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:19:5-31 - INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml - INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:19:5-31 + INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml + INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml android:versionName - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:21:5-30 - INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml - INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:21:5-30 + INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml + INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml xmlns:android - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:18:11-69 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:18:11-69 android:versionCode - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:20:5-28 - INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml - INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:20:5-28 + INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml + INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml uses-sdk -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:23:5-44 -INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:23:5-44 -INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:23:5-44 -INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:23:5-44 -INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:23:5-44 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:23:5-44 +INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:23:5-44 +INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:23:5-44 +INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:23:5-44 +INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:23:5-44 android:targetSdkVersion - INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:23:5-44 - INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml + INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:23:5-44 + INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml android:minSdkVersion - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:23:15-41 - INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml - INJECTED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:23:15-41 + INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml + INJECTED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml uses-permission#android.permission.WRITE_EXTERNAL_STORAGE -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:25:5-81 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:25:5-81 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:25:22-78 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:25:22-78 uses-permission#com.android.launcher.permission.INSTALL_SHORTCUT -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:26:5-88 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:26:5-88 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:26:22-85 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:26:22-85 uses-permission#android.permission.INTERNET -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:27:5-67 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:27:5-67 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:27:22-64 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:27:22-64 uses-permission#android.permission.READ_CONTACTS -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:28:5-72 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:28:5-72 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:28:22-69 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:28:22-69 uses-permission#android.permission.MANAGE_ACCOUNTS -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:29:5-74 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:29:5-74 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:29:22-71 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:29:22-71 uses-permission#android.permission.AUTHENTICATE_ACCOUNTS -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:30:5-80 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:30:5-80 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:30:22-77 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:30:22-77 uses-permission#android.permission.GET_ACCOUNTS -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:31:5-71 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:31:5-71 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:31:22-68 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:31:22-68 uses-permission#android.permission.USE_CREDENTIALS -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:32:5-74 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:32:5-74 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:32:22-71 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:32:22-71 uses-permission#android.permission.RECEIVE_BOOT_COMPLETED -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:33:5-81 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:33:5-81 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:33:22-78 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:33:22-78 application -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:35:5-149:19 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:35:5-155:19 android:label - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:37:9-41 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:37:9-41 android:icon - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:36:9-42 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:36:9-42 activity#net.micode.notes.ui.NotesListActivity -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:38:9-51:20 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:38:9-51:20 android:label - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:41:13-45 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:41:13-45 android:launchMode - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:42:13-43 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:42:13-43 android:windowSoftInputMode - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:45:13-52 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:45:13-52 android:uiOptions - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:44:13-57 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:44:13-57 android:configChanges - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:40:13-74 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:40:13-74 android:theme - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:43:13-45 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:43:13-45 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:39:13-49 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:39:13-49 intent-filter#action:name:android.intent.action.MAIN+category:name:android.intent.category.LAUNCHER -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:47:13-50:29 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:47:13-50:29 action#android.intent.action.MAIN -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:48:17-69 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:48:17-69 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:48:25-66 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:48:25-66 category#android.intent.category.LAUNCHER -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:49:17-77 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:49:17-77 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:49:27-74 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:49:27-74 activity#net.micode.notes.ui.NoteEditActivity -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:53:9-81:20 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:53:9-81:20 android:launchMode - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:56:13-43 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:56:13-43 android:configChanges - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:55:13-74 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:55:13-74 android:theme - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:57:13-45 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:57:13-45 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:54:13-48 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:54:13-48 intent-filter#action:name:android.intent.action.VIEW+category:name:android.intent.category.DEFAULT+data:mimeType:vnd.android.cursor.item/call_note+data:mimeType:vnd.android.cursor.item/text_note -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:59:13-64:29 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:59:13-64:29 action#android.intent.action.VIEW -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:60:17-69 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:60:17-69 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:60:25-66 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:60:25-66 category#android.intent.category.DEFAULT -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:61:17-76 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:61:17-76 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:61:27-73 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:61:27-73 data -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:62:17-78 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:62:17-78 android:mimeType - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:62:23-75 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:62:23-75 intent-filter#action:name:android.intent.action.INSERT_OR_EDIT+category:name:android.intent.category.DEFAULT+data:mimeType:vnd.android.cursor.item/call_note+data:mimeType:vnd.android.cursor.item/text_note -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:66:13-71:29 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:66:13-71:29 action#android.intent.action.INSERT_OR_EDIT -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:67:17-79 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:67:17-79 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:67:25-76 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:67:25-76 intent-filter#action:name:android.intent.action.SEARCH+category:name:android.intent.category.DEFAULT -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:73:13-76:29 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:73:13-76:29 action#android.intent.action.SEARCH -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:74:17-71 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:74:17-71 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:74:25-68 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:74:25-68 meta-data#android.app.searchable -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:78:13-80:54 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:78:13-80:54 android:resource - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:80:17-51 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:80:17-51 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:79:17-54 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:79:17-54 provider#net.micode.notes.data.NotesProvider -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:83:9-86:43 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:83:9-86:43 android:authorities - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:85:13-47 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:85:13-47 android:multiprocess - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:86:13-40 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:86:13-40 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:84:13-63 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:84:13-63 receiver#net.micode.notes.widget.NoteWidgetProvider_2x -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:88:9-100:20 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:88:9-100:20 android:label - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:90:13-50 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:90:13-50 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:89:13-57 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:89:13-57 intent-filter#action:name:android.appwidget.action.APPWIDGET_DELETED+action:name:android.appwidget.action.APPWIDGET_UPDATE+action:name:android.intent.action.PRIVACY_MODE_CHANGED -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:91:13-95:29 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:91:13-95:29 action#android.appwidget.action.APPWIDGET_UPDATE -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:92:17-84 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:92:17-84 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:92:25-81 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:92:25-81 action#android.appwidget.action.APPWIDGET_DELETED -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:93:17-85 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:93:17-85 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:93:25-82 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:93:25-82 action#android.intent.action.PRIVACY_MODE_CHANGED -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:94:17-85 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:94:17-85 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:94:25-82 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:94:25-82 meta-data#android.appwidget.provider -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:97:13-99:58 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:97:13-99:58 android:resource - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:99:17-55 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:99:17-55 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:98:17-58 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:98:17-58 receiver#net.micode.notes.widget.NoteWidgetProvider_4x -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:101:9-114:20 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:101:9-114:20 android:label - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:103:13-50 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:103:13-50 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:102:13-57 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:102:13-57 receiver#net.micode.notes.ui.AlarmInitReceiver -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:116:9-120:20 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:116:9-120:20 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:116:19-55 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:116:19-55 intent-filter#action:name:android.intent.action.BOOT_COMPLETED -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:117:13-119:29 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:117:13-119:29 action#android.intent.action.BOOT_COMPLETED -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:118:17-79 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:118:17-79 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:118:25-76 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:118:25-76 receiver#net.micode.notes.ui.AlarmReceiver -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:122:9-125:20 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:122:9-125:20 android:process - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:124:13-38 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:124:13-38 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:123:13-61 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:123:13-61 activity#net.micode.notes.ui.AlarmAlertActivity -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:127:9-132:20 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:127:9-132:20 android:label - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:129:13-45 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:129:13-45 android:launchMode - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:130:13-48 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:130:13-48 android:theme - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:131:13-75 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:131:13-75 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:128:13-50 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:128:13-50 activity#net.micode.notes.ui.NotesPreferenceActivity -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:134:9-139:20 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:134:9-139:20 android:label - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:136:13-54 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:136:13-54 android:launchMode - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:137:13-43 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:137:13-43 android:theme - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:138:13-60 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:138:13-60 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:135:13-71 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:135:13-71 service#net.micode.notes.gtask.remote.GTaskSyncService -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:141:9-144:19 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:141:9-144:19 android:exported - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:143:13-37 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:143:13-37 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:142:13-74 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:142:13-74 meta-data#android.app.default_searchable -ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:146:9-148:52 +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:146:9-148:52 android:value - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:148:13-49 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:148:13-49 android:name - ADDED from D:\xueye\xiaominote\note_but_github\app\src\main\AndroidManifest.xml:147:13-58 + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:147:13-58 +activity#net.micode.notes.ui.TrashFolderActivity +ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:150:9-153:20 + android:exported + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:152:13-37 + android:name + ADDED from D:\xueye\softproject\gitProject\src\note_but_github\app\src\main\AndroidManifest.xml:151:13-67 diff --git a/src/note_but_github/app/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin b/src/note_but_github/app/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin index 472c1e2..91c97e2 100644 Binary files a/src/note_but_github/app/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin and b/src/note_but_github/app/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin differ diff --git a/src/note_but_github/app/src/main/AndroidManifest.xml b/src/note_but_github/app/src/main/AndroidManifest.xml index e5c7d47..b2818d0 100644 --- a/src/note_but_github/app/src/main/AndroidManifest.xml +++ b/src/note_but_github/app/src/main/AndroidManifest.xml @@ -146,5 +146,11 @@ + + + + diff --git a/src/note_but_github/app/src/main/java/net/micode/notes/model/WorkingNote.java b/src/note_but_github/app/src/main/java/net/micode/notes/model/WorkingNote.java index be081e4..a1a2455 100644 --- a/src/note_but_github/app/src/main/java/net/micode/notes/model/WorkingNote.java +++ b/src/note_but_github/app/src/main/java/net/micode/notes/model/WorkingNote.java @@ -38,7 +38,7 @@ public class WorkingNote { // Note Id private long mNoteId; // Note content - private String mContent; + public String mContent; // Note mode private int mMode; diff --git a/src/note_but_github/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java b/src/note_but_github/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java index 4ae70ee..d2745ae 100644 --- a/src/note_but_github/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java +++ b/src/note_but_github/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java @@ -22,19 +22,30 @@ import android.app.AlertDialog; import android.app.PendingIntent; import android.app.SearchManager; import android.appwidget.AppWidgetManager; +import android.content.ContentResolver; import android.content.ContentUris; +import android.content.ContentValues; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Paint; +import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; +import android.provider.DocumentsContract; +import android.provider.MediaStore; +import android.text.Editable; import android.text.Spannable; import android.text.SpannableString; import android.text.TextUtils; import android.text.format.DateUtils; import android.text.style.BackgroundColorSpan; +import android.text.style.ImageSpan; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; @@ -47,6 +58,7 @@ import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.EditText; +import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -65,6 +77,7 @@ import net.micode.notes.ui.NoteEditText.OnTextViewChangeListener; import net.micode.notes.widget.NoteWidgetProvider_2x; import net.micode.notes.widget.NoteWidgetProvider_4x; +import java.io.FileNotFoundException; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -148,7 +161,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, private String mUserQuery; private Pattern mPattern; - +/* @Override protected void onCreate(Bundle savedInstanceState) { // 调用父类的onCreate方法,这是Activity生命周期中的第一个方法,用于进行Activity的初始化操作 @@ -164,7 +177,36 @@ public class NoteEditActivity extends Activity implements OnClickListener, // 初始化资源 initResources(); } +*/ + private final int PHOTO_REQUEST=1; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + this.setContentView(R.layout.note_edit); + if (savedInstanceState == null && !initActivityState(getIntent())) { + finish(); + return; + } + initResources(); + //根据id获取添加图片按钮 + final ImageButton add_img_btn = (ImageButton) findViewById(R.id.add_img_btn); + //为点击图片按钮设置监听器 + add_img_btn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Log.d(TAG, "onClick: click add image button"); + //ACTION_GET_CONTENT: 允许用户选择特殊种类的数据,并返回(特殊种类的数据:照一张相片或录一段音) + Intent loadImage = new Intent(Intent.ACTION_GET_CONTENT); + //Category属性用于指定当前动作(Action)被执行的环境. + //CATEGORY_OPENABLE; 用来指示一个ACTION_GET_CONTENT的intent + loadImage.addCategory(Intent.CATEGORY_OPENABLE); + loadImage.setType("image/*"); + startActivityForResult(loadImage, PHOTO_REQUEST); + } + }); + } /** * Current activity may be killed when the memory is low. Once it is killed, for another time * user load this activity, we should restore the former state @@ -316,6 +358,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, * is not ready */ showAlertHeader(); + convertToImage(); } private void showAlertHeader() { @@ -335,6 +378,45 @@ public class NoteEditActivity extends Activity implements OnClickListener, }; } + private void convertToImage() { + NoteEditText noteEditText = (NoteEditText) findViewById(R.id.note_edit_view); //获取当前的edit + Editable editable = noteEditText.getText();//1.获取text + String noteText = editable.toString(); //2.将note内容转换为字符串 + int length = editable.length(); //内容的长度 + //3.截取img片段 [local]+uri+[local],提取uri + for(int i = 0; i < length; i++) { + for(int j = i; j < length; j++) { + String img_fragment = noteText.substring(i, j+1); //img_fragment:关于图片路径的片段 + if(img_fragment.length() > 15 && img_fragment.endsWith("[/local]") && img_fragment.startsWith("[local]")){ + int limit = 7; //[local]为7个字符 + //[local][/local]共15个字符,剩下的为真正的path长度 + int len = img_fragment.length()-15; + //从[local]之后的len个字符就是path + String path = img_fragment.substring(limit,limit+len);//获取到了图片路径 + Bitmap bitmap = null; + Log.d(TAG, "图片的路径是:"+path); + try { + bitmap = BitmapFactory.decodeFile(path);//将图片路径解码为图片格式 + } catch (Exception e) { + e.printStackTrace(); + } + if(bitmap!=null){ //若图片存在 + Log.d(TAG, "图片不为null"); + ImageSpan imageSpan = new ImageSpan(NoteEditActivity.this, bitmap); + //4.创建一个SpannableString对象,以便插入用ImageSpan对象封装的图像 + String ss = "[local]" + path + "[/local]"; + SpannableString spannableString = new SpannableString(ss); + //5.将指定的标记对象附加到文本的开始...结束范围 + spannableString.setSpan(imageSpan, 0, ss.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + Log.d(TAG, "Create spannable string success!"); + Editable edit_text = noteEditText.getEditableText(); + edit_text.delete(i,i+len+15); //6.删掉图片路径的文字 + edit_text.insert(i, spannableString); //7.在路径的起始位置插入图片 + } + } + } + } + } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); @@ -618,36 +700,24 @@ public class NoteEditActivity extends Activity implements OnClickListener, // 删除当前笔记的方法 private void deleteCurrentNote() { - // 检查当前笔记是否存在于数据库中 if (mWorkingNote.existInDatabase()) { - // 创建一个HashSet来存储要删除的笔记ID HashSet ids = new HashSet(); - // 获取当前笔记的ID long id = mWorkingNote.getNoteId(); - // 检查笔记ID是否为根文件夹ID if (id != Notes.ID_ROOT_FOLDER) { - // 如果不是根文件夹ID,则将ID添加到HashSet中 ids.add(id); } else { - // 如果是根文件夹ID,则记录错误日志 Log.d(TAG, "Wrong note id, should not happen"); } - // 检查当前是否处于同步模式 - if (!isSyncMode()) { - // 如果不是同步模式,则批量删除笔记 - if (!DataUtils.batchDeleteNotes(getContentResolver(), ids)) { - // 如果删除失败,则记录错误日志 - Log.e(TAG, "Delete Note error"); - } - } else { - // 如果是同步模式,则将笔记移动到垃圾文件夹 - if (!DataUtils.batchMoveToFolder(getContentResolver(), ids, Notes.ID_TRASH_FOLER)) { - // 如果移动失败,则记录错误日志 - Log.e(TAG, "Move notes to trash folder error, should not happens"); - } +// if (!isSyncMode()) { +// if (!DataUtils.batchDeleteNotes(getContentResolver(), ids)) { +// Log.e(TAG, "Delete Note error"); +// } +// } else { + if (!DataUtils.batchMoveToFolder(getContentResolver(), ids, Notes.ID_TRASH_FOLER)) { + Log.e(TAG, "Move notes to trash folder error, should not happens"); } +// } } - // 标记当前笔记为已删除 mWorkingNote.markDeleted(true); } @@ -840,6 +910,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery)); mEditTextList.setVisibility(View.GONE); mNoteEditor.setVisibility(View.VISIBLE); + convertToImage(); } } @@ -931,4 +1002,146 @@ public class NoteEditActivity extends Activity implements OnClickListener, private void showToast(int resId, int duration) { Toast.makeText(this, resId, duration).show(); } + + //获取文件的real path + public String getPath(final Context context, final Uri uri) { + + final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; + + // DocumentProvider + if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { + // ExternalStorageProvider +// if (isExternalStorageDocument(uri)) { +// final String docId = DocumentsContract.getDocumentId(uri); +// final String[] split = docId.split(":"); +// final String type = split[0]; +// +// if ("primary".equalsIgnoreCase(type)) { +// return Environment.getExternalStorageDirectory() + "/" + split[1]; +// } +// } +// // DownloadsProvider +// else if (isDownloadsDocument(uri)) { +// final String id = DocumentsContract.getDocumentId(uri); +// final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); +// return getDataColumn(context, contentUri, null, null); +// } + // MediaProvider +// else + if (isMediaDocument(uri)) { + final String docId = DocumentsContract.getDocumentId(uri); + final String[] split = docId.split(":"); + final String type = split[0]; + + Uri contentUri = null; + if ("image".equals(type)) { + contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; + } + + final String selection = "_id=?"; + final String[] selectionArgs = new String[]{split[1]}; + + return getDataColumn(context, contentUri, selection, selectionArgs); + } + } + // Media + else if ("content".equalsIgnoreCase(uri.getScheme())) { + return getDataColumn(context, uri, null, null); + } + // File + else if ("file".equalsIgnoreCase(uri.getScheme())) { + return uri.getPath(); + } + return null; + } + + + //获取数据列_获取此 Uri 的数据列的值。这对MediaStore Uris 和其他基于文件的 ContentProvider。 + public String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) { + + Cursor cursor = null; + final String column = "_data"; + final String[] projection = {column}; + + try { + cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null); + if (cursor != null && cursor.moveToFirst()) { + final int column_index = cursor.getColumnIndexOrThrow(column); + return cursor.getString(column_index); + } + } finally { + if (cursor != null) + cursor.close(); + } + return null; + } + + + //是否为外部存储文件 +// public boolean isExternalStorageDocument(Uri uri) { +// return "com.android.externalstorage.documents".equals(uri.getAuthority()); +// } +// +// //是否为下载文件 +// public boolean isDownloadsDocument(Uri uri) { +// return "com.android.providers.downloads.documents".equals(uri.getAuthority()); +// } + + //是否为媒体文件 + public boolean isMediaDocument(Uri uri) { + return "com.android.providers.media.documents".equals(uri.getAuthority()); + } + + protected void onActivityResult(int requestCode, int resultCode, Intent intent) { + super.onActivityResult(requestCode, resultCode, intent); + ContentResolver resolver = getContentResolver(); + switch (requestCode) { + case PHOTO_REQUEST: + Uri originalUri = intent.getData(); //1.获得图片的真实路径 + Bitmap bitmap = null; + try { + bitmap = BitmapFactory.decodeStream(resolver.openInputStream(originalUri));//2.解码图片 + } catch (FileNotFoundException e) { + Log.d(TAG, "onActivityResult: get file_exception"); + e.printStackTrace(); + } + + if (bitmap != null) { + //3.根据Bitmap对象创建ImageSpan对象 + Log.d(TAG, "onActivityResult: bitmap is not null"); + ImageSpan imageSpan = new ImageSpan(NoteEditActivity.this, bitmap); + String path = getPath(this, originalUri); + //4.使用[local][/local]将path括起来,用于之后方便识别图片路径在note中的位置 + String img_fragment = "[local]" + path + "[/local]"; + //创建一个SpannableString对象,以便插入用ImageSpan对象封装的图像 + SpannableString spannableString = new SpannableString(img_fragment); + spannableString.setSpan(imageSpan, 0, img_fragment.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + //5.将选择的图片追加到EditText中光标所在位置 + NoteEditText e = (NoteEditText) findViewById(R.id.note_edit_view); + int index = e.getSelectionStart(); //获取光标所在位置 + Log.d(TAG, "Index是: " + index); + Editable edit_text = e.getEditableText(); + edit_text.insert(index, spannableString); //将图片插入到光标所在位置 + + mWorkingNote.mContent = e.getText().toString(); + //6.把改动提交到数据库中,两个数据库表都要改的 + ContentResolver contentResolver = getContentResolver(); + ContentValues contentValues = new ContentValues(); + final long id = mWorkingNote.getNoteId(); + contentValues.put("snippet", mWorkingNote.mContent); + contentResolver.update(Uri.parse("content://micode_notes/note"), contentValues, "_id=?", new String[]{"" + id}); + ContentValues contentValues1 = new ContentValues(); + contentValues1.put("content", mWorkingNote.mContent); + contentResolver.update(Uri.parse("content://micode_notes/data"), contentValues1, "mime_type=? and note_id=?", new String[]{"vnd.android.cursor.item/text_note", "" + id}); + + } else { + Toast.makeText(NoteEditActivity.this, "获取图片失败", Toast.LENGTH_SHORT).show(); + } + break; + default: + break; + } + } + // + } diff --git a/src/note_but_github/app/src/main/java/net/micode/notes/ui/NotesListActivity.java b/src/note_but_github/app/src/main/java/net/micode/notes/ui/NotesListActivity.java index 690c3a2..0f02a2f 100644 --- a/src/note_but_github/app/src/main/java/net/micode/notes/ui/NotesListActivity.java +++ b/src/note_but_github/app/src/main/java/net/micode/notes/ui/NotesListActivity.java @@ -16,6 +16,7 @@ package net.micode.notes.ui; +import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; @@ -479,22 +480,28 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } // 定义一个私有方法用于批量删除 + @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"); + if (mCurrentFolderId == Notes.ID_TRASH_FOLER){ + // if in trash, delete notes directly + if (DataUtils.batchDeleteNotes(mContentResolver, mNotesListAdapter + .getSelectedItemIds())) { + } else { + Log.e(TAG, "Delete notes error, should not happens"); + } } - } else { + else{ + //move to trash + if (!DataUtils.batchMoveToFolder(mContentResolver, mNotesListAdapter + .getSelectedItemIds(), Notes.ID_TRASH_FOLER)) { + Log.e(TAG, "Move notes to trash folder error, should not happens"); + } + } + }else{ // in sync mode, we'll move the deleted note into the trash // folder if (!DataUtils.batchMoveToFolder(mContentResolver, mNotesListAdapter @@ -520,6 +527,8 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt }.execute(); } + + private void deleteFolder(long folderId) { if (folderId == Notes.ID_ROOT_FOLDER) { Log.e(TAG, "Wrong folder id, should not happen " + folderId); @@ -530,11 +539,11 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt ids.add(folderId); HashSet widgets = DataUtils.getFolderNoteWidget(mContentResolver, folderId); - if (!isSyncMode()) { - // if not synced, delete folder directly + if (mCurrentFolderId == Notes.ID_TRASH_FOLER) { + // if in trash, delete folder directly DataUtils.batchDeleteNotes(mContentResolver, ids); } else { - // in sync mode, we'll move the deleted folder into the trash folder + //move the deleted folder into the trash folder DataUtils.batchMoveToFolder(mContentResolver, ids, Notes.ID_TRASH_FOLER); } if (widgets != null) { @@ -547,6 +556,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } } + private void openNode(NoteItemData data) { Intent intent = new Intent(this, NoteEditActivity.class); intent.setAction(Intent.ACTION_VIEW); @@ -826,12 +836,30 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt case R.id.menu_search: onSearchRequested(); break; + case R.id.menu_trash: + Intent intent=new Intent(NotesListActivity.this,TrashFolderActivity.class); + startActivity(intent); + break; default: break; } return true; } + private void openTrashFolder() { + // 将当前列表的编辑状态设置为子文件夹模式 + mState = ListEditState.SUB_FOLDER; + // 将当前文件夹 ID 设置为回收站的 ID + mCurrentFolderId = Notes.ID_TRASH_FOLER; + //查询已删除笔记的列表 + startAsyncNotesListQuery(); + // 不显示底部的“写便签” + mAddNewNote.setVisibility(View.GONE); + // 将顶部栏设置为 data.getSnippet 文件夹名称 + mTitleBar.setText(NotesListActivity.this + .getString(R.string.menu_trash)); + mTitleBar.setVisibility(View.VISIBLE); + } @Override public boolean onSearchRequested() { startSearch(null, false, null /* appData */, false); diff --git a/src/note_but_github/app/src/main/res/layout/note_edit.xml b/src/note_but_github/app/src/main/res/layout/note_edit.xml index 10b2aa7..8a089b9 100644 --- a/src/note_but_github/app/src/main/res/layout/note_edit.xml +++ b/src/note_but_github/app/src/main/res/layout/note_edit.xml @@ -40,6 +40,7 @@ android:layout_marginRight="8dip" android:textAppearance="@style/TextAppearanceSecondaryItem" /> + - - + + + + + + + diff --git a/src/note_but_github/app/src/main/res/menu/note_list.xml b/src/note_but_github/app/src/main/res/menu/note_list.xml index 42ea736..a2e8b6e 100644 --- a/src/note_but_github/app/src/main/res/menu/note_list.xml +++ b/src/note_but_github/app/src/main/res/menu/note_list.xml @@ -36,4 +36,8 @@ + + diff --git a/src/note_but_github/app/src/main/res/values/strings.xml b/src/note_but_github/app/src/main/res/values/strings.xml index 55df868..d37e881 100644 --- a/src/note_but_github/app/src/main/res/values/strings.xml +++ b/src/note_but_github/app/src/main/res/values/strings.xml @@ -17,6 +17,13 @@ + Trash Can + recycle_list + error_delete_or_recover + alert_message_recover + alert_message_realdelete + 恢复 + 彻底删除 Notes Notes 2x2 Notes 4x4 diff --git a/src/note_but_github/app/src/main/res/values/styles.xml b/src/note_but_github/app/src/main/res/values/styles.xml index d750e65..49b06d9 100644 --- a/src/note_but_github/app/src/main/res/values/styles.xml +++ b/src/note_but_github/app/src/main/res/values/styles.xml @@ -64,6 +64,7 @@ + \ No newline at end of file diff --git a/src/src/net/micode/notes/data/Contact.java b/src/src/net/micode/notes/data/Contact.java deleted file mode 100644 index f16618e..0000000 --- a/src/src/net/micode/notes/data/Contact.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * 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.content.Context; -import android.database.Cursor; -import android.provider.ContactsContract.CommonDataKinds.Phone; -import android.provider.ContactsContract.Data; -import android.telephony.PhoneNumberUtils; -import android.util.Log; - -import java.util.HashMap; - -public class Contact { - // 定义一个静态的HashMap,用于缓存联系人信息 - private static HashMap sContactCache; - // 定义一个静态的字符串,用于标记日志信息 - private static final String TAG = "Contact"; - - // 定义一个静态的字符串,用于查询联系人信息的SQL语句 - private static final String CALLER_ID_SELECTION = "PHONE_NUMBERS_EQUAL(" + Phone.NUMBER - + ",?) AND " + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'" - + " AND " + Data.RAW_CONTACT_ID + " IN " - + "(SELECT raw_contact_id " - + " FROM phone_lookup" - + " WHERE min_match = '+')"; - - // 根据电话号码获取联系人信息 - public static String getContact(Context context, String phoneNumber) { - // 如果缓存为空,则创建一个新的HashMap - if(sContactCache == null) { - sContactCache = new HashMap(); - } - - // 如果缓存中已经存在该电话号码的联系人信息,则直接返回 - if(sContactCache.containsKey(phoneNumber)) { - return sContactCache.get(phoneNumber); - } - - // 替换SQL语句中的占位符,生成最终的查询语句 - String selection = CALLER_ID_SELECTION.replace("+", - PhoneNumberUtils.toCallerIDMinMatch(phoneNumber)); - // 执行查询操作 - Cursor cursor = context.getContentResolver().query( - Data.CONTENT_URI, - new String [] { Phone.DISPLAY_NAME }, - selection, - new String[] { phoneNumber }, - null); - - // 如果查询结果不为空,则获取联系人信息并缓存 - if (cursor != null && cursor.moveToFirst()) { - try { - String name = cursor.getString(0); - sContactCache.put(phoneNumber, name); - return name; - } catch (IndexOutOfBoundsException e) { - // 如果获取联系人信息失败,则打印错误日志 - Log.e(TAG, " Cursor get string error " + e.toString()); - return null; - } finally { - // 关闭查询结果 - cursor.close(); - } - } else { - // 如果没有匹配的联系人信息,则打印日志 - Log.d(TAG, "No contact matched with number:" + phoneNumber); - return null; - } - } -} diff --git a/src/src/net/micode/notes/data/Notes.java b/src/src/net/micode/notes/data/Notes.java deleted file mode 100644 index c7b0e30..0000000 --- a/src/src/net/micode/notes/data/Notes.java +++ /dev/null @@ -1,287 +0,0 @@ -/* - * 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.net.Uri; -public class Notes { - // 定义Notes类的常量 - public static final String AUTHORITY = "micode_notes"; - public static final String TAG = "Notes"; - public static final int TYPE_NOTE = 0; - public static final int TYPE_FOLDER = 1; - public static final int TYPE_SYSTEM = 2; - - /** - * Following IDs are system folders' identifiers - * {@link Notes#ID_ROOT_FOLDER } is default folder - * {@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; - public static final int ID_TRASH_FOLER = -3; - - // 定义Intent的额外参数 - public static final String INTENT_EXTRA_ALERT_DATE = "net.micode.notes.alert_date"; - public static final String INTENT_EXTRA_BACKGROUND_ID = "net.micode.notes.background_color_id"; - public static final String INTENT_EXTRA_WIDGET_ID = "net.micode.notes.widget_id"; - public static final String INTENT_EXTRA_WIDGET_TYPE = "net.micode.notes.widget_type"; - public static final String INTENT_EXTRA_FOLDER_ID = "net.micode.notes.folder_id"; - public static final String INTENT_EXTRA_CALL_DATE = "net.micode.notes.call_date"; - - // 定义Widget的类型 - public static final int TYPE_WIDGET_INVALIDE = -1; - public static final int TYPE_WIDGET_2X = 0; - public static final int TYPE_WIDGET_4X = 1; - - // 定义DataConstants类 - 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 - */ - public static final Uri CONTENT_NOTE_URI = Uri.parse("content://" + AUTHORITY + "/note"); - - /** - * Uri to query 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)

- */ - public static final String ID = "_id"; - - /** - * The parent's id for note or folder - *

Type: INTEGER (long)

- */ - public static final String PARENT_ID = "parent_id"; - - /** - * Created data for note or folder - *

Type: INTEGER (long)

- */ - public static final String CREATED_DATE = "created_date"; - - /** - * Latest modified date - *

Type: INTEGER (long)

- */ - public static final String MODIFIED_DATE = "modified_date"; - - - /** - * Alert date - *

Type: INTEGER (long)

- */ - public static final String ALERTED_DATE = "alert_date"; - - /** - * Folder's name or text content of note - *

Type: TEXT

- */ - public static final String SNIPPET = "snippet"; - - /** - * Note's widget id - *

Type: INTEGER (long)

- */ - public static final String WIDGET_ID = "widget_id"; - - /** - * Note's widget type - *

Type: INTEGER (long)

- */ - public static final String WIDGET_TYPE = "widget_type"; - - /** - * Note's background color's id - *

Type: INTEGER (long)

- */ - public static final String BG_COLOR_ID = "bg_color_id"; - - /** - * For text note, it doesn't has attachment, for multi-media - * note, it has at least one attachment - *

Type: INTEGER

- */ - public static final String HAS_ATTACHMENT = "has_attachment"; - - /** - * Folder's count of notes - *

Type: INTEGER (long)

- */ - public static final String NOTES_COUNT = "notes_count"; - - /** - * The file type: folder or note - *

Type: INTEGER

- */ - public static final String TYPE = "type"; - - /** - * The last sync id - *

Type: INTEGER (long)

- */ - public static final String SYNC_ID = "sync_id"; - - /** - * Sign to indicate local modified or not - *

Type: INTEGER

- */ - public static final String LOCAL_MODIFIED = "local_modified"; - - /** - * Original parent id before moving into temporary folder - *

Type : INTEGER

- */ - public static final String ORIGIN_PARENT_ID = "origin_parent_id"; - - /** - * The gtask id - *

Type : TEXT

- */ - public static final String GTASK_ID = "gtask_id"; - - /** - * The version code - *

Type : INTEGER (long)

- */ - public static final String VERSION = "version"; - } - - // 定义DataColumns接口 - public interface DataColumns { - /** - * The unique ID for a row - *

Type: INTEGER (long)

- */ - public static final String ID = "_id"; - - /** - * The MIME type of the item represented by this row. - *

Type: Text

- */ - public static final String MIME_TYPE = "mime_type"; - - /** - * The reference id to note that this data belongs to - *

Type: INTEGER (long)

- */ - public static final String NOTE_ID = "note_id"; - - /** - * Created data for note or folder - *

Type: INTEGER (long)

- */ - public static final String CREATED_DATE = "created_date"; - - /** - * Latest modified date - *

Type: INTEGER (long)

- */ - public static final String MODIFIED_DATE = "modified_date"; - - /** - * Data's content - *

Type: TEXT

- */ - public static final String CONTENT = "content"; - - - /** - * Generic data column, the meaning is {@link #MIMETYPE} specific, used for - * integer data type - *

Type: INTEGER

- */ - public static final String DATA1 = "data1"; - - /** - * Generic data column, the meaning is {@link #MIMETYPE} specific, used for - * integer data type - *

Type: INTEGER

- */ - public static final String DATA2 = "data2"; - - /** - * Generic data column, the meaning is {@link #MIMETYPE} specific, used for - * TEXT data type - *

Type: TEXT

- */ - public static final String DATA3 = "data3"; - - /** - * Generic data column, the meaning is {@link #MIMETYPE} specific, used for - * TEXT data type - *

Type: TEXT

- */ - public static final String DATA4 = "data4"; - - /** - * Generic data column, the meaning is {@link #MIMETYPE} specific, used for - * TEXT data type - *

Type: TEXT

- */ - public static final String DATA5 = "data5"; - } - - // 定义TextNote类 - public static final class TextNote implements DataColumns { - /** - * Mode to indicate the text in check list mode or not - *

Type: Integer 1:check list mode 0: normal mode

- */ - public static final String MODE = DATA1; - - public static final int MODE_CHECK_LIST = 1; - - public static final String CONTENT_TYPE = "vnd.android.cursor.dir/text_note"; - - 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"); - } - - // 定义CallNote类 - public static final class CallNote implements DataColumns { - /** - * Call date for this record - *

Type: INTEGER (long)

- */ - public static final String CALL_DATE = DATA1; - - /** - * Phone number for this record - *

Type: TEXT

- */ - public static final String PHONE_NUMBER = DATA3; - - public static final String CONTENT_TYPE = "vnd.android.cursor.dir/call_note"; - - 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"); - } -} diff --git a/src/src/net/micode/notes/data/NotesDatabaseHelper.java b/src/src/net/micode/notes/data/NotesDatabaseHelper.java deleted file mode 100644 index 95ae279..0000000 --- a/src/src/net/micode/notes/data/NotesDatabaseHelper.java +++ /dev/null @@ -1,426 +0,0 @@ -/* - * 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.content.ContentValues; -import android.content.Context; -import android.database.sqlite.SQLiteDatabase; -import android.database.sqlite.SQLiteOpenHelper; -import android.util.Log; - -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; - - // 表名接口 - public interface TABLE { - public static final String NOTE = "note"; - - public static final String DATA = "data"; - } - - // 日志标签 - private static final String TAG = "NotesDatabaseHelper"; - - // 单例模式 - private static NotesDatabaseHelper mInstance; - - // 创建note表的SQL语句 - private static final String CREATE_NOTE_TABLE_SQL = - "CREATE TABLE " + TABLE.NOTE + "(" + - NoteColumns.ID + " INTEGER PRIMARY KEY," + - NoteColumns.PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.ALERTED_DATE + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.BG_COLOR_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + - NoteColumns.HAS_ATTACHMENT + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + - NoteColumns.NOTES_COUNT + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.SNIPPET + " TEXT NOT NULL DEFAULT ''," + - NoteColumns.TYPE + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.WIDGET_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.WIDGET_TYPE + " INTEGER NOT NULL DEFAULT -1," + - NoteColumns.SYNC_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.LOCAL_MODIFIED + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.ORIGIN_PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.GTASK_ID + " TEXT NOT NULL DEFAULT ''," + - NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0" + - ")"; - - // 创建data表的SQL语句 - private static final String CREATE_DATA_TABLE_SQL = - "CREATE TABLE " + TABLE.DATA + "(" + - DataColumns.ID + " INTEGER PRIMARY KEY," + - DataColumns.MIME_TYPE + " TEXT NOT NULL," + - DataColumns.NOTE_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + - NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + - DataColumns.CONTENT + " TEXT NOT NULL DEFAULT ''," + - DataColumns.DATA1 + " INTEGER," + - DataColumns.DATA2 + " INTEGER," + - DataColumns.DATA3 + " TEXT NOT NULL DEFAULT ''," + - DataColumns.DATA4 + " TEXT NOT NULL DEFAULT ''," + - DataColumns.DATA5 + " TEXT NOT NULL DEFAULT ''" + - ")"; - - // 创建data_note_id索引的SQL语句 - private static final String CREATE_DATA_NOTE_ID_INDEX_SQL = - "CREATE INDEX IF NOT EXISTS note_id_index ON " + - TABLE.DATA + "(" + DataColumns.NOTE_ID + ");"; - - /** - * Increase folder's note count when move note to the folder - */ - private static final String NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = - "CREATE TRIGGER increase_folder_count_on_update "+ - " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + - " BEGIN " + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + - " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + - " END"; - - /** - * Decrease folder's note count when move note from folder - */ - private static final String NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = - "CREATE TRIGGER decrease_folder_count_on_update " + - " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + - " BEGIN " + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + - " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + - " AND " + NoteColumns.NOTES_COUNT + ">0" + ";" + - " END"; - - /** - * Increase folder's note count when insert new note to the folder - */ - private static final String NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER = - "CREATE TRIGGER increase_folder_count_on_insert " + - " AFTER INSERT ON " + TABLE.NOTE + - " BEGIN " + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + - " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + - " END"; - - /** - * Decrease folder's note count when delete note from the folder - */ - private static final String NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER = - "CREATE TRIGGER decrease_folder_count_on_delete " + - " AFTER DELETE ON " + TABLE.NOTE + - " BEGIN " + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + - " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + - " AND " + NoteColumns.NOTES_COUNT + ">0;" + - " END"; - - /** - * Update note's content when insert data with type {@link DataConstants#NOTE} - */ - private static final String DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER = - "CREATE TRIGGER update_note_content_on_insert " + - " AFTER INSERT ON " + TABLE.DATA + - " WHEN new." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + - " BEGIN" + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + - " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + - " END"; - - /** - * Update note's content when data with {@link DataConstants#NOTE} type has changed - */ - private static final String DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER = - "CREATE TRIGGER update_note_content_on_update " + - " AFTER UPDATE ON " + TABLE.DATA + - " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + - " BEGIN" + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + - " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + - " END"; - - /** - * Update note's content when data with {@link DataConstants#NOTE} type has deleted - */ - private static final String DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER = - "CREATE TRIGGER update_note_content_on_delete " + - " AFTER delete ON " + TABLE.DATA + - " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + - " BEGIN" + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.SNIPPET + "=''" + - " WHERE " + NoteColumns.ID + "=old." + DataColumns.NOTE_ID + ";" + - " END"; - - /** - * Delete datas belong to note which has been deleted - */ - private static final String NOTE_DELETE_DATA_ON_DELETE_TRIGGER = - "CREATE TRIGGER delete_data_on_delete " + - " AFTER DELETE ON " + TABLE.NOTE + - " BEGIN" + - " DELETE FROM " + TABLE.DATA + - " WHERE " + DataColumns.NOTE_ID + "=old." + NoteColumns.ID + ";" + - " END"; - - /** - * Delete notes belong to folder which has been deleted - */ - private static final String FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER = - "CREATE TRIGGER folder_delete_notes_on_delete " + - " AFTER DELETE ON " + TABLE.NOTE + - " BEGIN" + - " DELETE FROM " + TABLE.NOTE + - " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + - " END"; - - /** - * Move notes belong to folder which has been moved to trash folder - */ - private static final String FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER = - "CREATE TRIGGER folder_move_notes_on_trash " + - " AFTER UPDATE ON " + TABLE.NOTE + - " WHEN new." + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + - " BEGIN" + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + - " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + - " END"; - - // 构造函数,用于初始化NotesDatabaseHelper对象 - public NotesDatabaseHelper(Context context) { - // 调用父类的构造函数,传入上下文、数据库名称、游标工厂、数据库版本号 - super(context, DB_NAME, null, DB_VERSION); - } - - // 创建note表 - public void createNoteTable(SQLiteDatabase db) { - // 执行创建note表的SQL语句 - db.execSQL(CREATE_NOTE_TABLE_SQL); - // 重新创建note表的触发器 - reCreateNoteTableTriggers(db); - // 创建系统文件夹 - createSystemFolder(db); - // 打印日志,note表已创建 - Log.d(TAG, "note table has been created"); - } - - // 重新创建笔记表触发器 - private void reCreateNoteTableTriggers(SQLiteDatabase db) { - // 删除增加文件夹计数触发器 - db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_update"); - // 删除减少文件夹计数触发器 - db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_update"); - // 删除减少文件夹计数触发器 - db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_delete"); - // 删除删除数据触发器 - db.execSQL("DROP TRIGGER IF EXISTS delete_data_on_delete"); - // 删除增加文件夹计数触发器 - db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_insert"); - // 删除文件夹删除笔记触发器 - db.execSQL("DROP TRIGGER IF EXISTS folder_delete_notes_on_delete"); - // 删除文件夹移动笔记触发器 - db.execSQL("DROP TRIGGER IF EXISTS folder_move_notes_on_trash"); - - // 创建增加文件夹计数触发器 - db.execSQL(NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER); - // 创建减少文件夹计数触发器 - db.execSQL(NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER); - // 创建减少文件夹计数触发器 - db.execSQL(NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER); - // 创建删除数据触发器 - db.execSQL(NOTE_DELETE_DATA_ON_DELETE_TRIGGER); - // 创建增加文件夹计数触发器 - 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); - } - - private void createSystemFolder(SQLiteDatabase db) { - ContentValues values = new ContentValues(); - - /** - * call record foler for call notes - */ - values.put(NoteColumns.ID, Notes.ID_CALL_RECORD_FOLDER); - values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); - db.insert(TABLE.NOTE, null, values); - - /** - * root folder which is default folder - */ - values.clear(); - values.put(NoteColumns.ID, Notes.ID_ROOT_FOLDER); - values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); - db.insert(TABLE.NOTE, null, values); - - /** - * temporary folder which is used for moving note - */ - values.clear(); - values.put(NoteColumns.ID, Notes.ID_TEMPARAY_FOLDER); - values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); - db.insert(TABLE.NOTE, null, values); - - /** - * create trash folder - */ - values.clear(); - 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) { - // 执行创建数据表的SQL语句 - db.execSQL(CREATE_DATA_TABLE_SQL); - // 重新创建数据表触发器 - reCreateDataTableTriggers(db); - // 执行创建数据表索引的SQL语句 - db.execSQL(CREATE_DATA_NOTE_ID_INDEX_SQL); - // 打印日志,表示数据表已经创建 - Log.d(TAG, "data table has been created"); - } - - // 重新创建数据表触发器 - private void reCreateDataTableTriggers(SQLiteDatabase db) { - // 删除update_note_content_on_insert触发器 - db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_insert"); - // 删除update_note_content_on_update触发器 - db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_update"); - // 删除update_note_content_on_delete触发器 - db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_delete"); - - // 创建update_note_content_on_insert触发器 - db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER); - // 创建update_note_content_on_update触发器 - db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER); - // 创建update_note_content_on_delete触发器 - db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER); - } - - // 获取NotesDatabaseHelper实例 - static synchronized NotesDatabaseHelper getInstance(Context context) { - // 如果mInstance为空,则创建一个新的NotesDatabaseHelper实例 - if (mInstance == null) { - mInstance = new NotesDatabaseHelper(context); - } - // 返回mInstance - return mInstance; - } - - @Override - public void onCreate(SQLiteDatabase db) { - // 创建Note表 - createNoteTable(db); - // 创建Data表 - createDataTable(db); - } - - @Override - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - // 定义两个布尔变量,用于判断是否需要重新创建触发器和是否跳过v2版本 - boolean reCreateTriggers = false; - boolean skipV2 = false; - - // 如果旧版本是1,则升级到v2版本,并跳过v2版本 - if (oldVersion == 1) { - upgradeToV2(db); - skipV2 = true; // this upgrade including the upgrade from v2 to v3 - oldVersion++; - } - - // 如果旧版本是2且没有跳过v2版本,则升级到v3版本,并重新创建触发器 - if (oldVersion == 2 && !skipV2) { - upgradeToV3(db); - reCreateTriggers = true; - oldVersion++; - } - - // 如果旧版本是3,则升级到v4版本 - if (oldVersion == 3) { - upgradeToV4(db); - oldVersion++; - } - - // 如果需要重新创建触发器,则重新创建触发器 - if (reCreateTriggers) { - reCreateNoteTableTriggers(db); - reCreateDataTableTriggers(db); - } - - // 如果旧版本不等于新版本,则抛出异常 - if (oldVersion != newVersion) { - throw new IllegalStateException("Upgrade notes database to version " + newVersion - + "fails"); - } - } - - // 升级数据库到V2版本 - private void upgradeToV2(SQLiteDatabase db) { - // 删除旧版本的NOTE表 - db.execSQL("DROP TABLE IF EXISTS " + TABLE.NOTE); - // 删除旧版本的DATA表 - db.execSQL("DROP TABLE IF EXISTS " + TABLE.DATA); - // 创建新版本的NOTE表 - createNoteTable(db); - // 创建新版本的DATA表 - createDataTable(db); - } - - // 升级到V3版本 - private void upgradeToV3(SQLiteDatabase db) { - - // 删除更新笔记修改日期的触发器 - db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_insert"); - db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_delete"); - db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_update"); - - // 在笔记表中添加GTASK_ID列 - db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.GTASK_ID - + " TEXT NOT NULL DEFAULT ''"); - - // 创建一个垃圾桶文件夹 - ContentValues values = new ContentValues(); - values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); - values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); - db.insert(TABLE.NOTE, null, values); - } - - // 将数据库升级到V4版本 - private void upgradeToV4(SQLiteDatabase db) { - // 执行SQL语句,向NOTE表中添加VERSION列,类型为INTEGER,默认值为0 - db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.VERSION - + " INTEGER NOT NULL DEFAULT 0"); - } -} diff --git a/src/src/net/micode/notes/data/NotesProvider.java b/src/src/net/micode/notes/data/NotesProvider.java deleted file mode 100644 index 8f12ccd..0000000 --- a/src/src/net/micode/notes/data/NotesProvider.java +++ /dev/null @@ -1,368 +0,0 @@ -/* - * 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; -import android.content.ContentValues; -import android.content.Intent; -import android.content.UriMatcher; -import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; -import android.net.Uri; -import android.text.TextUtils; -import android.util.Log; - -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; - - -public class NotesProvider extends ContentProvider { - // 定义UriMatcher - private static final UriMatcher mMatcher; - - // 定义数据库帮助类 - private NotesDatabaseHelper mHelper; - - // 定义日志标签 - private static final String TAG = "NotesProvider"; - - // 定义Uri匹配常量 - private static final int URI_NOTE = 1; - private static final int URI_NOTE_ITEM = 2; - private static final int URI_DATA = 3; - private static final int URI_DATA_ITEM = 4; - - private static final int URI_SEARCH = 5; - private static final int URI_SEARCH_SUGGEST = 6; - - // 静态代码块,初始化UriMatcher - static { - mMatcher = new UriMatcher(UriMatcher.NO_MATCH); - mMatcher.addURI(Notes.AUTHORITY, "note", URI_NOTE); - mMatcher.addURI(Notes.AUTHORITY, "note/#", URI_NOTE_ITEM); - mMatcher.addURI(Notes.AUTHORITY, "data", URI_DATA); - mMatcher.addURI(Notes.AUTHORITY, "data/#", URI_DATA_ITEM); - mMatcher.addURI(Notes.AUTHORITY, "search", URI_SEARCH); - mMatcher.addURI(Notes.AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY, URI_SEARCH_SUGGEST); - mMatcher.addURI(Notes.AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY + "/*", URI_SEARCH_SUGGEST); - } - - /** - * 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. - */ - // 定义搜索结果投影 - 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; - - // 定义搜索查询语句 - 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; - - @Override - public boolean onCreate() { - // 初始化数据库帮助类 - mHelper = NotesDatabaseHelper.getInstance(getContext()); - return true; - } - - @Override - public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, - String sortOrder) { - Cursor c = null; - SQLiteDatabase db = mHelper.getReadableDatabase(); - String id = null; - switch (mMatcher.match(uri)) { - case URI_NOTE: - // 查询所有笔记 - c = db.query(TABLE.NOTE, projection, selection, selectionArgs, null, null, - sortOrder); - break; - case URI_NOTE_ITEM: - // 根据id查询笔记 - id = uri.getPathSegments().get(1); - c = db.query(TABLE.NOTE, projection, NoteColumns.ID + "=" + id - + parseSelection(selection), selectionArgs, null, null, sortOrder); - break; - case URI_DATA: - // 查询所有数据 - c = db.query(TABLE.DATA, projection, selection, selectionArgs, null, null, - sortOrder); - break; - case URI_DATA_ITEM: - // 根据id查询数据 - id = uri.getPathSegments().get(1); - c = db.query(TABLE.DATA, projection, DataColumns.ID + "=" + id - + parseSelection(selection), selectionArgs, null, null, sortOrder); - break; - 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"); - } - - String searchString = null; - if (mMatcher.match(uri) == URI_SEARCH_SUGGEST) { - if (uri.getPathSegments().size() > 1) { - searchString = uri.getPathSegments().get(1); - } - } else { - searchString = uri.getQueryParameter("pattern"); - } - - if (TextUtils.isEmpty(searchString)) { - return null; - } - - try { - searchString = String.format("%%%s%%", searchString); - c = db.rawQuery(NOTES_SNIPPET_SEARCH_QUERY, - new String[] { searchString }); - } catch (IllegalStateException ex) { - Log.e(TAG, "got exception: " + ex.toString()); - } - break; - default: - throw new IllegalArgumentException("Unknown URI " + uri); - } - if (c != null) { - c.setNotificationUri(getContext().getContentResolver(), uri); - } - return c; - } - - @Override - public Uri insert(Uri uri, ContentValues values) { - // 获取可写的数据库 - SQLiteDatabase db = mHelper.getWritableDatabase(); - long dataId = 0, noteId = 0, insertedId = 0; - // 根据传入的uri匹配对应的操作 - switch (mMatcher.match(uri)) { - case URI_NOTE: - // 插入笔记 - insertedId = noteId = db.insert(TABLE.NOTE, null, values); - break; - case URI_DATA: - // 插入数据 - if (values.containsKey(DataColumns.NOTE_ID)) { - noteId = values.getAsLong(DataColumns.NOTE_ID); - } else { - Log.d(TAG, "Wrong data format without note id:" + values.toString()); - } - insertedId = dataId = db.insert(TABLE.DATA, null, values); - break; - default: - throw new IllegalArgumentException("Unknown URI " + uri); - } - // Notify the note uri - if (noteId > 0) { - getContext().getContentResolver().notifyChange( - ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), null); - } - - // Notify the data uri - if (dataId > 0) { - getContext().getContentResolver().notifyChange( - ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId), null); - } - - return ContentUris.withAppendedId(uri, insertedId); - } - - @Override - public int delete(Uri uri, String selection, String[] selectionArgs) { - // 初始化删除计数器 - int count = 0; - // 初始化ID - String id = null; - // 获取可写数据库 - SQLiteDatabase db = mHelper.getWritableDatabase(); - // 初始化删除数据标志 - boolean deleteData = false; - // 根据URI匹配删除操作 - switch (mMatcher.match(uri)) { - case URI_NOTE: - // 添加ID大于0的条件 - selection = "(" + selection + ") AND " + NoteColumns.ID + ">0 "; - // 删除符合条件的记录 - count = db.delete(TABLE.NOTE, selection, selectionArgs); - break; - case URI_NOTE_ITEM: - // 获取URI中的ID - id = uri.getPathSegments().get(1); - /** - * ID that smaller than 0 is system folder which is not allowed to - * trash - */ - long noteId = Long.valueOf(id); - if (noteId <= 0) { - break; - } - count = db.delete(TABLE.NOTE, - NoteColumns.ID + "=" + id + parseSelection(selection), selectionArgs); - break; - case URI_DATA: - count = db.delete(TABLE.DATA, selection, selectionArgs); - deleteData = true; - break; - case URI_DATA_ITEM: - id = uri.getPathSegments().get(1); - count = db.delete(TABLE.DATA, - DataColumns.ID + "=" + id + parseSelection(selection), selectionArgs); - deleteData = true; - break; - default: - throw new IllegalArgumentException("Unknown URI " + uri); - } - if (count > 0) { - if (deleteData) { - getContext().getContentResolver().notifyChange(Notes.CONTENT_NOTE_URI, null); - } - getContext().getContentResolver().notifyChange(uri, null); - } - return count; - } - - @Override - public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { - // 定义更新条数 - int count = 0; - // 定义id - String id = null; - // 获取可写数据库 - SQLiteDatabase db = mHelper.getWritableDatabase(); - // 定义是否更新数据 - boolean updateData = false; - // 根据uri匹配对应的操作 - switch (mMatcher.match(uri)) { - case URI_NOTE: - // 增加note版本号 - increaseNoteVersion(-1, selection, selectionArgs); - // 更新note表 - count = db.update(TABLE.NOTE, values, selection, selectionArgs); - break; - case URI_NOTE_ITEM: - // 获取id - id = uri.getPathSegments().get(1); - // 增加note版本号 - increaseNoteVersion(Long.valueOf(id), selection, selectionArgs); - // 更新note表 - count = db.update(TABLE.NOTE, values, NoteColumns.ID + "=" + id - + parseSelection(selection), selectionArgs); - break; - case URI_DATA: - // 更新data表 - count = db.update(TABLE.DATA, values, selection, selectionArgs); - // 设置更新数据为true - updateData = true; - break; - case URI_DATA_ITEM: - // 获取id - id = uri.getPathSegments().get(1); - // 更新data表 - count = db.update(TABLE.DATA, values, DataColumns.ID + "=" + id - + parseSelection(selection), selectionArgs); - // 设置更新数据为true - updateData = true; - break; - default: - // 抛出异常 - throw new IllegalArgumentException("Unknown URI " + uri); - } - - // 如果更新条数大于0 - if (count > 0) { - // 如果更新数据为true - if (updateData) { - // 通知note表改变 - getContext().getContentResolver().notifyChange(Notes.CONTENT_NOTE_URI, null); - } - // 通知uri改变 - getContext().getContentResolver().notifyChange(uri, null); - } - // 返回更新条数 - return count; - } - - // 解析selection字符串 - private String parseSelection(String selection) { - // 如果selection不为空,则返回" AND (" + selection + ')',否则返回空字符串 - return (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : ""); - } - - // 增加笔记版本号 - private void increaseNoteVersion(long id, String selection, String[] selectionArgs) { - // 创建一个StringBuilder对象,用于拼接SQL语句 - StringBuilder sql = new StringBuilder(120); - // 拼接UPDATE语句 - sql.append("UPDATE "); - // 拼接表名 - sql.append(TABLE.NOTE); - // 拼接SET语句 - sql.append(" SET "); - // 拼接版本号字段 - sql.append(NoteColumns.VERSION); - // 拼接版本号增加1的语句 - sql.append("=" + NoteColumns.VERSION + "+1 "); - - // 如果id大于0或者selection不为空,则拼接WHERE语句 - if (id > 0 || !TextUtils.isEmpty(selection)) { - sql.append(" WHERE "); - } - // 如果id大于0,则拼接id条件 - if (id > 0) { - sql.append(NoteColumns.ID + "=" + String.valueOf(id)); - } - // 如果selection不为空,则拼接selection条件 - if (!TextUtils.isEmpty(selection)) { - // 如果id大于0,则解析selection - String selectString = id > 0 ? parseSelection(selection) : selection; - // 遍历selectionArgs,替换selection中的占位符 - for (String args : selectionArgs) { - selectString = selectString.replaceFirst("\\?", args); - } - // 拼接selection条件 - sql.append(selectString); - } - - // 执行SQL语句 - mHelper.getWritableDatabase().execSQL(sql.toString()); - } - - @Override - public String getType(Uri uri) { - // TODO Auto-generated method stub - // 获取Uri的类型 - return null; - } - -} diff --git a/src/src/net/micode/notes/data/system.java b/src/src/net/micode/notes/data/system.java deleted file mode 100644 index 9ca1109..0000000 --- a/src/src/net/micode/notes/data/system.java +++ /dev/null @@ -1,84 +0,0 @@ -package Bin; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - - -public class System { - private Map notesMap; - private int storageLimit; // in bytes - - public System(int storageLimit) { - this.notesMap = new HashMap<>(); - this.storageLimit = storageLimit; - } - - public List getDeletedNotes() { - List deletedNotes = new ArrayList<>(); - for (Note note : notesMap.values()) { - if (note.isDeleted()) { - deletedNotes.add(note); - } - } - return deletedNotes; - } - - public void restoreNote(String noteId) { - Note note = notesMap.get(noteId); - if (note != null && note.isDeleted()) { - note.setDeletedAt(null); - } - } - - public void permanentlyDeleteNote(String noteId) { - notesMap.remove(noteId); - } - - public void cleanUpOldNotes() { - notesMap.entrySet().removeIf(entry -> entry.getValue().isDeleted()); - } - - public void checkStorageLimit() { - long totalSize = 0; - for (Note note : notesMap.values()) { - for (Image image : note.getImages()) { - // Here you would need some way to determine the size of each file. - // For demonstration purposes, let's assume each image path represents 1MB. - totalSize += 1024 * 1024; - } - } - if (totalSize > storageLimit) { - System.out.println("Storage limit exceeded."); - } else { - System.out.println("Storage within limits."); - } - } - - public boolean validateImage(String imagePath) { - // Implement actual image validation logic here - return true; // Placeholder implementation - } - - public Blob generateThumbnail(String imagePath) { - // Implement actual thumbnail generation logic here - byte[] thumbnailData = new byte[0]; // Placeholder data - return new Blob(thumbnailData); - } - - public void saveImageWithNoteBinding(String noteId, String imagePath) { - Note note = notesMap.get(noteId); - if (note != null && validateImage(imagePath)) { - Blob thumbnail = generateThumbnail(imagePath); - Image image = new Image(imagePath, thumbnail, new Date()); - note.getImages().add(image); - } - } - - -} - - - diff --git a/src/src/net/micode/notes/gtask/data/MetaData.java b/src/src/net/micode/notes/gtask/data/MetaData.java deleted file mode 100644 index 34b21ba..0000000 --- a/src/src/net/micode/notes/gtask/data/MetaData.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * 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.gtask.data; - -import android.database.Cursor; -import android.util.Log; - -import net.micode.notes.tool.GTaskStringUtils; - -import org.json.JSONException; -import org.json.JSONObject; - - -public class MetaData extends Task { - // 定义一个常量,用于日志输出 - private final static String TAG = MetaData.class.getSimpleName(); - - // 定义一个私有变量,用于存储相关任务ID - private String mRelatedGid = null; - - // 设置元数据 - public void setMeta(String gid, JSONObject metaInfo) { - try { - // 将相关任务ID添加到元数据中 - metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid); - } catch (JSONException e) { - // 日志输出错误信息 - Log.e(TAG, "failed to put related gid"); - } - // 设置备注 - setNotes(metaInfo.toString()); - // 设置名称 - setName(GTaskStringUtils.META_NOTE_NAME); - } - - // 获取相关任务ID - public String getRelatedGid() { - return mRelatedGid; - } - - // 判断是否需要保存 - @Override - public boolean isWorthSaving() { - return getNotes() != null; - } - - // 根据远程JSON设置内容 - @Override - public void setContentByRemoteJSON(JSONObject js) { - super.setContentByRemoteJSON(js); - if (getNotes() != null) { - try { - // 将备注转换为JSON对象 - JSONObject metaInfo = new JSONObject(getNotes().trim()); - // 获取相关任务ID - mRelatedGid = metaInfo.getString(GTaskStringUtils.META_HEAD_GTASK_ID); - } catch (JSONException e) { - // 日志输出警告信息 - Log.w(TAG, "failed to get related gid"); - // 将相关任务ID设置为null - mRelatedGid = null; - } - } - } - - // 根据本地JSON设置内容 - @Override - public void setContentByLocalJSON(JSONObject js) { - // this function should not be called - throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called"); - } - - // 从内容中获取本地JSON - @Override - public JSONObject getLocalJSONFromContent() { - throw new IllegalAccessError("MetaData:getLocalJSONFromContent should not be called"); - } - - // 获取同步操作 - @Override - public int getSyncAction(Cursor c) { - throw new IllegalAccessError("MetaData:getSyncAction should not be called"); - } - -} diff --git a/src/src/net/micode/notes/gtask/data/Node.java b/src/src/net/micode/notes/gtask/data/Node.java deleted file mode 100644 index f486a50..0000000 --- a/src/src/net/micode/notes/gtask/data/Node.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * 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.gtask.data; - -import android.database.Cursor; - -import org.json.JSONObject; - -public abstract class Node { - public static final int SYNC_ACTION_NONE = 0; - - public static final int SYNC_ACTION_ADD_REMOTE = 1; - - public static final int SYNC_ACTION_ADD_LOCAL = 2; - - public static final int SYNC_ACTION_DEL_REMOTE = 3; - - public static final int SYNC_ACTION_DEL_LOCAL = 4; - - public static final int SYNC_ACTION_UPDATE_REMOTE = 5; - - public static final int SYNC_ACTION_UPDATE_LOCAL = 6; - - public static final int SYNC_ACTION_UPDATE_CONFLICT = 7; - - public static final int SYNC_ACTION_ERROR = 8; - - private String mGid; - - private String mName; - - private long mLastModified; - - private boolean mDeleted; - - // 构造函数,初始化Node对象 - public Node() { - // 初始化mGid为null - mGid = null; - // 初始化mName为空字符串 - mName = ""; - // 初始化mLastModified为0 - mLastModified = 0; - // 初始化mDeleted为false - mDeleted = false; - } - - public abstract JSONObject getCreateAction(int actionId); - - public abstract JSONObject getUpdateAction(int actionId); - - public abstract void setContentByRemoteJSON(JSONObject js); - - public abstract void setContentByLocalJSON(JSONObject js); - - public abstract JSONObject getLocalJSONFromContent(); - - public abstract int getSyncAction(Cursor c); - - public void setGid(String gid) { - this.mGid = gid; - } - - public void setName(String name) { - this.mName = name; - } - - public void setLastModified(long lastModified) { - this.mLastModified = lastModified; - } - - public void setDeleted(boolean deleted) { - this.mDeleted = deleted; - } - - public String getGid() { - return this.mGid; - } - - public String getName() { - return this.mName; - } - - public long getLastModified() { - return this.mLastModified; - } - - public boolean getDeleted() { - return this.mDeleted; - } - -} diff --git a/src/src/net/micode/notes/gtask/data/SqlData.java b/src/src/net/micode/notes/gtask/data/SqlData.java deleted file mode 100644 index aea0e9b..0000000 --- a/src/src/net/micode/notes/gtask/data/SqlData.java +++ /dev/null @@ -1,230 +0,0 @@ -/* - * 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.gtask.data; - -import android.content.ContentResolver; -import android.content.ContentUris; -import android.content.ContentValues; -import android.content.Context; -import android.database.Cursor; -import android.net.Uri; -import android.util.Log; - -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.DataColumns; -import net.micode.notes.data.Notes.DataConstants; -import net.micode.notes.data.Notes.NoteColumns; -import net.micode.notes.data.NotesDatabaseHelper.TABLE; -import net.micode.notes.gtask.exception.ActionFailureException; - -import org.json.JSONException; -import org.json.JSONObject; - - -public class SqlData { - // 定义一个常量,用于标识类的简单名称 - private static final String TAG = SqlData.class.getSimpleName(); - - // 定义一个常量,用于标识无效的ID - private static final int INVALID_ID = -99999; - - // 定义一个常量,用于存储数据的列名 - public static final String[] PROJECTION_DATA = new String[] { - DataColumns.ID, DataColumns.MIME_TYPE, DataColumns.CONTENT, DataColumns.DATA1, - DataColumns.DATA3 - }; - - // 定义一个常量,用于标识数据的ID列 - public static final int DATA_ID_COLUMN = 0; - - // 定义一个常量,用于标识数据的MIME类型列 - public static final int DATA_MIME_TYPE_COLUMN = 1; - - // 定义一个常量,用于标识数据的CONTENT列 - public static final int DATA_CONTENT_COLUMN = 2; - - // 定义一个常量,用于标识数据的DATA1列 - public static final int DATA_CONTENT_DATA_1_COLUMN = 3; - - // 定义一个常量,用于标识数据的DATA3列 - public static final int DATA_CONTENT_DATA_3_COLUMN = 4; - - // 定义一个ContentResolver对象,用于访问内容提供者 - private ContentResolver mContentResolver; - - // 定义一个布尔值,用于标识是否创建 - private boolean mIsCreate; - - // 定义一个长整型变量,用于存储数据的ID - private long mDataId; - - // 定义一个字符串变量,用于存储数据的MIME类型 - private String mDataMimeType; - - // 定义一个字符串变量,用于存储数据的CONTENT - private String mDataContent; - - // 定义一个长整型变量,用于存储数据的DATA1 - private long mDataContentData1; - - // 定义一个字符串变量,用于存储数据的DATA3 - private String mDataContentData3; - - // 定义一个ContentValues对象,用于存储数据的差异 - private ContentValues mDiffDataValues; - - // 构造函数,用于创建一个新的SqlData对象 - public SqlData(Context context) { - mContentResolver = context.getContentResolver(); - mIsCreate = true; - mDataId = INVALID_ID; - mDataMimeType = DataConstants.NOTE; - mDataContent = ""; - mDataContentData1 = 0; - mDataContentData3 = ""; - mDiffDataValues = new ContentValues(); - } - - // 构造函数,用于从Cursor中加载数据 - public SqlData(Context context, Cursor c) { - mContentResolver = context.getContentResolver(); - mIsCreate = false; - loadFromCursor(c); - mDiffDataValues = new ContentValues(); - } - - // 从Cursor中加载数据 - private void loadFromCursor(Cursor c) { - mDataId = c.getLong(DATA_ID_COLUMN); - mDataMimeType = c.getString(DATA_MIME_TYPE_COLUMN); - mDataContent = c.getString(DATA_CONTENT_COLUMN); - mDataContentData1 = c.getLong(DATA_CONTENT_DATA_1_COLUMN); - mDataContentData3 = c.getString(DATA_CONTENT_DATA_3_COLUMN); - } - - // 设置数据 - public void setContent(JSONObject js) throws JSONException { - long dataId = js.has(DataColumns.ID) ? js.getLong(DataColumns.ID) : INVALID_ID; - if (mIsCreate || mDataId != dataId) { - mDiffDataValues.put(DataColumns.ID, dataId); - } - mDataId = dataId; - - String dataMimeType = js.has(DataColumns.MIME_TYPE) ? js.getString(DataColumns.MIME_TYPE) - : DataConstants.NOTE; - if (mIsCreate || !mDataMimeType.equals(dataMimeType)) { - mDiffDataValues.put(DataColumns.MIME_TYPE, dataMimeType); - } - mDataMimeType = dataMimeType; - - String dataContent = js.has(DataColumns.CONTENT) ? js.getString(DataColumns.CONTENT) : ""; - if (mIsCreate || !mDataContent.equals(dataContent)) { - mDiffDataValues.put(DataColumns.CONTENT, dataContent); - } - mDataContent = dataContent; - - long dataContentData1 = js.has(DataColumns.DATA1) ? js.getLong(DataColumns.DATA1) : 0; - if (mIsCreate || mDataContentData1 != dataContentData1) { - mDiffDataValues.put(DataColumns.DATA1, dataContentData1); - } - mDataContentData1 = dataContentData1; - - String dataContentData3 = js.has(DataColumns.DATA3) ? js.getString(DataColumns.DATA3) : ""; - if (mIsCreate || !mDataContentData3.equals(dataContentData3)) { - mDiffDataValues.put(DataColumns.DATA3, dataContentData3); - } - mDataContentData3 = dataContentData3; - } - - // 获取数据 - public JSONObject getContent() throws JSONException { - if (mIsCreate) { - Log.e(TAG, "it seems that we haven't created this in database yet"); - return null; - } - JSONObject js = new JSONObject(); - js.put(DataColumns.ID, mDataId); - js.put(DataColumns.MIME_TYPE, mDataMimeType); - js.put(DataColumns.CONTENT, mDataContent); - js.put(DataColumns.DATA1, mDataContentData1); - js.put(DataColumns.DATA3, mDataContentData3); - return js; - } - - // 提交数据 - // 提交数据 - public void commit(long noteId, boolean validateVersion, long version) { - - // 如果是创建 - if (mIsCreate) { - // 如果数据ID无效且数据值中包含ID列 - if (mDataId == INVALID_ID && mDiffDataValues.containsKey(DataColumns.ID)) { - // 移除ID列 - mDiffDataValues.remove(DataColumns.ID); - } - - // 添加NOTE_ID列 - mDiffDataValues.put(DataColumns.NOTE_ID, noteId); - // 插入数据 - Uri uri = mContentResolver.insert(Notes.CONTENT_DATA_URI, mDiffDataValues); - try { - // 获取数据ID - mDataId = Long.valueOf(uri.getPathSegments().get(1)); - } catch (NumberFormatException e) { - // 打印错误日志 - Log.e(TAG, "Get note id error :" + e.toString()); - // 抛出异常 - throw new ActionFailureException("create note failed"); - } - } else { - // 如果数据值不为空 - if (mDiffDataValues.size() > 0) { - // 更新结果 - int result = 0; - // 如果不验证版本 - if (!validateVersion) { - // 更新数据 - result = mContentResolver.update(ContentUris.withAppendedId( - Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, null, null); - } else { - // 更新数据,验证版本 - result = mContentResolver.update(ContentUris.withAppendedId( - Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, - " ? in (SELECT " + NoteColumns.ID + " FROM " + TABLE.NOTE - + " WHERE " + NoteColumns.VERSION + "=?)", new String[] { - String.valueOf(noteId), String.valueOf(version) - }); - } - // 如果更新结果为0 - if (result == 0) { - // 打印警告日志 - Log.w(TAG, "there is no update. maybe user updates note when syncing"); - } - } - } - - // 清空数据值 - mDiffDataValues.clear(); - // 设置为非创建 - mIsCreate = false; - } - - // 获取数据的ID - public long getId() { - return mDataId; - } -} diff --git a/src/src/net/micode/notes/gtask/data/SqlNote.java b/src/src/net/micode/notes/gtask/data/SqlNote.java deleted file mode 100644 index 8aa46d6..0000000 --- a/src/src/net/micode/notes/gtask/data/SqlNote.java +++ /dev/null @@ -1,625 +0,0 @@ -/* - * 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.gtask.data; - -import android.appwidget.AppWidgetManager; -import android.content.ContentResolver; -import android.content.ContentValues; -import android.content.Context; -import android.database.Cursor; -import android.net.Uri; -import android.util.Log; - -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.DataColumns; -import net.micode.notes.data.Notes.NoteColumns; -import net.micode.notes.gtask.exception.ActionFailureException; -import net.micode.notes.tool.GTaskStringUtils; -import net.micode.notes.tool.ResourceParser; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.util.ArrayList; - - -public class SqlNote { - private static final String TAG = SqlNote.class.getSimpleName(); - - private static final int INVALID_ID = -99999; - - public static final String[] PROJECTION_NOTE = new String[] { - NoteColumns.ID, NoteColumns.ALERTED_DATE, NoteColumns.BG_COLOR_ID, - NoteColumns.CREATED_DATE, NoteColumns.HAS_ATTACHMENT, NoteColumns.MODIFIED_DATE, - NoteColumns.NOTES_COUNT, NoteColumns.PARENT_ID, NoteColumns.SNIPPET, NoteColumns.TYPE, - NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE, NoteColumns.SYNC_ID, - NoteColumns.LOCAL_MODIFIED, NoteColumns.ORIGIN_PARENT_ID, NoteColumns.GTASK_ID, - NoteColumns.VERSION - }; - - public static final int ID_COLUMN = 0; - - public static final int ALERTED_DATE_COLUMN = 1; - - public static final int BG_COLOR_ID_COLUMN = 2; - - public static final int CREATED_DATE_COLUMN = 3; - - public static final int HAS_ATTACHMENT_COLUMN = 4; - - public static final int MODIFIED_DATE_COLUMN = 5; - - public static final int NOTES_COUNT_COLUMN = 6; - - public static final int PARENT_ID_COLUMN = 7; - - public static final int SNIPPET_COLUMN = 8; - - public static final int TYPE_COLUMN = 9; - - public static final int WIDGET_ID_COLUMN = 10; - - public static final int WIDGET_TYPE_COLUMN = 11; - - public static final int SYNC_ID_COLUMN = 12; - - public static final int LOCAL_MODIFIED_COLUMN = 13; - - public static final int ORIGIN_PARENT_ID_COLUMN = 14; - - public static final int GTASK_ID_COLUMN = 15; - - public static final int VERSION_COLUMN = 16; - - private Context mContext; - - private ContentResolver mContentResolver; - - private boolean mIsCreate; - - private long mId; - - private long mAlertDate; - - private int mBgColorId; - - private long mCreatedDate; - - private int mHasAttachment; - - private long mModifiedDate; - - private long mParentId; - - private String mSnippet; - - private int mType; - - private int mWidgetId; - - private int mWidgetType; - - private long mOriginParent; - - private long mVersion; - - private ContentValues mDiffNoteValues; - - private ArrayList mDataList; - - // 构造函数,初始化SqlNote对象 - public SqlNote(Context context) { - // 保存上下文 - mContext = context; - // 获取ContentResolver - mContentResolver = context.getContentResolver(); - // 标记为创建 - mIsCreate = true; - // 初始化ID为无效ID - mId = INVALID_ID; - // 初始化提醒日期为0 - mAlertDate = 0; - // 获取默认背景颜色ID - mBgColorId = ResourceParser.getDefaultBgId(context); - // 获取当前时间作为创建日期 - mCreatedDate = System.currentTimeMillis(); - // 初始化是否有附件为0 - mHasAttachment = 0; - // 获取当前时间作为修改日期 - mModifiedDate = System.currentTimeMillis(); - // 初始化父ID为0 - mParentId = 0; - // 初始化片段为空字符串 - mSnippet = ""; - // 初始化类型为笔记 - mType = Notes.TYPE_NOTE; - // 初始化小部件ID为无效ID - mWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; - // 初始化小部件类型为无效类型 - mWidgetType = Notes.TYPE_WIDGET_INVALIDE; - // 初始化原始父ID为0 - mOriginParent = 0; - // 初始化版本号为0 - mVersion = 0; - // 初始化ContentValues对象 - mDiffNoteValues = new ContentValues(); - // 初始化数据列表 - mDataList = new ArrayList(); - } - - // 构造函数,用于从Cursor中加载SqlNote对象 - public SqlNote(Context context, Cursor c) { - // 保存上下文 - mContext = context; - // 获取ContentResolver - mContentResolver = context.getContentResolver(); - // 标记为未创建 - mIsCreate = false; - // 从Cursor中加载SqlNote对象 - loadFromCursor(c); - // 初始化数据列表 - mDataList = new ArrayList(); - // 如果类型为Notes.TYPE_NOTE,则加载内容 - if (mType == Notes.TYPE_NOTE) - loadDataContent(); - // 初始化ContentValues - mDiffNoteValues = new ContentValues(); - } - - // 构造函数,传入上下文和id - public SqlNote(Context context, long id) { - // 保存上下文 - mContext = context; - // 获取内容解析器 - mContentResolver = context.getContentResolver(); - // 标记为未创建 - mIsCreate = false; - // 从游标中加载 - loadFromCursor(id); - // 创建数据列表 - mDataList = new ArrayList(); - // 如果类型为笔记,则加载内容 - if (mType == Notes.TYPE_NOTE) - loadDataContent(); - // 创建内容值 - mDiffNoteValues = new ContentValues(); - - } - - // 从游标中加载数据 - private void loadFromCursor(long id) { - // 声明游标变量 - Cursor c = null; - try { - // 从ContentResolver中查询数据 - c = mContentResolver.query(Notes.CONTENT_NOTE_URI, PROJECTION_NOTE, "(_id=?)", - new String[] { - String.valueOf(id) - }, null); - // 如果游标不为空 - if (c != null) { - // 将游标移动到下一行 - c.moveToNext(); - // 从游标中加载数据 - loadFromCursor(c); - } else { - // 如果游标为空,则输出警告日志 - Log.w(TAG, "loadFromCursor: cursor = null"); - } - } finally { - // 关闭游标 - if (c != null) - c.close(); - } - } - - // 从游标中加载数据 - private void loadFromCursor(Cursor c) { - // 获取ID - mId = c.getLong(ID_COLUMN); - // 获取提醒日期 - mAlertDate = c.getLong(ALERTED_DATE_COLUMN); - // 获取背景颜色ID - mBgColorId = c.getInt(BG_COLOR_ID_COLUMN); - // 获取创建日期 - mCreatedDate = c.getLong(CREATED_DATE_COLUMN); - // 获取是否有附件 - mHasAttachment = c.getInt(HAS_ATTACHMENT_COLUMN); - // 获取修改日期 - mModifiedDate = c.getLong(MODIFIED_DATE_COLUMN); - // 获取父ID - mParentId = c.getLong(PARENT_ID_COLUMN); - // 获取片段 - mSnippet = c.getString(SNIPPET_COLUMN); - // 获取类型 - mType = c.getInt(TYPE_COLUMN); - // 获取小部件ID - mWidgetId = c.getInt(WIDGET_ID_COLUMN); - // 获取小部件类型 - mWidgetType = c.getInt(WIDGET_TYPE_COLUMN); - // 获取版本 - mVersion = c.getLong(VERSION_COLUMN); - } - - // 加载数据内容 - private void loadDataContent() { - // 声明游标 - Cursor c = null; - // 清空数据列表 - mDataList.clear(); - try { - // 查询数据 - c = mContentResolver.query(Notes.CONTENT_DATA_URI, SqlData.PROJECTION_DATA, - "(note_id=?)", new String[] { - String.valueOf(mId) - }, null); - // 如果游标不为空 - if (c != null) { - // 如果游标中没有数据 - if (c.getCount() == 0) { - // 打印警告日志 - Log.w(TAG, "it seems that the note has not data"); - return; - } - // 遍历游标 - while (c.moveToNext()) { - // 创建SqlData对象 - SqlData data = new SqlData(mContext, c); - // 将数据添加到数据列表中 - mDataList.add(data); - } - } else { - // 打印警告日志 - Log.w(TAG, "loadDataContent: cursor = null"); - } - } finally { - // 关闭游标 - if (c != null) - c.close(); - } - } - - public boolean setContent(JSONObject js) { - try { - // 获取note对象 - JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); - // 如果note的类型是系统文件夹,则不能设置 - if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_SYSTEM) { - Log.w(TAG, "cannot set system folder"); - } else if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_FOLDER) { - // for folder we can only update the snnipet and type - String snippet = note.has(NoteColumns.SNIPPET) ? note - .getString(NoteColumns.SNIPPET) : ""; - if (mIsCreate || !mSnippet.equals(snippet)) { - mDiffNoteValues.put(NoteColumns.SNIPPET, snippet); - } - mSnippet = snippet; - - int type = note.has(NoteColumns.TYPE) ? note.getInt(NoteColumns.TYPE) - : Notes.TYPE_NOTE; - if (mIsCreate || mType != type) { - mDiffNoteValues.put(NoteColumns.TYPE, type); - } - mType = type; - } else if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_NOTE) { - JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA); - long id = note.has(NoteColumns.ID) ? note.getLong(NoteColumns.ID) : INVALID_ID; - if (mIsCreate || mId != id) { - mDiffNoteValues.put(NoteColumns.ID, id); - } - mId = id; - - long alertDate = note.has(NoteColumns.ALERTED_DATE) ? note - .getLong(NoteColumns.ALERTED_DATE) : 0; - if (mIsCreate || mAlertDate != alertDate) { - mDiffNoteValues.put(NoteColumns.ALERTED_DATE, alertDate); - } - mAlertDate = alertDate; - - int bgColorId = note.has(NoteColumns.BG_COLOR_ID) ? note - .getInt(NoteColumns.BG_COLOR_ID) : ResourceParser.getDefaultBgId(mContext); - if (mIsCreate || mBgColorId != bgColorId) { - mDiffNoteValues.put(NoteColumns.BG_COLOR_ID, bgColorId); - } - mBgColorId = bgColorId; - - long createDate = note.has(NoteColumns.CREATED_DATE) ? note - .getLong(NoteColumns.CREATED_DATE) : System.currentTimeMillis(); - if (mIsCreate || mCreatedDate != createDate) { - mDiffNoteValues.put(NoteColumns.CREATED_DATE, createDate); - } - mCreatedDate = createDate; - - int hasAttachment = note.has(NoteColumns.HAS_ATTACHMENT) ? note - .getInt(NoteColumns.HAS_ATTACHMENT) : 0; - if (mIsCreate || mHasAttachment != hasAttachment) { - mDiffNoteValues.put(NoteColumns.HAS_ATTACHMENT, hasAttachment); - } - mHasAttachment = hasAttachment; - - long modifiedDate = note.has(NoteColumns.MODIFIED_DATE) ? note - .getLong(NoteColumns.MODIFIED_DATE) : System.currentTimeMillis(); - if (mIsCreate || mModifiedDate != modifiedDate) { - mDiffNoteValues.put(NoteColumns.MODIFIED_DATE, modifiedDate); - } - mModifiedDate = modifiedDate; - - long parentId = note.has(NoteColumns.PARENT_ID) ? note - .getLong(NoteColumns.PARENT_ID) : 0; - if (mIsCreate || mParentId != parentId) { - mDiffNoteValues.put(NoteColumns.PARENT_ID, parentId); - } - mParentId = parentId; - - String snippet = note.has(NoteColumns.SNIPPET) ? note - .getString(NoteColumns.SNIPPET) : ""; - if (mIsCreate || !mSnippet.equals(snippet)) { - mDiffNoteValues.put(NoteColumns.SNIPPET, snippet); - } - mSnippet = snippet; - - int type = note.has(NoteColumns.TYPE) ? note.getInt(NoteColumns.TYPE) - : Notes.TYPE_NOTE; - if (mIsCreate || mType != type) { - mDiffNoteValues.put(NoteColumns.TYPE, type); - } - mType = type; - - int widgetId = note.has(NoteColumns.WIDGET_ID) ? note.getInt(NoteColumns.WIDGET_ID) - : AppWidgetManager.INVALID_APPWIDGET_ID; - if (mIsCreate || mWidgetId != widgetId) { - mDiffNoteValues.put(NoteColumns.WIDGET_ID, widgetId); - } - mWidgetId = widgetId; - - int widgetType = note.has(NoteColumns.WIDGET_TYPE) ? note - .getInt(NoteColumns.WIDGET_TYPE) : Notes.TYPE_WIDGET_INVALIDE; - if (mIsCreate || mWidgetType != widgetType) { - mDiffNoteValues.put(NoteColumns.WIDGET_TYPE, widgetType); - } - mWidgetType = widgetType; - - long originParent = note.has(NoteColumns.ORIGIN_PARENT_ID) ? note - .getLong(NoteColumns.ORIGIN_PARENT_ID) : 0; - if (mIsCreate || mOriginParent != originParent) { - mDiffNoteValues.put(NoteColumns.ORIGIN_PARENT_ID, originParent); - } - mOriginParent = originParent; - - for (int i = 0; i < dataArray.length(); i++) { - JSONObject data = dataArray.getJSONObject(i); - SqlData sqlData = null; - if (data.has(DataColumns.ID)) { - long dataId = data.getLong(DataColumns.ID); - for (SqlData temp : mDataList) { - if (dataId == temp.getId()) { - sqlData = temp; - } - } - } - - if (sqlData == null) { - sqlData = new SqlData(mContext); - mDataList.add(sqlData); - } - - sqlData.setContent(data); - } - } - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - return false; - } - return true; - } - - // 获取内容 - public JSONObject getContent() { - try { - // 创建一个JSONObject对象 - JSONObject js = new JSONObject(); - - // 如果mIsCreate为true,说明还没有在数据库中创建 - if (mIsCreate) { - Log.e(TAG, "it seems that we haven't created this in database yet"); - return null; - } - - // 创建一个JSONObject对象 - JSONObject note = new JSONObject(); - // 如果mType为Notes.TYPE_NOTE - if (mType == Notes.TYPE_NOTE) { - // 将mId放入note中 - note.put(NoteColumns.ID, mId); - // 将mAlertDate放入note中 - note.put(NoteColumns.ALERTED_DATE, mAlertDate); - // 将mBgColorId放入note中 - note.put(NoteColumns.BG_COLOR_ID, mBgColorId); - // 将mCreatedDate放入note中 - note.put(NoteColumns.CREATED_DATE, mCreatedDate); - // 将mHasAttachment放入note中 - note.put(NoteColumns.HAS_ATTACHMENT, mHasAttachment); - // 将mModifiedDate放入note中 - note.put(NoteColumns.MODIFIED_DATE, mModifiedDate); - // 将mParentId放入note中 - note.put(NoteColumns.PARENT_ID, mParentId); - // 将mSnippet放入note中 - note.put(NoteColumns.SNIPPET, mSnippet); - // 将mType放入note中 - note.put(NoteColumns.TYPE, mType); - // 将mWidgetId放入note中 - note.put(NoteColumns.WIDGET_ID, mWidgetId); - // 将mWidgetType放入note中 - note.put(NoteColumns.WIDGET_TYPE, mWidgetType); - // 将mOriginParent放入note中 - note.put(NoteColumns.ORIGIN_PARENT_ID, mOriginParent); - // 将note放入js中 - js.put(GTaskStringUtils.META_HEAD_NOTE, note); - - // 创建一个JSONArray对象 - JSONArray dataArray = new JSONArray(); - // 遍历mDataList - for (SqlData sqlData : mDataList) { - // 获取sqlData的内容 - JSONObject data = sqlData.getContent(); - // 如果data不为空 - if (data != null) { - // 将data放入dataArray中 - dataArray.put(data); - } - } - // 将dataArray放入js中 - js.put(GTaskStringUtils.META_HEAD_DATA, dataArray); - // 如果mType为Notes.TYPE_FOLDER或Notes.TYPE_SYSTEM - } else if (mType == Notes.TYPE_FOLDER || mType == Notes.TYPE_SYSTEM) { - // 将mId放入note中 - note.put(NoteColumns.ID, mId); - // 将mType放入note中 - note.put(NoteColumns.TYPE, mType); - // 将mSnippet放入note中 - note.put(NoteColumns.SNIPPET, mSnippet); - // 将note放入js中 - js.put(GTaskStringUtils.META_HEAD_NOTE, note); - } - - // 返回js - return js; - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - } - // 返回null - return null; - } - - public void setParentId(long id) { - mParentId = id; - mDiffNoteValues.put(NoteColumns.PARENT_ID, id); - } - - public void setGtaskId(String gid) { - mDiffNoteValues.put(NoteColumns.GTASK_ID, gid); - } - - public void setSyncId(long syncId) { - mDiffNoteValues.put(NoteColumns.SYNC_ID, syncId); - } - - public void resetLocalModified() { - mDiffNoteValues.put(NoteColumns.LOCAL_MODIFIED, 0); - } - - public long getId() { - return mId; - } - - public long getParentId() { - return mParentId; - } - - public String getSnippet() { - return mSnippet; - } - - public boolean isNoteType() { - return mType == Notes.TYPE_NOTE; - } - - public void commit(boolean validateVersion) { - // 如果是创建 - if (mIsCreate) { - // 如果id为无效id且mDiffNoteValues中包含NoteColumns.ID - if (mId == INVALID_ID && mDiffNoteValues.containsKey(NoteColumns.ID)) { - // 从mDiffNoteValues中移除NoteColumns.ID - mDiffNoteValues.remove(NoteColumns.ID); - } - - // 插入数据到Notes.CONTENT_NOTE_URI,返回uri - Uri uri = mContentResolver.insert(Notes.CONTENT_NOTE_URI, mDiffNoteValues); - try { - // 从uri中获取id - mId = Long.valueOf(uri.getPathSegments().get(1)); - } catch (NumberFormatException e) { - // 如果获取id失败,打印错误日志,抛出ActionFailureException - Log.e(TAG, "Get note id error :" + e.toString()); - throw new ActionFailureException("create note failed"); - } - // 如果id为0,抛出IllegalStateException - if (mId == 0) { - throw new IllegalStateException("Create thread id failed"); - } - - // 如果类型为Notes.TYPE_NOTE - if (mType == Notes.TYPE_NOTE) { - // 遍历mDataList,调用commit方法 - for (SqlData sqlData : mDataList) { - sqlData.commit(mId, false, -1); - } - } - } else { - // 如果id小于等于0且id不是Notes.ID_ROOT_FOLDER和Notes.ID_CALL_RECORD_FOLDER - if (mId <= 0 && mId != Notes.ID_ROOT_FOLDER && mId != Notes.ID_CALL_RECORD_FOLDER) { - // 打印错误日志,抛出IllegalStateException - Log.e(TAG, "No such note"); - throw new IllegalStateException("Try to update note with invalid id"); - } - // 如果mDiffNoteValues不为空 - if (mDiffNoteValues.size() > 0) { - // 版本号加1 - mVersion ++; - int result = 0; - // 如果不验证版本号 - if (!validateVersion) { - // 更新数据 - result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "(" - + NoteColumns.ID + "=?)", new String[] { - String.valueOf(mId) - }); - } else { - // 更新数据,验证版本号 - result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "(" - + NoteColumns.ID + "=?) AND (" + NoteColumns.VERSION + "<=?)", - new String[] { - String.valueOf(mId), String.valueOf(mVersion) - }); - } - // 如果没有更新,打印警告日志 - if (result == 0) { - Log.w(TAG, "there is no update. maybe user updates note when syncing"); - } - } - - // 如果类型为Notes.TYPE_NOTE - if (mType == Notes.TYPE_NOTE) { - // 遍历mDataList,调用commit方法 - for (SqlData sqlData : mDataList) { - sqlData.commit(mId, validateVersion, mVersion); - } - } - } - - // refresh local info - loadFromCursor(mId); - if (mType == Notes.TYPE_NOTE) - loadDataContent(); - - mDiffNoteValues.clear(); - mIsCreate = false; - } -} diff --git a/src/src/net/micode/notes/gtask/data/Task.java b/src/src/net/micode/notes/gtask/data/Task.java deleted file mode 100644 index 217d80e..0000000 --- a/src/src/net/micode/notes/gtask/data/Task.java +++ /dev/null @@ -1,374 +0,0 @@ -/* - * 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.gtask.data; - -import android.database.Cursor; -import android.text.TextUtils; -import android.util.Log; - -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.DataColumns; -import net.micode.notes.data.Notes.DataConstants; -import net.micode.notes.data.Notes.NoteColumns; -import net.micode.notes.gtask.exception.ActionFailureException; -import net.micode.notes.tool.GTaskStringUtils; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - - -public class Task extends Node { - // 定义一个常量,用于打印日志 - private static final String TAG = Task.class.getSimpleName(); - - // 定义一个布尔变量,表示任务是否完成 - private boolean mCompleted; - - // 定义一个字符串变量,用于存储任务的备注 - private String mNotes; - - // 定义一个JSONObject变量,用于存储任务的元信息 - private JSONObject mMetaInfo; - - // 定义一个Task变量,用于存储任务的前一个兄弟任务 - private Task mPriorSibling; - - // 定义一个TaskList变量,用于存储任务的父任务列表 - private TaskList mParent; - - // 构造函数,初始化任务 - public Task() { - super(); - mCompleted = false; - mNotes = null; - mPriorSibling = null; - mParent = null; - mMetaInfo = null; - } - - // 获取创建任务的JSON对象 - public JSONObject getCreateAction(int actionId) { - JSONObject js = new JSONObject(); - - try { - // action_type - js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, - GTaskStringUtils.GTASK_JSON_ACTION_TYPE_CREATE); - - // action_id - js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); - - // index - js.put(GTaskStringUtils.GTASK_JSON_INDEX, mParent.getChildTaskIndex(this)); - - // entity_delta - JSONObject entity = new JSONObject(); - entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); - entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null"); - entity.put(GTaskStringUtils.GTASK_JSON_ENTITY_TYPE, - GTaskStringUtils.GTASK_JSON_TYPE_TASK); - if (getNotes() != null) { - entity.put(GTaskStringUtils.GTASK_JSON_NOTES, getNotes()); - } - js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); - - // parent_id - js.put(GTaskStringUtils.GTASK_JSON_PARENT_ID, mParent.getGid()); - - // dest_parent_type - js.put(GTaskStringUtils.GTASK_JSON_DEST_PARENT_TYPE, - GTaskStringUtils.GTASK_JSON_TYPE_GROUP); - - // list_id - js.put(GTaskStringUtils.GTASK_JSON_LIST_ID, mParent.getGid()); - - // prior_sibling_id - if (mPriorSibling != null) { - js.put(GTaskStringUtils.GTASK_JSON_PRIOR_SIBLING_ID, mPriorSibling.getGid()); - } - - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new ActionFailureException("fail to generate task-create jsonobject"); - } - - return js; - } - - // 获取更新任务的JSON对象 - public JSONObject getUpdateAction(int actionId) { - JSONObject js = new JSONObject(); - - try { - // action_type - js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, - GTaskStringUtils.GTASK_JSON_ACTION_TYPE_UPDATE); - - // action_id - js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); - - // id - js.put(GTaskStringUtils.GTASK_JSON_ID, getGid()); - - // entity_delta - JSONObject entity = new JSONObject(); - entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); - if (getNotes() != null) { - entity.put(GTaskStringUtils.GTASK_JSON_NOTES, getNotes()); - } - entity.put(GTaskStringUtils.GTASK_JSON_DELETED, getDeleted()); - js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); - - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new ActionFailureException("fail to generate task-update jsonobject"); - } - - return js; - } - - // 根据远程JSON设置任务内容 - public void setContentByRemoteJSON(JSONObject js) { - if (js != null) { - try { - // id - if (js.has(GTaskStringUtils.GTASK_JSON_ID)) { - setGid(js.getString(GTaskStringUtils.GTASK_JSON_ID)); - } - - // last_modified - if (js.has(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)) { - setLastModified(js.getLong(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)); - } - - // name - if (js.has(GTaskStringUtils.GTASK_JSON_NAME)) { - setName(js.getString(GTaskStringUtils.GTASK_JSON_NAME)); - } - - // notes - if (js.has(GTaskStringUtils.GTASK_JSON_NOTES)) { - setNotes(js.getString(GTaskStringUtils.GTASK_JSON_NOTES)); - } - - // deleted - if (js.has(GTaskStringUtils.GTASK_JSON_DELETED)) { - setDeleted(js.getBoolean(GTaskStringUtils.GTASK_JSON_DELETED)); - } - - // completed - if (js.has(GTaskStringUtils.GTASK_JSON_COMPLETED)) { - setCompleted(js.getBoolean(GTaskStringUtils.GTASK_JSON_COMPLETED)); - } - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new ActionFailureException("fail to get task content from jsonobject"); - } - } - } - - // 根据本地JSON设置任务内容 - public void setContentByLocalJSON(JSONObject js) { - if (js == null || !js.has(GTaskStringUtils.META_HEAD_NOTE) - || !js.has(GTaskStringUtils.META_HEAD_DATA)) { - Log.w(TAG, "setContentByLocalJSON: nothing is avaiable"); - } - - try { - JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); - JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA); - - if (note.getInt(NoteColumns.TYPE) != Notes.TYPE_NOTE) { - Log.e(TAG, "invalid type"); - return; - } - - for (int i = 0; i < dataArray.length(); i++) { - JSONObject data = dataArray.getJSONObject(i); - if (TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) { - setName(data.getString(DataColumns.CONTENT)); - break; - } - } - - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - } - } - - // 获取本地JSON对象 - public JSONObject getLocalJSONFromContent() { - String name = getName(); - try { - if (mMetaInfo == null) { - // new task created from web - if (name == null) { - Log.w(TAG, "the note seems to be an empty one"); - return null; - } - - JSONObject js = new JSONObject(); - JSONObject note = new JSONObject(); - JSONArray dataArray = new JSONArray(); - JSONObject data = new JSONObject(); - data.put(DataColumns.CONTENT, name); - dataArray.put(data); - js.put(GTaskStringUtils.META_HEAD_DATA, dataArray); - note.put(NoteColumns.TYPE, Notes.TYPE_NOTE); - js.put(GTaskStringUtils.META_HEAD_NOTE, note); - return js; - } else { - // synced task - JSONObject note = mMetaInfo.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); - JSONArray dataArray = mMetaInfo.getJSONArray(GTaskStringUtils.META_HEAD_DATA); - - for (int i = 0; i < dataArray.length(); i++) { - JSONObject data = dataArray.getJSONObject(i); - if (TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) { - data.put(DataColumns.CONTENT, getName()); - break; - } - } - - note.put(NoteColumns.TYPE, Notes.TYPE_NOTE); - return mMetaInfo; - } - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - return null; - } - } - - // 设置任务的元信息 - public void setMetaInfo(MetaData metaData) { - if (metaData != null && metaData.getNotes() != null) { - try { - mMetaInfo = new JSONObject(metaData.getNotes()); - } catch (JSONException e) { - Log.w(TAG, e.toString()); - mMetaInfo = null; - } - } - } - - // 获取同步动作 - public int getSyncAction(Cursor c) { - try { - JSONObject noteInfo = null; - if (mMetaInfo != null && mMetaInfo.has(GTaskStringUtils.META_HEAD_NOTE)) { - noteInfo = mMetaInfo.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); - } - - if (noteInfo == null) { - Log.w(TAG, "it seems that note meta has been deleted"); - return SYNC_ACTION_UPDATE_REMOTE; - } - - if (!noteInfo.has(NoteColumns.ID)) { - Log.w(TAG, "remote note id seems to be deleted"); - return SYNC_ACTION_UPDATE_LOCAL; - } - - // validate the note id now - if (c.getLong(SqlNote.ID_COLUMN) != noteInfo.getLong(NoteColumns.ID)) { - Log.w(TAG, "note id doesn't match"); - return SYNC_ACTION_UPDATE_LOCAL; - } - - if (c.getInt(SqlNote.LOCAL_MODIFIED_COLUMN) == 0) { - // there is no local update - if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { - // no update both side - return SYNC_ACTION_NONE; - } else { - // apply remote to local - return SYNC_ACTION_UPDATE_LOCAL; - } - } else { - // validate gtask id - if (!c.getString(SqlNote.GTASK_ID_COLUMN).equals(getGid())) { - Log.e(TAG, "gtask id doesn't match"); - return SYNC_ACTION_ERROR; - } - if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { - // local modification only - return SYNC_ACTION_UPDATE_REMOTE; - } else { - return SYNC_ACTION_UPDATE_CONFLICT; - } - } - } catch (Exception e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - } - - return SYNC_ACTION_ERROR; - } - - // 判断任务是否值得保存 - public boolean isWorthSaving() { - return mMetaInfo != null || (getName() != null && getName().trim().length() > 0) - || (getNotes() != null && getNotes().trim().length() > 0); - } - - // 设置任务是否完成 - public void setCompleted(boolean completed) { - this.mCompleted = completed; - } - - // 设置任务的备注 - public void setNotes(String notes) { - this.mNotes = notes; - } - - // 设置任务的前一个兄弟任务 - public void setPriorSibling(Task priorSibling) { - this.mPriorSibling = priorSibling; - } - - // 设置任务的父任务列表 - public void setParent(TaskList parent) { - this.mParent = parent; - } - - // 获取任务是否完成 - public boolean getCompleted() { - return this.mCompleted; - } - - // 获取任务的备注 - public String getNotes() { - return this.mNotes; - } - - // 获取任务的前一个兄弟任务 - public Task getPriorSibling() { - return this.mPriorSibling; - } - - // 获取任务的父任务列表 - public TaskList getParent() { - return this.mParent; - } - -} diff --git a/src/src/net/micode/notes/gtask/data/TaskList.java b/src/src/net/micode/notes/gtask/data/TaskList.java deleted file mode 100644 index 33bff83..0000000 --- a/src/src/net/micode/notes/gtask/data/TaskList.java +++ /dev/null @@ -1,365 +0,0 @@ -/* - * 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.gtask.data; - -import android.database.Cursor; -import android.util.Log; - -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.NoteColumns; -import net.micode.notes.gtask.exception.ActionFailureException; -import net.micode.notes.tool.GTaskStringUtils; - -import org.json.JSONException; -import org.json.JSONObject; - -import java.util.ArrayList; - - -public class TaskList extends Node { - // 定义一个常量,用于打印日志 - private static final String TAG = TaskList.class.getSimpleName(); - - // 定义一个变量,用于存储任务列表的索引 - private int mIndex; - - // 定义一个变量,用于存储任务列表的子任务列表 - private ArrayList mChildren; - - // 构造函数,初始化任务列表的子任务列表和索引 - public TaskList() { - super(); - mChildren = new ArrayList(); - mIndex = 1; - } - - // 获取创建任务的JSON对象 - public JSONObject getCreateAction(int actionId) { - JSONObject js = new JSONObject(); - - try { - // action_type - js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, - GTaskStringUtils.GTASK_JSON_ACTION_TYPE_CREATE); - - // action_id - js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); - - // index - js.put(GTaskStringUtils.GTASK_JSON_INDEX, mIndex); - - // entity_delta - JSONObject entity = new JSONObject(); - entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); - entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null"); - entity.put(GTaskStringUtils.GTASK_JSON_ENTITY_TYPE, - GTaskStringUtils.GTASK_JSON_TYPE_GROUP); - js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); - - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new ActionFailureException("fail to generate tasklist-create jsonobject"); - } - - return js; - } - - // 获取更新任务的JSON对象 - public JSONObject getUpdateAction(int actionId) { - JSONObject js = new JSONObject(); - - try { - // action_type - js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, - GTaskStringUtils.GTASK_JSON_ACTION_TYPE_UPDATE); - - // action_id - js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); - - // id - js.put(GTaskStringUtils.GTASK_JSON_ID, getGid()); - - // entity_delta - JSONObject entity = new JSONObject(); - entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); - entity.put(GTaskStringUtils.GTASK_JSON_DELETED, getDeleted()); - js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); - - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new ActionFailureException("fail to generate tasklist-update jsonobject"); - } - - return js; - } - - // 根据远程JSON设置任务列表的内容 - public void setContentByRemoteJSON(JSONObject js) { - if (js != null) { - try { - // id - if (js.has(GTaskStringUtils.GTASK_JSON_ID)) { - setGid(js.getString(GTaskStringUtils.GTASK_JSON_ID)); - } - - // last_modified - if (js.has(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)) { - setLastModified(js.getLong(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)); - } - - // name - if (js.has(GTaskStringUtils.GTASK_JSON_NAME)) { - setName(js.getString(GTaskStringUtils.GTASK_JSON_NAME)); - } - - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new ActionFailureException("fail to get tasklist content from jsonobject"); - } - } - } - - // 根据本地JSON设置任务列表的内容 - public void setContentByLocalJSON(JSONObject js) { - if (js == null || !js.has(GTaskStringUtils.META_HEAD_NOTE)) { - Log.w(TAG, "setContentByLocalJSON: nothing is avaiable"); - } - - try { - JSONObject folder = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); - - if (folder.getInt(NoteColumns.TYPE) == Notes.TYPE_FOLDER) { - String name = folder.getString(NoteColumns.SNIPPET); - setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + name); - } else if (folder.getInt(NoteColumns.TYPE) == Notes.TYPE_SYSTEM) { - if (folder.getLong(NoteColumns.ID) == Notes.ID_ROOT_FOLDER) - setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_DEFAULT); - else if (folder.getLong(NoteColumns.ID) == Notes.ID_CALL_RECORD_FOLDER) - setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX - + GTaskStringUtils.FOLDER_CALL_NOTE); - else - Log.e(TAG, "invalid system folder"); - } else { - Log.e(TAG, "error type"); - } - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - } - } - - // 获取本地的JSON对象 - public JSONObject getLocalJSONFromContent() { - try { - JSONObject js = new JSONObject(); - JSONObject folder = new JSONObject(); - - String folderName = getName(); - if (getName().startsWith(GTaskStringUtils.MIUI_FOLDER_PREFFIX)) - folderName = folderName.substring(GTaskStringUtils.MIUI_FOLDER_PREFFIX.length(), - folderName.length()); - folder.put(NoteColumns.SNIPPET, folderName); - if (folderName.equals(GTaskStringUtils.FOLDER_DEFAULT) - || folderName.equals(GTaskStringUtils.FOLDER_CALL_NOTE)) - folder.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); - else - folder.put(NoteColumns.TYPE, Notes.TYPE_FOLDER); - - js.put(GTaskStringUtils.META_HEAD_NOTE, folder); - - return js; - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - return null; - } - } - - // 获取同步动作 - public int getSyncAction(Cursor c) { - try { - if (c.getInt(SqlNote.LOCAL_MODIFIED_COLUMN) == 0) { - // there is no local update - if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { - // no update both side - return SYNC_ACTION_NONE; - } else { - // apply remote to local - return SYNC_ACTION_UPDATE_LOCAL; - } - } else { - // validate gtask id - if (!c.getString(SqlNote.GTASK_ID_COLUMN).equals(getGid())) { - Log.e(TAG, "gtask id doesn't match"); - return SYNC_ACTION_ERROR; - } - if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { - // local modification only - return SYNC_ACTION_UPDATE_REMOTE; - } else { - // for folder conflicts, just apply local modification - return SYNC_ACTION_UPDATE_REMOTE; - } - } - } catch (Exception e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - } - - return SYNC_ACTION_ERROR; - } - - // 获取子任务数量 - public int getChildTaskCount() { - return mChildren.size(); - } - - // 添加子任务 - public boolean addChildTask(Task task) { - boolean ret = false; - if (task != null && !mChildren.contains(task)) { - ret = mChildren.add(task); - if (ret) { - // need to set prior sibling and parent - task.setPriorSibling(mChildren.isEmpty() ? null : mChildren - .get(mChildren.size() - 1)); - task.setParent(this); - } - } - return ret; - } - - // 在指定位置添加子任务 - public boolean addChildTask(Task task, int index) { - if (index < 0 || index > mChildren.size()) { - Log.e(TAG, "add child task: invalid index"); - return false; - } - - int pos = mChildren.indexOf(task); - if (task != null && pos == -1) { - mChildren.add(index, task); - - // update the task list - Task preTask = null; - Task afterTask = null; - if (index != 0) - preTask = mChildren.get(index - 1); - if (index != mChildren.size() - 1) - afterTask = mChildren.get(index + 1); - - task.setPriorSibling(preTask); - if (afterTask != null) - afterTask.setPriorSibling(task); - } - - return true; - } - - // 移除子任务 - public boolean removeChildTask(Task task) { - boolean ret = false; - int index = mChildren.indexOf(task); - if (index != -1) { - ret = mChildren.remove(task); - - if (ret) { - // reset prior sibling and parent - task.setPriorSibling(null); - task.setParent(null); - - // update the task list - if (index != mChildren.size()) { - mChildren.get(index).setPriorSibling( - index == 0 ? null : mChildren.get(index - 1)); - } - } - } - return ret; - } - - // 移动子任务 - public boolean moveChildTask(Task task, int index) { - - if (index < 0 || index >= mChildren.size()) { - Log.e(TAG, "move child task: invalid index"); - return false; - } - - int pos = mChildren.indexOf(task); - if (pos == -1) { - Log.e(TAG, "move child task: the task should in the list"); - return false; - } - - if (pos == index) - return true; - return (removeChildTask(task) && addChildTask(task, index)); - } - - // 根据GID查找子任务 - public Task findChildTaskByGid(String gid) { - for (int i = 0; i < mChildren.size(); i++) { - Task t = mChildren.get(i); - if (t.getGid().equals(gid)) { - return t; - } - } - return null; - } - - // 获取子任务索引 - public int getChildTaskIndex(Task task) { - return mChildren.indexOf(task); - } - - // 根据索引获取子任务 - public Task getChildTaskByIndex(int index) { - if (index < 0 || index >= mChildren.size()) { - Log.e(TAG, "getTaskByIndex: invalid index"); - return null; - } - return mChildren.get(index); - } - - // 根据GID获取子任务 - public Task getChilTaskByGid(String gid) { - for (Task task : mChildren) { - if (task.getGid().equals(gid)) - return task; - } - return null; - } - - // 获取子任务列表 - public ArrayList getChildTaskList() { - return this.mChildren; - } - - // 设置索引 - public void setIndex(int index) { - this.mIndex = index; - } - - // 获取索引 - public int getIndex() { - return this.mIndex; - } -} diff --git a/src/src/net/micode/notes/gtask/exception/ActionFailureException.java b/src/src/net/micode/notes/gtask/exception/ActionFailureException.java deleted file mode 100644 index 15504be..0000000 --- a/src/src/net/micode/notes/gtask/exception/ActionFailureException.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 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.gtask.exception; - -public class ActionFailureException extends RuntimeException { - private static final long serialVersionUID = 4425249765923293627L; - - public ActionFailureException() { - super(); - } - - public ActionFailureException(String paramString) { - super(paramString); - } - - public ActionFailureException(String paramString, Throwable paramThrowable) { - super(paramString, paramThrowable); - } -} diff --git a/src/src/net/micode/notes/gtask/exception/NetworkFailureException.java b/src/src/net/micode/notes/gtask/exception/NetworkFailureException.java deleted file mode 100644 index b08cfb1..0000000 --- a/src/src/net/micode/notes/gtask/exception/NetworkFailureException.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 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.gtask.exception; - -public class NetworkFailureException extends Exception { - private static final long serialVersionUID = 2107610287180234136L; - - public NetworkFailureException() { - super(); - } - - public NetworkFailureException(String paramString) { - super(paramString); - } - - public NetworkFailureException(String paramString, Throwable paramThrowable) { - super(paramString, paramThrowable); - } -} diff --git a/src/src/net/micode/notes/gtask/remote/GTaskASyncTask.java b/src/src/net/micode/notes/gtask/remote/GTaskASyncTask.java deleted file mode 100644 index b3b61e7..0000000 --- a/src/src/net/micode/notes/gtask/remote/GTaskASyncTask.java +++ /dev/null @@ -1,123 +0,0 @@ - -/* - * 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.gtask.remote; - -import android.app.Notification; -import android.app.NotificationManager; -import android.app.PendingIntent; -import android.content.Context; -import android.content.Intent; -import android.os.AsyncTask; - -import net.micode.notes.R; -import net.micode.notes.ui.NotesListActivity; -import net.micode.notes.ui.NotesPreferenceActivity; - - -public class GTaskASyncTask extends AsyncTask { - - private static int GTASK_SYNC_NOTIFICATION_ID = 5234235; - - public interface OnCompleteListener { - void onComplete(); - } - - private Context mContext; - - private NotificationManager mNotifiManager; - - private GTaskManager mTaskManager; - - private OnCompleteListener mOnCompleteListener; - - public GTaskASyncTask(Context context, OnCompleteListener listener) { - mContext = context; - mOnCompleteListener = listener; - mNotifiManager = (NotificationManager) mContext - .getSystemService(Context.NOTIFICATION_SERVICE); - mTaskManager = GTaskManager.getInstance(); - } - - public void cancelSync() { - mTaskManager.cancelSync(); - } - - public void publishProgess(String message) { - publishProgress(new String[] { - message - }); - } - - private void showNotification(int tickerId, String content) { - Notification notification = new Notification(R.drawable.notification, mContext - .getString(tickerId), System.currentTimeMillis()); - notification.defaults = Notification.DEFAULT_LIGHTS; - notification.flags = Notification.FLAG_AUTO_CANCEL; - PendingIntent pendingIntent; - if (tickerId != R.string.ticker_success) { - pendingIntent = PendingIntent.getActivity(mContext, 0, new Intent(mContext, - NotesPreferenceActivity.class), 0); - - } else { - pendingIntent = PendingIntent.getActivity(mContext, 0, new Intent(mContext, - NotesListActivity.class), 0); - } - notification.setLatestEventInfo(mContext, mContext.getString(R.string.app_name), content, - pendingIntent); - mNotifiManager.notify(GTASK_SYNC_NOTIFICATION_ID, notification); - } - - @Override - protected Integer doInBackground(Void... unused) { - publishProgess(mContext.getString(R.string.sync_progress_login, NotesPreferenceActivity - .getSyncAccountName(mContext))); - return mTaskManager.sync(mContext, this); - } - - @Override - protected void onProgressUpdate(String... progress) { - showNotification(R.string.ticker_syncing, progress[0]); - if (mContext instanceof GTaskSyncService) { - ((GTaskSyncService) mContext).sendBroadcast(progress[0]); - } - } - - @Override - protected void onPostExecute(Integer result) { - if (result == GTaskManager.STATE_SUCCESS) { - showNotification(R.string.ticker_success, mContext.getString( - R.string.success_sync_account, mTaskManager.getSyncAccount())); - NotesPreferenceActivity.setLastSyncTime(mContext, System.currentTimeMillis()); - } else if (result == GTaskManager.STATE_NETWORK_ERROR) { - showNotification(R.string.ticker_fail, mContext.getString(R.string.error_sync_network)); - } else if (result == GTaskManager.STATE_INTERNAL_ERROR) { - showNotification(R.string.ticker_fail, mContext.getString(R.string.error_sync_internal)); - } else if (result == GTaskManager.STATE_SYNC_CANCELLED) { - showNotification(R.string.ticker_cancel, mContext - .getString(R.string.error_sync_cancelled)); - } - if (mOnCompleteListener != null) { - new Thread(new Runnable() { - - public void run() { - mOnCompleteListener.onComplete(); - } - }).start(); - } - } -} diff --git a/src/src/net/micode/notes/gtask/remote/GTaskClient.java b/src/src/net/micode/notes/gtask/remote/GTaskClient.java deleted file mode 100644 index c67dfdf..0000000 --- a/src/src/net/micode/notes/gtask/remote/GTaskClient.java +++ /dev/null @@ -1,585 +0,0 @@ -/* - * 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.gtask.remote; - -import android.accounts.Account; -import android.accounts.AccountManager; -import android.accounts.AccountManagerFuture; -import android.app.Activity; -import android.os.Bundle; -import android.text.TextUtils; -import android.util.Log; - -import net.micode.notes.gtask.data.Node; -import net.micode.notes.gtask.data.Task; -import net.micode.notes.gtask.data.TaskList; -import net.micode.notes.gtask.exception.ActionFailureException; -import net.micode.notes.gtask.exception.NetworkFailureException; -import net.micode.notes.tool.GTaskStringUtils; -import net.micode.notes.ui.NotesPreferenceActivity; - -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.client.ClientProtocolException; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.cookie.Cookie; -import org.apache.http.impl.client.BasicCookieStore; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.message.BasicNameValuePair; -import org.apache.http.params.BasicHttpParams; -import org.apache.http.params.HttpConnectionParams; -import org.apache.http.params.HttpParams; -import org.apache.http.params.HttpProtocolParams; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.LinkedList; -import java.util.List; -import java.util.zip.GZIPInputStream; -import java.util.zip.Inflater; -import java.util.zip.InflaterInputStream; - - -public class GTaskClient { - private static final String TAG = GTaskClient.class.getSimpleName(); - - private static final String GTASK_URL = "https://mail.google.com/tasks/"; - - private static final String GTASK_GET_URL = "https://mail.google.com/tasks/ig"; - - private static final String GTASK_POST_URL = "https://mail.google.com/tasks/r/ig"; - - private static GTaskClient mInstance = null; - - private DefaultHttpClient mHttpClient; - - private String mGetUrl; - - private String mPostUrl; - - private long mClientVersion; - - private boolean mLoggedin; - - private long mLastLoginTime; - - private int mActionId; - - private Account mAccount; - - private JSONArray mUpdateArray; - - private GTaskClient() { - mHttpClient = null; - mGetUrl = GTASK_GET_URL; - mPostUrl = GTASK_POST_URL; - mClientVersion = -1; - mLoggedin = false; - mLastLoginTime = 0; - mActionId = 1; - mAccount = null; - mUpdateArray = null; - } - - public static synchronized GTaskClient getInstance() { - if (mInstance == null) { - mInstance = new GTaskClient(); - } - return mInstance; - } - - public boolean login(Activity activity) { - // we suppose that the cookie would expire after 5 minutes - // then we need to re-login - final long interval = 1000 * 60 * 5; - if (mLastLoginTime + interval < System.currentTimeMillis()) { - mLoggedin = false; - } - - // need to re-login after account switch - if (mLoggedin - && !TextUtils.equals(getSyncAccount().name, NotesPreferenceActivity - .getSyncAccountName(activity))) { - mLoggedin = false; - } - - if (mLoggedin) { - Log.d(TAG, "already logged in"); - return true; - } - - mLastLoginTime = System.currentTimeMillis(); - String authToken = loginGoogleAccount(activity, false); - if (authToken == null) { - Log.e(TAG, "login google account failed"); - return false; - } - - // login with custom domain if necessary - if (!(mAccount.name.toLowerCase().endsWith("gmail.com") || mAccount.name.toLowerCase() - .endsWith("googlemail.com"))) { - StringBuilder url = new StringBuilder(GTASK_URL).append("a/"); - int index = mAccount.name.indexOf('@') + 1; - String suffix = mAccount.name.substring(index); - url.append(suffix + "/"); - mGetUrl = url.toString() + "ig"; - mPostUrl = url.toString() + "r/ig"; - - if (tryToLoginGtask(activity, authToken)) { - mLoggedin = true; - } - } - - // try to login with google official url - if (!mLoggedin) { - mGetUrl = GTASK_GET_URL; - mPostUrl = GTASK_POST_URL; - if (!tryToLoginGtask(activity, authToken)) { - return false; - } - } - - mLoggedin = true; - return true; - } - - private String loginGoogleAccount(Activity activity, boolean invalidateToken) { - String authToken; - AccountManager accountManager = AccountManager.get(activity); - Account[] accounts = accountManager.getAccountsByType("com.google"); - - if (accounts.length == 0) { - Log.e(TAG, "there is no available google account"); - return null; - } - - String accountName = NotesPreferenceActivity.getSyncAccountName(activity); - Account account = null; - for (Account a : accounts) { - if (a.name.equals(accountName)) { - account = a; - break; - } - } - if (account != null) { - mAccount = account; - } else { - Log.e(TAG, "unable to get an account with the same name in the settings"); - return null; - } - - // get the token now - AccountManagerFuture accountManagerFuture = accountManager.getAuthToken(account, - "goanna_mobile", null, activity, null, null); - try { - Bundle authTokenBundle = accountManagerFuture.getResult(); - authToken = authTokenBundle.getString(AccountManager.KEY_AUTHTOKEN); - if (invalidateToken) { - accountManager.invalidateAuthToken("com.google", authToken); - loginGoogleAccount(activity, false); - } - } catch (Exception e) { - Log.e(TAG, "get auth token failed"); - authToken = null; - } - - return authToken; - } - - private boolean tryToLoginGtask(Activity activity, String authToken) { - if (!loginGtask(authToken)) { - // maybe the auth token is out of date, now let's invalidate the - // token and try again - authToken = loginGoogleAccount(activity, true); - if (authToken == null) { - Log.e(TAG, "login google account failed"); - return false; - } - - if (!loginGtask(authToken)) { - Log.e(TAG, "login gtask failed"); - return false; - } - } - return true; - } - - private boolean loginGtask(String authToken) { - int timeoutConnection = 10000; - int timeoutSocket = 15000; - HttpParams httpParameters = new BasicHttpParams(); - HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); - HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); - mHttpClient = new DefaultHttpClient(httpParameters); - BasicCookieStore localBasicCookieStore = new BasicCookieStore(); - mHttpClient.setCookieStore(localBasicCookieStore); - HttpProtocolParams.setUseExpectContinue(mHttpClient.getParams(), false); - - // login gtask - try { - String loginUrl = mGetUrl + "?auth=" + authToken; - HttpGet httpGet = new HttpGet(loginUrl); - HttpResponse response = null; - response = mHttpClient.execute(httpGet); - - // get the cookie now - List cookies = mHttpClient.getCookieStore().getCookies(); - boolean hasAuthCookie = false; - for (Cookie cookie : cookies) { - if (cookie.getName().contains("GTL")) { - hasAuthCookie = true; - } - } - if (!hasAuthCookie) { - Log.w(TAG, "it seems that there is no auth cookie"); - } - - // get the client version - String resString = getResponseContent(response.getEntity()); - String jsBegin = "_setup("; - String jsEnd = ")}"; - int begin = resString.indexOf(jsBegin); - int end = resString.lastIndexOf(jsEnd); - String jsString = null; - if (begin != -1 && end != -1 && begin < end) { - jsString = resString.substring(begin + jsBegin.length(), end); - } - JSONObject js = new JSONObject(jsString); - mClientVersion = js.getLong("v"); - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - return false; - } catch (Exception e) { - // simply catch all exceptions - Log.e(TAG, "httpget gtask_url failed"); - return false; - } - - return true; - } - - private int getActionId() { - return mActionId++; - } - - private HttpPost createHttpPost() { - HttpPost httpPost = new HttpPost(mPostUrl); - httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); - httpPost.setHeader("AT", "1"); - return httpPost; - } - - private String getResponseContent(HttpEntity entity) throws IOException { - String contentEncoding = null; - if (entity.getContentEncoding() != null) { - contentEncoding = entity.getContentEncoding().getValue(); - Log.d(TAG, "encoding: " + contentEncoding); - } - - InputStream input = entity.getContent(); - if (contentEncoding != null && contentEncoding.equalsIgnoreCase("gzip")) { - input = new GZIPInputStream(entity.getContent()); - } else if (contentEncoding != null && contentEncoding.equalsIgnoreCase("deflate")) { - Inflater inflater = new Inflater(true); - input = new InflaterInputStream(entity.getContent(), inflater); - } - - try { - InputStreamReader isr = new InputStreamReader(input); - BufferedReader br = new BufferedReader(isr); - StringBuilder sb = new StringBuilder(); - - while (true) { - String buff = br.readLine(); - if (buff == null) { - return sb.toString(); - } - sb = sb.append(buff); - } - } finally { - input.close(); - } - } - - private JSONObject postRequest(JSONObject js) throws NetworkFailureException { - if (!mLoggedin) { - Log.e(TAG, "please login first"); - throw new ActionFailureException("not logged in"); - } - - HttpPost httpPost = createHttpPost(); - try { - LinkedList list = new LinkedList(); - list.add(new BasicNameValuePair("r", js.toString())); - UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, "UTF-8"); - httpPost.setEntity(entity); - - // execute the post - HttpResponse response = mHttpClient.execute(httpPost); - String jsString = getResponseContent(response.getEntity()); - return new JSONObject(jsString); - - } catch (ClientProtocolException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new NetworkFailureException("postRequest failed"); - } catch (IOException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new NetworkFailureException("postRequest failed"); - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new ActionFailureException("unable to convert response content to jsonobject"); - } catch (Exception e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new ActionFailureException("error occurs when posting request"); - } - } - - public void createTask(Task task) throws NetworkFailureException { - commitUpdate(); - try { - JSONObject jsPost = new JSONObject(); - JSONArray actionList = new JSONArray(); - - // action_list - actionList.put(task.getCreateAction(getActionId())); - jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList); - - // client_version - jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); - - // post - JSONObject jsResponse = postRequest(jsPost); - JSONObject jsResult = (JSONObject) jsResponse.getJSONArray( - GTaskStringUtils.GTASK_JSON_RESULTS).get(0); - task.setGid(jsResult.getString(GTaskStringUtils.GTASK_JSON_NEW_ID)); - - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new ActionFailureException("create task: handing jsonobject failed"); - } - } - - public void createTaskList(TaskList tasklist) throws NetworkFailureException { - commitUpdate(); - try { - JSONObject jsPost = new JSONObject(); - JSONArray actionList = new JSONArray(); - - // action_list - actionList.put(tasklist.getCreateAction(getActionId())); - jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList); - - // client version - jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); - - // post - JSONObject jsResponse = postRequest(jsPost); - JSONObject jsResult = (JSONObject) jsResponse.getJSONArray( - GTaskStringUtils.GTASK_JSON_RESULTS).get(0); - tasklist.setGid(jsResult.getString(GTaskStringUtils.GTASK_JSON_NEW_ID)); - - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new ActionFailureException("create tasklist: handing jsonobject failed"); - } - } - - public void commitUpdate() throws NetworkFailureException { - if (mUpdateArray != null) { - try { - JSONObject jsPost = new JSONObject(); - - // action_list - jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, mUpdateArray); - - // client_version - jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); - - postRequest(jsPost); - mUpdateArray = null; - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new ActionFailureException("commit update: handing jsonobject failed"); - } - } - } - - public void addUpdateNode(Node node) throws NetworkFailureException { - if (node != null) { - // too many update items may result in an error - // set max to 10 items - if (mUpdateArray != null && mUpdateArray.length() > 10) { - commitUpdate(); - } - - if (mUpdateArray == null) - mUpdateArray = new JSONArray(); - mUpdateArray.put(node.getUpdateAction(getActionId())); - } - } - - public void moveTask(Task task, TaskList preParent, TaskList curParent) - throws NetworkFailureException { - commitUpdate(); - try { - JSONObject jsPost = new JSONObject(); - JSONArray actionList = new JSONArray(); - JSONObject action = new JSONObject(); - - // action_list - action.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, - GTaskStringUtils.GTASK_JSON_ACTION_TYPE_MOVE); - action.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, getActionId()); - action.put(GTaskStringUtils.GTASK_JSON_ID, task.getGid()); - if (preParent == curParent && task.getPriorSibling() != null) { - // put prioring_sibing_id only if moving within the tasklist and - // it is not the first one - action.put(GTaskStringUtils.GTASK_JSON_PRIOR_SIBLING_ID, task.getPriorSibling()); - } - action.put(GTaskStringUtils.GTASK_JSON_SOURCE_LIST, preParent.getGid()); - action.put(GTaskStringUtils.GTASK_JSON_DEST_PARENT, curParent.getGid()); - if (preParent != curParent) { - // put the dest_list only if moving between tasklists - action.put(GTaskStringUtils.GTASK_JSON_DEST_LIST, curParent.getGid()); - } - actionList.put(action); - jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList); - - // client_version - jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); - - postRequest(jsPost); - - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new ActionFailureException("move task: handing jsonobject failed"); - } - } - - public void deleteNode(Node node) throws NetworkFailureException { - commitUpdate(); - try { - JSONObject jsPost = new JSONObject(); - JSONArray actionList = new JSONArray(); - - // action_list - node.setDeleted(true); - actionList.put(node.getUpdateAction(getActionId())); - jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList); - - // client_version - jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); - - postRequest(jsPost); - mUpdateArray = null; - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new ActionFailureException("delete node: handing jsonobject failed"); - } - } - - public JSONArray getTaskLists() throws NetworkFailureException { - if (!mLoggedin) { - Log.e(TAG, "please login first"); - throw new ActionFailureException("not logged in"); - } - - try { - HttpGet httpGet = new HttpGet(mGetUrl); - HttpResponse response = null; - response = mHttpClient.execute(httpGet); - - // get the task list - String resString = getResponseContent(response.getEntity()); - String jsBegin = "_setup("; - String jsEnd = ")}"; - int begin = resString.indexOf(jsBegin); - int end = resString.lastIndexOf(jsEnd); - String jsString = null; - if (begin != -1 && end != -1 && begin < end) { - jsString = resString.substring(begin + jsBegin.length(), end); - } - JSONObject js = new JSONObject(jsString); - return js.getJSONObject("t").getJSONArray(GTaskStringUtils.GTASK_JSON_LISTS); - } catch (ClientProtocolException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new NetworkFailureException("gettasklists: httpget failed"); - } catch (IOException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new NetworkFailureException("gettasklists: httpget failed"); - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new ActionFailureException("get task lists: handing jasonobject failed"); - } - } - - public JSONArray getTaskList(String listGid) throws NetworkFailureException { - commitUpdate(); - try { - JSONObject jsPost = new JSONObject(); - JSONArray actionList = new JSONArray(); - JSONObject action = new JSONObject(); - - // action_list - action.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, - GTaskStringUtils.GTASK_JSON_ACTION_TYPE_GETALL); - action.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, getActionId()); - action.put(GTaskStringUtils.GTASK_JSON_LIST_ID, listGid); - action.put(GTaskStringUtils.GTASK_JSON_GET_DELETED, false); - actionList.put(action); - jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList); - - // client_version - jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); - - JSONObject jsResponse = postRequest(jsPost); - return jsResponse.getJSONArray(GTaskStringUtils.GTASK_JSON_TASKS); - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new ActionFailureException("get task list: handing jsonobject failed"); - } - } - - public Account getSyncAccount() { - return mAccount; - } - - public void resetUpdateArray() { - mUpdateArray = null; - } -} diff --git a/src/src/net/micode/notes/gtask/remote/GTaskManager.java b/src/src/net/micode/notes/gtask/remote/GTaskManager.java deleted file mode 100644 index d2b4082..0000000 --- a/src/src/net/micode/notes/gtask/remote/GTaskManager.java +++ /dev/null @@ -1,800 +0,0 @@ -/* - * 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.gtask.remote; - -import android.app.Activity; -import android.content.ContentResolver; -import android.content.ContentUris; -import android.content.ContentValues; -import android.content.Context; -import android.database.Cursor; -import android.util.Log; - -import net.micode.notes.R; -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.DataColumns; -import net.micode.notes.data.Notes.NoteColumns; -import net.micode.notes.gtask.data.MetaData; -import net.micode.notes.gtask.data.Node; -import net.micode.notes.gtask.data.SqlNote; -import net.micode.notes.gtask.data.Task; -import net.micode.notes.gtask.data.TaskList; -import net.micode.notes.gtask.exception.ActionFailureException; -import net.micode.notes.gtask.exception.NetworkFailureException; -import net.micode.notes.tool.DataUtils; -import net.micode.notes.tool.GTaskStringUtils; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Map; - - -public class GTaskManager { - private static final String TAG = GTaskManager.class.getSimpleName(); - - public static final int STATE_SUCCESS = 0; - - public static final int STATE_NETWORK_ERROR = 1; - - public static final int STATE_INTERNAL_ERROR = 2; - - public static final int STATE_SYNC_IN_PROGRESS = 3; - - public static final int STATE_SYNC_CANCELLED = 4; - - private static GTaskManager mInstance = null; - - private Activity mActivity; - - private Context mContext; - - private ContentResolver mContentResolver; - - private boolean mSyncing; - - private boolean mCancelled; - - private HashMap mGTaskListHashMap; - - private HashMap mGTaskHashMap; - - private HashMap mMetaHashMap; - - private TaskList mMetaList; - - private HashSet mLocalDeleteIdMap; - - private HashMap mGidToNid; - - private HashMap mNidToGid; - - private GTaskManager() { - mSyncing = false; - mCancelled = false; - mGTaskListHashMap = new HashMap(); - mGTaskHashMap = new HashMap(); - mMetaHashMap = new HashMap(); - mMetaList = null; - mLocalDeleteIdMap = new HashSet(); - mGidToNid = new HashMap(); - mNidToGid = new HashMap(); - } - - public static synchronized GTaskManager getInstance() { - if (mInstance == null) { - mInstance = new GTaskManager(); - } - return mInstance; - } - - public synchronized void setActivityContext(Activity activity) { - // used for getting authtoken - mActivity = activity; - } - - public int sync(Context context, GTaskASyncTask asyncTask) { - if (mSyncing) { - Log.d(TAG, "Sync is in progress"); - return STATE_SYNC_IN_PROGRESS; - } - mContext = context; - mContentResolver = mContext.getContentResolver(); - mSyncing = true; - mCancelled = false; - mGTaskListHashMap.clear(); - mGTaskHashMap.clear(); - mMetaHashMap.clear(); - mLocalDeleteIdMap.clear(); - mGidToNid.clear(); - mNidToGid.clear(); - - try { - GTaskClient client = GTaskClient.getInstance(); - client.resetUpdateArray(); - - // login google task - if (!mCancelled) { - if (!client.login(mActivity)) { - throw new NetworkFailureException("login google task failed"); - } - } - - // get the task list from google - asyncTask.publishProgess(mContext.getString(R.string.sync_progress_init_list)); - initGTaskList(); - - // do content sync work - asyncTask.publishProgess(mContext.getString(R.string.sync_progress_syncing)); - syncContent(); - } catch (NetworkFailureException e) { - Log.e(TAG, e.toString()); - return STATE_NETWORK_ERROR; - } catch (ActionFailureException e) { - Log.e(TAG, e.toString()); - return STATE_INTERNAL_ERROR; - } catch (Exception e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - return STATE_INTERNAL_ERROR; - } finally { - mGTaskListHashMap.clear(); - mGTaskHashMap.clear(); - mMetaHashMap.clear(); - mLocalDeleteIdMap.clear(); - mGidToNid.clear(); - mNidToGid.clear(); - mSyncing = false; - } - - return mCancelled ? STATE_SYNC_CANCELLED : STATE_SUCCESS; - } - - private void initGTaskList() throws NetworkFailureException { - if (mCancelled) - return; - GTaskClient client = GTaskClient.getInstance(); - try { - JSONArray jsTaskLists = client.getTaskLists(); - - // init meta list first - mMetaList = null; - for (int i = 0; i < jsTaskLists.length(); i++) { - JSONObject object = jsTaskLists.getJSONObject(i); - String gid = object.getString(GTaskStringUtils.GTASK_JSON_ID); - String name = object.getString(GTaskStringUtils.GTASK_JSON_NAME); - - if (name - .equals(GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_META)) { - mMetaList = new TaskList(); - mMetaList.setContentByRemoteJSON(object); - - // load meta data - JSONArray jsMetas = client.getTaskList(gid); - for (int j = 0; j < jsMetas.length(); j++) { - object = (JSONObject) jsMetas.getJSONObject(j); - MetaData metaData = new MetaData(); - metaData.setContentByRemoteJSON(object); - if (metaData.isWorthSaving()) { - mMetaList.addChildTask(metaData); - if (metaData.getGid() != null) { - mMetaHashMap.put(metaData.getRelatedGid(), metaData); - } - } - } - } - } - - // create meta list if not existed - if (mMetaList == null) { - mMetaList = new TaskList(); - mMetaList.setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX - + GTaskStringUtils.FOLDER_META); - GTaskClient.getInstance().createTaskList(mMetaList); - } - - // init task list - for (int i = 0; i < jsTaskLists.length(); i++) { - JSONObject object = jsTaskLists.getJSONObject(i); - String gid = object.getString(GTaskStringUtils.GTASK_JSON_ID); - String name = object.getString(GTaskStringUtils.GTASK_JSON_NAME); - - if (name.startsWith(GTaskStringUtils.MIUI_FOLDER_PREFFIX) - && !name.equals(GTaskStringUtils.MIUI_FOLDER_PREFFIX - + GTaskStringUtils.FOLDER_META)) { - TaskList tasklist = new TaskList(); - tasklist.setContentByRemoteJSON(object); - mGTaskListHashMap.put(gid, tasklist); - mGTaskHashMap.put(gid, tasklist); - - // load tasks - JSONArray jsTasks = client.getTaskList(gid); - for (int j = 0; j < jsTasks.length(); j++) { - object = (JSONObject) jsTasks.getJSONObject(j); - gid = object.getString(GTaskStringUtils.GTASK_JSON_ID); - Task task = new Task(); - task.setContentByRemoteJSON(object); - if (task.isWorthSaving()) { - task.setMetaInfo(mMetaHashMap.get(gid)); - tasklist.addChildTask(task); - mGTaskHashMap.put(gid, task); - } - } - } - } - } catch (JSONException e) { - Log.e(TAG, e.toString()); - e.printStackTrace(); - throw new ActionFailureException("initGTaskList: handing JSONObject failed"); - } - } - - private void syncContent() throws NetworkFailureException { - int syncType; - Cursor c = null; - String gid; - Node node; - - mLocalDeleteIdMap.clear(); - - if (mCancelled) { - return; - } - - // for local deleted note - try { - c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, - "(type<>? AND parent_id=?)", new String[] { - String.valueOf(Notes.TYPE_SYSTEM), String.valueOf(Notes.ID_TRASH_FOLER) - }, null); - if (c != null) { - while (c.moveToNext()) { - gid = c.getString(SqlNote.GTASK_ID_COLUMN); - node = mGTaskHashMap.get(gid); - if (node != null) { - mGTaskHashMap.remove(gid); - doContentSync(Node.SYNC_ACTION_DEL_REMOTE, node, c); - } - - mLocalDeleteIdMap.add(c.getLong(SqlNote.ID_COLUMN)); - } - } else { - Log.w(TAG, "failed to query trash folder"); - } - } finally { - if (c != null) { - c.close(); - c = null; - } - } - - // sync folder first - syncFolder(); - - // for note existing in database - try { - c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, - "(type=? AND parent_id<>?)", new String[] { - String.valueOf(Notes.TYPE_NOTE), String.valueOf(Notes.ID_TRASH_FOLER) - }, NoteColumns.TYPE + " DESC"); - if (c != null) { - while (c.moveToNext()) { - gid = c.getString(SqlNote.GTASK_ID_COLUMN); - node = mGTaskHashMap.get(gid); - if (node != null) { - mGTaskHashMap.remove(gid); - mGidToNid.put(gid, c.getLong(SqlNote.ID_COLUMN)); - mNidToGid.put(c.getLong(SqlNote.ID_COLUMN), gid); - syncType = node.getSyncAction(c); - } else { - if (c.getString(SqlNote.GTASK_ID_COLUMN).trim().length() == 0) { - // local add - syncType = Node.SYNC_ACTION_ADD_REMOTE; - } else { - // remote delete - syncType = Node.SYNC_ACTION_DEL_LOCAL; - } - } - doContentSync(syncType, node, c); - } - } else { - Log.w(TAG, "failed to query existing note in database"); - } - - } finally { - if (c != null) { - c.close(); - c = null; - } - } - - // go through remaining items - Iterator> iter = mGTaskHashMap.entrySet().iterator(); - while (iter.hasNext()) { - Map.Entry entry = iter.next(); - node = entry.getValue(); - doContentSync(Node.SYNC_ACTION_ADD_LOCAL, node, null); - } - - // mCancelled can be set by another thread, so we neet to check one by - // one - // clear local delete table - if (!mCancelled) { - if (!DataUtils.batchDeleteNotes(mContentResolver, mLocalDeleteIdMap)) { - throw new ActionFailureException("failed to batch-delete local deleted notes"); - } - } - - // refresh local sync id - if (!mCancelled) { - GTaskClient.getInstance().commitUpdate(); - refreshLocalSyncId(); - } - - } - - private void syncFolder() throws NetworkFailureException { - Cursor c = null; - String gid; - Node node; - int syncType; - - if (mCancelled) { - return; - } - - // for root folder - try { - c = mContentResolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, - Notes.ID_ROOT_FOLDER), SqlNote.PROJECTION_NOTE, null, null, null); - if (c != null) { - c.moveToNext(); - gid = c.getString(SqlNote.GTASK_ID_COLUMN); - node = mGTaskHashMap.get(gid); - if (node != null) { - mGTaskHashMap.remove(gid); - mGidToNid.put(gid, (long) Notes.ID_ROOT_FOLDER); - mNidToGid.put((long) Notes.ID_ROOT_FOLDER, gid); - // for system folder, only update remote name if necessary - if (!node.getName().equals( - GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_DEFAULT)) - doContentSync(Node.SYNC_ACTION_UPDATE_REMOTE, node, c); - } else { - doContentSync(Node.SYNC_ACTION_ADD_REMOTE, node, c); - } - } else { - Log.w(TAG, "failed to query root folder"); - } - } finally { - if (c != null) { - c.close(); - c = null; - } - } - - // for call-note folder - try { - c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, "(_id=?)", - new String[] { - String.valueOf(Notes.ID_CALL_RECORD_FOLDER) - }, null); - if (c != null) { - if (c.moveToNext()) { - gid = c.getString(SqlNote.GTASK_ID_COLUMN); - node = mGTaskHashMap.get(gid); - if (node != null) { - mGTaskHashMap.remove(gid); - mGidToNid.put(gid, (long) Notes.ID_CALL_RECORD_FOLDER); - mNidToGid.put((long) Notes.ID_CALL_RECORD_FOLDER, gid); - // for system folder, only update remote name if - // necessary - if (!node.getName().equals( - GTaskStringUtils.MIUI_FOLDER_PREFFIX - + GTaskStringUtils.FOLDER_CALL_NOTE)) - doContentSync(Node.SYNC_ACTION_UPDATE_REMOTE, node, c); - } else { - doContentSync(Node.SYNC_ACTION_ADD_REMOTE, node, c); - } - } - } else { - Log.w(TAG, "failed to query call note folder"); - } - } finally { - if (c != null) { - c.close(); - c = null; - } - } - - // for local existing folders - try { - c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, - "(type=? AND parent_id<>?)", new String[] { - String.valueOf(Notes.TYPE_FOLDER), String.valueOf(Notes.ID_TRASH_FOLER) - }, NoteColumns.TYPE + " DESC"); - if (c != null) { - while (c.moveToNext()) { - gid = c.getString(SqlNote.GTASK_ID_COLUMN); - node = mGTaskHashMap.get(gid); - if (node != null) { - mGTaskHashMap.remove(gid); - mGidToNid.put(gid, c.getLong(SqlNote.ID_COLUMN)); - mNidToGid.put(c.getLong(SqlNote.ID_COLUMN), gid); - syncType = node.getSyncAction(c); - } else { - if (c.getString(SqlNote.GTASK_ID_COLUMN).trim().length() == 0) { - // local add - syncType = Node.SYNC_ACTION_ADD_REMOTE; - } else { - // remote delete - syncType = Node.SYNC_ACTION_DEL_LOCAL; - } - } - doContentSync(syncType, node, c); - } - } else { - Log.w(TAG, "failed to query existing folder"); - } - } finally { - if (c != null) { - c.close(); - c = null; - } - } - - // for remote add folders - Iterator> iter = mGTaskListHashMap.entrySet().iterator(); - while (iter.hasNext()) { - Map.Entry entry = iter.next(); - gid = entry.getKey(); - node = entry.getValue(); - if (mGTaskHashMap.containsKey(gid)) { - mGTaskHashMap.remove(gid); - doContentSync(Node.SYNC_ACTION_ADD_LOCAL, node, null); - } - } - - if (!mCancelled) - GTaskClient.getInstance().commitUpdate(); - } - - private void doContentSync(int syncType, Node node, Cursor c) throws NetworkFailureException { - if (mCancelled) { - return; - } - - MetaData meta; - switch (syncType) { - case Node.SYNC_ACTION_ADD_LOCAL: - addLocalNode(node); - break; - case Node.SYNC_ACTION_ADD_REMOTE: - addRemoteNode(node, c); - break; - case Node.SYNC_ACTION_DEL_LOCAL: - meta = mMetaHashMap.get(c.getString(SqlNote.GTASK_ID_COLUMN)); - if (meta != null) { - GTaskClient.getInstance().deleteNode(meta); - } - mLocalDeleteIdMap.add(c.getLong(SqlNote.ID_COLUMN)); - break; - case Node.SYNC_ACTION_DEL_REMOTE: - meta = mMetaHashMap.get(node.getGid()); - if (meta != null) { - GTaskClient.getInstance().deleteNode(meta); - } - GTaskClient.getInstance().deleteNode(node); - break; - case Node.SYNC_ACTION_UPDATE_LOCAL: - updateLocalNode(node, c); - break; - case Node.SYNC_ACTION_UPDATE_REMOTE: - updateRemoteNode(node, c); - break; - case Node.SYNC_ACTION_UPDATE_CONFLICT: - // merging both modifications maybe a good idea - // right now just use local update simply - updateRemoteNode(node, c); - break; - case Node.SYNC_ACTION_NONE: - break; - case Node.SYNC_ACTION_ERROR: - default: - throw new ActionFailureException("unkown sync action type"); - } - } - - private void addLocalNode(Node node) throws NetworkFailureException { - if (mCancelled) { - return; - } - - SqlNote sqlNote; - if (node instanceof TaskList) { - if (node.getName().equals( - GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_DEFAULT)) { - sqlNote = new SqlNote(mContext, Notes.ID_ROOT_FOLDER); - } else if (node.getName().equals( - GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_CALL_NOTE)) { - sqlNote = new SqlNote(mContext, Notes.ID_CALL_RECORD_FOLDER); - } else { - sqlNote = new SqlNote(mContext); - sqlNote.setContent(node.getLocalJSONFromContent()); - sqlNote.setParentId(Notes.ID_ROOT_FOLDER); - } - } else { - sqlNote = new SqlNote(mContext); - JSONObject js = node.getLocalJSONFromContent(); - try { - if (js.has(GTaskStringUtils.META_HEAD_NOTE)) { - JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); - if (note.has(NoteColumns.ID)) { - long id = note.getLong(NoteColumns.ID); - if (DataUtils.existInNoteDatabase(mContentResolver, id)) { - // the id is not available, have to create a new one - note.remove(NoteColumns.ID); - } - } - } - - if (js.has(GTaskStringUtils.META_HEAD_DATA)) { - JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA); - for (int i = 0; i < dataArray.length(); i++) { - JSONObject data = dataArray.getJSONObject(i); - if (data.has(DataColumns.ID)) { - long dataId = data.getLong(DataColumns.ID); - if (DataUtils.existInDataDatabase(mContentResolver, dataId)) { - // the data id is not available, have to create - // a new one - data.remove(DataColumns.ID); - } - } - } - - } - } catch (JSONException e) { - Log.w(TAG, e.toString()); - e.printStackTrace(); - } - sqlNote.setContent(js); - - Long parentId = mGidToNid.get(((Task) node).getParent().getGid()); - if (parentId == null) { - Log.e(TAG, "cannot find task's parent id locally"); - throw new ActionFailureException("cannot add local node"); - } - sqlNote.setParentId(parentId.longValue()); - } - - // create the local node - sqlNote.setGtaskId(node.getGid()); - sqlNote.commit(false); - - // update gid-nid mapping - mGidToNid.put(node.getGid(), sqlNote.getId()); - mNidToGid.put(sqlNote.getId(), node.getGid()); - - // update meta - updateRemoteMeta(node.getGid(), sqlNote); - } - - private void updateLocalNode(Node node, Cursor c) throws NetworkFailureException { - if (mCancelled) { - return; - } - - SqlNote sqlNote; - // update the note locally - sqlNote = new SqlNote(mContext, c); - sqlNote.setContent(node.getLocalJSONFromContent()); - - Long parentId = (node instanceof Task) ? mGidToNid.get(((Task) node).getParent().getGid()) - : new Long(Notes.ID_ROOT_FOLDER); - if (parentId == null) { - Log.e(TAG, "cannot find task's parent id locally"); - throw new ActionFailureException("cannot update local node"); - } - sqlNote.setParentId(parentId.longValue()); - sqlNote.commit(true); - - // update meta info - updateRemoteMeta(node.getGid(), sqlNote); - } - - private void addRemoteNode(Node node, Cursor c) throws NetworkFailureException { - if (mCancelled) { - return; - } - - SqlNote sqlNote = new SqlNote(mContext, c); - Node n; - - // update remotely - if (sqlNote.isNoteType()) { - Task task = new Task(); - task.setContentByLocalJSON(sqlNote.getContent()); - - String parentGid = mNidToGid.get(sqlNote.getParentId()); - if (parentGid == null) { - Log.e(TAG, "cannot find task's parent tasklist"); - throw new ActionFailureException("cannot add remote task"); - } - mGTaskListHashMap.get(parentGid).addChildTask(task); - - GTaskClient.getInstance().createTask(task); - n = (Node) task; - - // add meta - updateRemoteMeta(task.getGid(), sqlNote); - } else { - TaskList tasklist = null; - - // we need to skip folder if it has already existed - String folderName = GTaskStringUtils.MIUI_FOLDER_PREFFIX; - if (sqlNote.getId() == Notes.ID_ROOT_FOLDER) - folderName += GTaskStringUtils.FOLDER_DEFAULT; - else if (sqlNote.getId() == Notes.ID_CALL_RECORD_FOLDER) - folderName += GTaskStringUtils.FOLDER_CALL_NOTE; - else - folderName += sqlNote.getSnippet(); - - Iterator> iter = mGTaskListHashMap.entrySet().iterator(); - while (iter.hasNext()) { - Map.Entry entry = iter.next(); - String gid = entry.getKey(); - TaskList list = entry.getValue(); - - if (list.getName().equals(folderName)) { - tasklist = list; - if (mGTaskHashMap.containsKey(gid)) { - mGTaskHashMap.remove(gid); - } - break; - } - } - - // no match we can add now - if (tasklist == null) { - tasklist = new TaskList(); - tasklist.setContentByLocalJSON(sqlNote.getContent()); - GTaskClient.getInstance().createTaskList(tasklist); - mGTaskListHashMap.put(tasklist.getGid(), tasklist); - } - n = (Node) tasklist; - } - - // update local note - sqlNote.setGtaskId(n.getGid()); - sqlNote.commit(false); - sqlNote.resetLocalModified(); - sqlNote.commit(true); - - // gid-id mapping - mGidToNid.put(n.getGid(), sqlNote.getId()); - mNidToGid.put(sqlNote.getId(), n.getGid()); - } - - private void updateRemoteNode(Node node, Cursor c) throws NetworkFailureException { - if (mCancelled) { - return; - } - - SqlNote sqlNote = new SqlNote(mContext, c); - - // update remotely - node.setContentByLocalJSON(sqlNote.getContent()); - GTaskClient.getInstance().addUpdateNode(node); - - // update meta - updateRemoteMeta(node.getGid(), sqlNote); - - // move task if necessary - if (sqlNote.isNoteType()) { - Task task = (Task) node; - TaskList preParentList = task.getParent(); - - String curParentGid = mNidToGid.get(sqlNote.getParentId()); - if (curParentGid == null) { - Log.e(TAG, "cannot find task's parent tasklist"); - throw new ActionFailureException("cannot update remote task"); - } - TaskList curParentList = mGTaskListHashMap.get(curParentGid); - - if (preParentList != curParentList) { - preParentList.removeChildTask(task); - curParentList.addChildTask(task); - GTaskClient.getInstance().moveTask(task, preParentList, curParentList); - } - } - - // clear local modified flag - sqlNote.resetLocalModified(); - sqlNote.commit(true); - } - - private void updateRemoteMeta(String gid, SqlNote sqlNote) throws NetworkFailureException { - if (sqlNote != null && sqlNote.isNoteType()) { - MetaData metaData = mMetaHashMap.get(gid); - if (metaData != null) { - metaData.setMeta(gid, sqlNote.getContent()); - GTaskClient.getInstance().addUpdateNode(metaData); - } else { - metaData = new MetaData(); - metaData.setMeta(gid, sqlNote.getContent()); - mMetaList.addChildTask(metaData); - mMetaHashMap.put(gid, metaData); - GTaskClient.getInstance().createTask(metaData); - } - } - } - - private void refreshLocalSyncId() throws NetworkFailureException { - if (mCancelled) { - return; - } - - // get the latest gtask list - mGTaskHashMap.clear(); - mGTaskListHashMap.clear(); - mMetaHashMap.clear(); - initGTaskList(); - - Cursor c = null; - try { - c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, - "(type<>? AND parent_id<>?)", new String[] { - String.valueOf(Notes.TYPE_SYSTEM), String.valueOf(Notes.ID_TRASH_FOLER) - }, NoteColumns.TYPE + " DESC"); - if (c != null) { - while (c.moveToNext()) { - String gid = c.getString(SqlNote.GTASK_ID_COLUMN); - Node node = mGTaskHashMap.get(gid); - if (node != null) { - mGTaskHashMap.remove(gid); - ContentValues values = new ContentValues(); - values.put(NoteColumns.SYNC_ID, node.getLastModified()); - mContentResolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, - c.getLong(SqlNote.ID_COLUMN)), values, null, null); - } else { - Log.e(TAG, "something is missed"); - throw new ActionFailureException( - "some local items don't have gid after sync"); - } - } - } else { - Log.w(TAG, "failed to query local note to refresh sync id"); - } - } finally { - if (c != null) { - c.close(); - c = null; - } - } - } - - public String getSyncAccount() { - return GTaskClient.getInstance().getSyncAccount().name; - } - - public void cancelSync() { - mCancelled = true; - } -} diff --git a/src/src/net/micode/notes/gtask/remote/GTaskSyncService.java b/src/src/net/micode/notes/gtask/remote/GTaskSyncService.java deleted file mode 100644 index cca36f7..0000000 --- a/src/src/net/micode/notes/gtask/remote/GTaskSyncService.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * 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.gtask.remote; - -import android.app.Activity; -import android.app.Service; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.os.IBinder; - -public class GTaskSyncService extends Service { - public final static String ACTION_STRING_NAME = "sync_action_type"; - - public final static int ACTION_START_SYNC = 0; - - public final static int ACTION_CANCEL_SYNC = 1; - - public final static int ACTION_INVALID = 2; - - public final static String GTASK_SERVICE_BROADCAST_NAME = "net.micode.notes.gtask.remote.gtask_sync_service"; - - public final static String GTASK_SERVICE_BROADCAST_IS_SYNCING = "isSyncing"; - - public final static String GTASK_SERVICE_BROADCAST_PROGRESS_MSG = "progressMsg"; - - private static GTaskASyncTask mSyncTask = null; - - private static String mSyncProgress = ""; - - private void startSync() { - if (mSyncTask == null) { - mSyncTask = new GTaskASyncTask(this, new GTaskASyncTask.OnCompleteListener() { - public void onComplete() { - mSyncTask = null; - sendBroadcast(""); - stopSelf(); - } - }); - sendBroadcast(""); - mSyncTask.execute(); - } - } - - private void cancelSync() { - if (mSyncTask != null) { - mSyncTask.cancelSync(); - } - } - - @Override - public void onCreate() { - mSyncTask = null; - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - Bundle bundle = intent.getExtras(); - if (bundle != null && bundle.containsKey(ACTION_STRING_NAME)) { - switch (bundle.getInt(ACTION_STRING_NAME, ACTION_INVALID)) { - case ACTION_START_SYNC: - startSync(); - break; - case ACTION_CANCEL_SYNC: - cancelSync(); - break; - default: - break; - } - return START_STICKY; - } - return super.onStartCommand(intent, flags, startId); - } - - @Override - public void onLowMemory() { - if (mSyncTask != null) { - mSyncTask.cancelSync(); - } - } - - public IBinder onBind(Intent intent) { - return null; - } - - public void sendBroadcast(String msg) { - mSyncProgress = msg; - Intent intent = new Intent(GTASK_SERVICE_BROADCAST_NAME); - intent.putExtra(GTASK_SERVICE_BROADCAST_IS_SYNCING, mSyncTask != null); - intent.putExtra(GTASK_SERVICE_BROADCAST_PROGRESS_MSG, msg); - sendBroadcast(intent); - } - - public static void startSync(Activity activity) { - GTaskManager.getInstance().setActivityContext(activity); - Intent intent = new Intent(activity, GTaskSyncService.class); - intent.putExtra(GTaskSyncService.ACTION_STRING_NAME, GTaskSyncService.ACTION_START_SYNC); - activity.startService(intent); - } - - public static void cancelSync(Context context) { - Intent intent = new Intent(context, GTaskSyncService.class); - intent.putExtra(GTaskSyncService.ACTION_STRING_NAME, GTaskSyncService.ACTION_CANCEL_SYNC); - context.startService(intent); - } - - public static boolean isSyncing() { - return mSyncTask != null; - } - - public static String getProgressString() { - return mSyncProgress; - } -} diff --git a/src/src/net/micode/notes/model/Note.java b/src/src/net/micode/notes/model/Note.java deleted file mode 100644 index 7100003..0000000 --- a/src/src/net/micode/notes/model/Note.java +++ /dev/null @@ -1,294 +0,0 @@ -/* - * 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.model; -import android.content.ContentProviderOperation; -import android.content.ContentProviderResult; -import android.content.ContentUris; -import android.content.ContentValues; -import android.content.Context; -import android.content.OperationApplicationException; -import android.net.Uri; -import android.os.RemoteException; -import android.util.Log; - -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.CallNote; -import net.micode.notes.data.Notes.DataColumns; -import net.micode.notes.data.Notes.NoteColumns; -import net.micode.notes.data.Notes.TextNote; - -import java.util.ArrayList; - - -public class Note { - private ContentValues mNoteDiffValues; - private NoteData mNoteData; - private static final String TAG = "Note"; - - private String id; - private String content; - private Date deletedAt; - private List images; - /** - * Create a new note id for adding a new note to databases - */ - 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); - values.put(NoteColumns.MODIFIED_DATE, createdTime); - values.put(NoteColumns.TYPE, Notes.TYPE_NOTE); - values.put(NoteColumns.LOCAL_MODIFIED, 1); - values.put(NoteColumns.PARENT_ID, folderId); - Uri uri = context.getContentResolver().insert(Notes.CONTENT_NOTE_URI, values); - - long noteId = 0; - try { - noteId = Long.valueOf(uri.getPathSegments().get(1)); - } catch (NumberFormatException e) { - Log.e(TAG, "Get note id error :" + e.toString()); - noteId = 0; - } - if (noteId == -1) { - throw new IllegalStateException("Wrong note id:" + noteId); - } - return noteId; - } - - public Note() { - mNoteDiffValues = new ContentValues(); - mNoteData = new NoteData(); - images = new ArrayList<>(); - } - - public void setNoteValue(String key, String value) { - mNoteDiffValues.put(key, value); - mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); - mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); - } - - public void setTextData(String key, String value) { - mNoteData.setTextData(key, value); - } - - public void setTextDataId(long id) { - mNoteData.setTextDataId(id); - } - - public long getTextDataId() { - return mNoteData.mTextDataId; - } - - public void setCallDataId(long id) { - mNoteData.setCallDataId(id); - } - - public void setCallData(String key, String value) { - mNoteData.setCallData(key, value); - } - - public boolean isLocalModified() { - return mNoteDiffValues.size() > 0 || mNoteData.isLocalModified(); - } - - public boolean syncNote(Context context, long noteId) { - if (noteId <= 0) { - throw new IllegalArgumentException("Wrong note id:" + noteId); - } - - if (!isLocalModified()) { - return true; - } - - /** - * In theory, once data changed, the note should be updated on {@link NoteColumns#LOCAL_MODIFIED} and - * {@link NoteColumns#MODIFIED_DATE}. For data safety, though update note fails, we also update the - * note data info - */ - if (context.getContentResolver().update( - ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), mNoteDiffValues, null, - null) == 0) { - Log.e(TAG, "Update note error, should not happen"); - // Do not return, fall through - } - mNoteDiffValues.clear(); - - if (mNoteData.isLocalModified() - && (mNoteData.pushIntoContentResolver(context, noteId) == null)) { - return false; - } - - return true; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getContent() { - return content; - } - - public void setContent(String content) { - this.content = content; - } - - public Date getDeletedAt() { - return deletedAt; - } - - public void setDeletedAt(Date deletedAt) { - this.deletedAt = deletedAt; - } - - public List getImages() { - this.images = images; - } - - public void addImage(Image image) { - if (image != null) { - images.add(image); - } - } - - - private class NoteData { - private long mTextDataId; - - private ContentValues mTextDataValues; - - private long mCallDataId; - - private ContentValues mCallDataValues; - - private static final String TAG = "NoteData"; - - public NoteData() { - mTextDataValues = new ContentValues(); - mCallDataValues = new ContentValues(); - mTextDataId = 0; - mCallDataId = 0; - } - - boolean isLocalModified() { - return mTextDataValues.size() > 0 || mCallDataValues.size() > 0; - } - - void setTextDataId(long id) { - if(id <= 0) { - throw new IllegalArgumentException("Text data id should larger than 0"); - } - mTextDataId = id; - } - - void setCallDataId(long id) { - if (id <= 0) { - throw new IllegalArgumentException("Call data id should larger than 0"); - } - mCallDataId = id; - } - - void setCallData(String key, String value) { - mCallDataValues.put(key, value); - mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); - mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); - } - - void setTextData(String key, String value) { - mTextDataValues.put(key, value); - mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); - mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); - } - - Uri pushIntoContentResolver(Context context, long noteId) { - /** - * Check for safety - */ - if (noteId <= 0) { - throw new IllegalArgumentException("Wrong note id:" + noteId); - } - - ArrayList operationList = new ArrayList(); - ContentProviderOperation.Builder builder = null; - - if(mTextDataValues.size() > 0) { - mTextDataValues.put(DataColumns.NOTE_ID, noteId); - if (mTextDataId == 0) { - mTextDataValues.put(DataColumns.MIME_TYPE, TextNote.CONTENT_ITEM_TYPE); - Uri uri = context.getContentResolver().insert(Notes.CONTENT_DATA_URI, - mTextDataValues); - try { - setTextDataId(Long.valueOf(uri.getPathSegments().get(1))); - } catch (NumberFormatException e) { - Log.e(TAG, "Insert new text data fail with noteId" + noteId); - mTextDataValues.clear(); - return null; - } - } else { - builder = ContentProviderOperation.newUpdate(ContentUris.withAppendedId( - Notes.CONTENT_DATA_URI, mTextDataId)); - builder.withValues(mTextDataValues); - operationList.add(builder.build()); - } - mTextDataValues.clear(); - } - - if(mCallDataValues.size() > 0) { - mCallDataValues.put(DataColumns.NOTE_ID, noteId); - if (mCallDataId == 0) { - mCallDataValues.put(DataColumns.MIME_TYPE, CallNote.CONTENT_ITEM_TYPE); - Uri uri = context.getContentResolver().insert(Notes.CONTENT_DATA_URI, - mCallDataValues); - try { - setCallDataId(Long.valueOf(uri.getPathSegments().get(1))); - } catch (NumberFormatException e) { - Log.e(TAG, "Insert new call data fail with noteId" + noteId); - mCallDataValues.clear(); - return null; - } - } else { - builder = ContentProviderOperation.newUpdate(ContentUris.withAppendedId( - Notes.CONTENT_DATA_URI, mCallDataId)); - builder.withValues(mCallDataValues); - operationList.add(builder.build()); - } - mCallDataValues.clear(); - } - - if (operationList.size() > 0) { - try { - ContentProviderResult[] results = context.getContentResolver().applyBatch( - Notes.AUTHORITY, operationList); - return (results == null || results.length == 0 || results[0] == null) ? null - : ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId); - } catch (RemoteException e) { - Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); - return null; - } catch (OperationApplicationException e) { - Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); - return null; - } - } - return null; - } - } -} diff --git a/src/src/net/micode/notes/model/WorkingNote.java b/src/src/net/micode/notes/model/WorkingNote.java deleted file mode 100644 index be081e4..0000000 --- a/src/src/net/micode/notes/model/WorkingNote.java +++ /dev/null @@ -1,368 +0,0 @@ -/* - * 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.model; - -import android.appwidget.AppWidgetManager; -import android.content.ContentUris; -import android.content.Context; -import android.database.Cursor; -import android.text.TextUtils; -import android.util.Log; - -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.CallNote; -import net.micode.notes.data.Notes.DataColumns; -import net.micode.notes.data.Notes.DataConstants; -import net.micode.notes.data.Notes.NoteColumns; -import net.micode.notes.data.Notes.TextNote; -import net.micode.notes.tool.ResourceParser.NoteBgResources; - - -public class WorkingNote { - // Note for the working note - private Note mNote; - // Note Id - private long mNoteId; - // Note content - private String mContent; - // Note mode - private int mMode; - - private long mAlertDate; - - private long mModifiedDate; - - private int mBgColorId; - - private int mWidgetId; - - private int mWidgetType; - - private long mFolderId; - - private Context mContext; - - private static final String TAG = "WorkingNote"; - - private boolean mIsDeleted; - - private NoteSettingChangedListener mNoteSettingStatusListener; - - public static final String[] DATA_PROJECTION = new String[] { - DataColumns.ID, - DataColumns.CONTENT, - DataColumns.MIME_TYPE, - DataColumns.DATA1, - DataColumns.DATA2, - DataColumns.DATA3, - DataColumns.DATA4, - }; - - public static final String[] NOTE_PROJECTION = new String[] { - NoteColumns.PARENT_ID, - NoteColumns.ALERTED_DATE, - NoteColumns.BG_COLOR_ID, - NoteColumns.WIDGET_ID, - NoteColumns.WIDGET_TYPE, - NoteColumns.MODIFIED_DATE - }; - - private static final int DATA_ID_COLUMN = 0; - - private static final int DATA_CONTENT_COLUMN = 1; - - private static final int DATA_MIME_TYPE_COLUMN = 2; - - private static final int DATA_MODE_COLUMN = 3; - - private static final int NOTE_PARENT_ID_COLUMN = 0; - - private static final int NOTE_ALERTED_DATE_COLUMN = 1; - - private static final int NOTE_BG_COLOR_ID_COLUMN = 2; - - private static final int NOTE_WIDGET_ID_COLUMN = 3; - - private static final int NOTE_WIDGET_TYPE_COLUMN = 4; - - private static final int NOTE_MODIFIED_DATE_COLUMN = 5; - - // New note construct - private WorkingNote(Context context, long folderId) { - mContext = context; - mAlertDate = 0; - mModifiedDate = System.currentTimeMillis(); - mFolderId = folderId; - mNote = new Note(); - mNoteId = 0; - mIsDeleted = false; - mMode = 0; - mWidgetType = Notes.TYPE_WIDGET_INVALIDE; - } - - // Existing note construct - private WorkingNote(Context context, long noteId, long folderId) { - mContext = context; - mNoteId = noteId; - mFolderId = folderId; - mIsDeleted = false; - mNote = new Note(); - loadNote(); - } - - private void loadNote() { - Cursor cursor = mContext.getContentResolver().query( - ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, mNoteId), NOTE_PROJECTION, null, - null, null); - - if (cursor != null) { - if (cursor.moveToFirst()) { - mFolderId = cursor.getLong(NOTE_PARENT_ID_COLUMN); - mBgColorId = cursor.getInt(NOTE_BG_COLOR_ID_COLUMN); - mWidgetId = cursor.getInt(NOTE_WIDGET_ID_COLUMN); - mWidgetType = cursor.getInt(NOTE_WIDGET_TYPE_COLUMN); - mAlertDate = cursor.getLong(NOTE_ALERTED_DATE_COLUMN); - mModifiedDate = cursor.getLong(NOTE_MODIFIED_DATE_COLUMN); - } - cursor.close(); - } else { - Log.e(TAG, "No note with id:" + mNoteId); - throw new IllegalArgumentException("Unable to find note with id " + mNoteId); - } - loadNoteData(); - } - - private void loadNoteData() { - Cursor cursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI, DATA_PROJECTION, - DataColumns.NOTE_ID + "=?", new String[] { - String.valueOf(mNoteId) - }, null); - - if (cursor != null) { - if (cursor.moveToFirst()) { - do { - String type = cursor.getString(DATA_MIME_TYPE_COLUMN); - if (DataConstants.NOTE.equals(type)) { - mContent = cursor.getString(DATA_CONTENT_COLUMN); - mMode = cursor.getInt(DATA_MODE_COLUMN); - mNote.setTextDataId(cursor.getLong(DATA_ID_COLUMN)); - } else if (DataConstants.CALL_NOTE.equals(type)) { - mNote.setCallDataId(cursor.getLong(DATA_ID_COLUMN)); - } else { - Log.d(TAG, "Wrong note type with type:" + type); - } - } while (cursor.moveToNext()); - } - cursor.close(); - } else { - Log.e(TAG, "No data with id:" + mNoteId); - throw new IllegalArgumentException("Unable to find note's data with id " + mNoteId); - } - } - - public static WorkingNote createEmptyNote(Context context, long folderId, int widgetId, - int widgetType, int defaultBgColorId) { - WorkingNote note = new WorkingNote(context, folderId); - note.setBgColorId(defaultBgColorId); - note.setWidgetId(widgetId); - note.setWidgetType(widgetType); - return note; - } - - public static WorkingNote load(Context context, long id) { - return new WorkingNote(context, id, 0); - } - - public synchronized boolean saveNote() { - if (isWorthSaving()) { - if (!existInDatabase()) { - if ((mNoteId = Note.getNewNoteId(mContext, mFolderId)) == 0) { - Log.e(TAG, "Create new note fail with id:" + mNoteId); - return false; - } - } - - mNote.syncNote(mContext, mNoteId); - - /** - * Update widget content if there exist any widget of this note - */ - if (mWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID - && mWidgetType != Notes.TYPE_WIDGET_INVALIDE - && mNoteSettingStatusListener != null) { - mNoteSettingStatusListener.onWidgetChanged(); - } - return true; - } else { - return false; - } - } - - public boolean existInDatabase() { - return mNoteId > 0; - } - - private boolean isWorthSaving() { - if (mIsDeleted || (!existInDatabase() && TextUtils.isEmpty(mContent)) - || (existInDatabase() && !mNote.isLocalModified())) { - return false; - } else { - return true; - } - } - - public void setOnSettingStatusChangedListener(NoteSettingChangedListener l) { - mNoteSettingStatusListener = l; - } - - public void setAlertDate(long date, boolean set) { - if (date != mAlertDate) { - mAlertDate = date; - mNote.setNoteValue(NoteColumns.ALERTED_DATE, String.valueOf(mAlertDate)); - } - if (mNoteSettingStatusListener != null) { - mNoteSettingStatusListener.onClockAlertChanged(date, set); - } - } - - public void markDeleted(boolean mark) { - mIsDeleted = mark; - if (mWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID - && mWidgetType != Notes.TYPE_WIDGET_INVALIDE && mNoteSettingStatusListener != null) { - mNoteSettingStatusListener.onWidgetChanged(); - } - } - - public void setBgColorId(int id) { - if (id != mBgColorId) { - mBgColorId = id; - if (mNoteSettingStatusListener != null) { - mNoteSettingStatusListener.onBackgroundColorChanged(); - } - mNote.setNoteValue(NoteColumns.BG_COLOR_ID, String.valueOf(id)); - } - } - - public void setCheckListMode(int mode) { - if (mMode != mode) { - if (mNoteSettingStatusListener != null) { - mNoteSettingStatusListener.onCheckListModeChanged(mMode, mode); - } - mMode = mode; - mNote.setTextData(TextNote.MODE, String.valueOf(mMode)); - } - } - - public void setWidgetType(int type) { - if (type != mWidgetType) { - mWidgetType = type; - mNote.setNoteValue(NoteColumns.WIDGET_TYPE, String.valueOf(mWidgetType)); - } - } - - public void setWidgetId(int id) { - if (id != mWidgetId) { - mWidgetId = id; - mNote.setNoteValue(NoteColumns.WIDGET_ID, String.valueOf(mWidgetId)); - } - } - - public void setWorkingText(String text) { - if (!TextUtils.equals(mContent, text)) { - mContent = text; - mNote.setTextData(DataColumns.CONTENT, mContent); - } - } - - public void convertToCallNote(String phoneNumber, long callDate) { - mNote.setCallData(CallNote.CALL_DATE, String.valueOf(callDate)); - mNote.setCallData(CallNote.PHONE_NUMBER, phoneNumber); - mNote.setNoteValue(NoteColumns.PARENT_ID, String.valueOf(Notes.ID_CALL_RECORD_FOLDER)); - } - - public boolean hasClockAlert() { - return (mAlertDate > 0 ? true : false); - } - - public String getContent() { - return mContent; - } - - public long getAlertDate() { - return mAlertDate; - } - - public long getModifiedDate() { - return mModifiedDate; - } - - public int getBgColorResId() { - return NoteBgResources.getNoteBgResource(mBgColorId); - } - - public int getBgColorId() { - return mBgColorId; - } - - public int getTitleBgResId() { - return NoteBgResources.getNoteTitleBgResource(mBgColorId); - } - - public int getCheckListMode() { - return mMode; - } - - public long getNoteId() { - return mNoteId; - } - - public long getFolderId() { - return mFolderId; - } - - public int getWidgetId() { - return mWidgetId; - } - - public int getWidgetType() { - return mWidgetType; - } - - public interface NoteSettingChangedListener { - /** - * Called when the background color of current note has just changed - */ - void onBackgroundColorChanged(); - - /** - * Called when user set clock - */ - void onClockAlertChanged(long date, boolean set); - - /** - * Call when user create note from widget - */ - void onWidgetChanged(); - - /** - * Call when switch between check list mode and normal mode - * @param oldMode is previous mode before change - * @param newMode is new mode - */ - void onCheckListModeChanged(int oldMode, int newMode); - } -} diff --git a/src/src/net/micode/notes/model/image.java b/src/src/net/micode/notes/model/image.java deleted file mode 100644 index 72be1d2..0000000 --- a/src/src/net/micode/notes/model/image.java +++ /dev/null @@ -1,66 +0,0 @@ -package net.micode.notes.model; - -class Blob { - private byte[] data; - - public Blob(byte[] data) { - this.data = data; - } - - public byte[] getData() { - return data; - } - - public void setData(byte[] data) { - this.data = data; - } -} -public class Image { - private String path; - private Blob thumbnail; - private Date uploadTime; - - public Image(String path, Blob thumbnail, Date uploadTime) { - this.path = path; - this.thumbnail = thumbnail; - this.uploadTime = uploadTime; - } - - public String getPath() { - return path; - } - - public void setPath(String path) { - this.path = path; - } - - public Blob getThumbnail() { - return thumbnail; - } - - public void setThumbnail(Blob thumbnail) { - this.thumbnail = thumbnail; - } - - public Date getUploadTime() { - return uploadTime; - } - - public void setUploadTime(Date uploadTime) { - this.uploadTime = uploadTime; - } - - public Blob getPreview() { - // Return the thumbnail as the preview - return thumbnail; - } - - public Object getMetadata() { - // Create a metadata object with relevant information - Map metadata = new HashMap<>(); - metadata.put("path", path); - metadata.put("uploadTime", uploadTime); - // Add more metadata fields if necessary - return metadata; - } -} \ No newline at end of file diff --git a/src/src/net/micode/notes/tool/BackupUtils.java b/src/src/net/micode/notes/tool/BackupUtils.java deleted file mode 100644 index 39f6ec4..0000000 --- a/src/src/net/micode/notes/tool/BackupUtils.java +++ /dev/null @@ -1,344 +0,0 @@ -/* - * 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.tool; - -import android.content.Context; -import android.database.Cursor; -import android.os.Environment; -import android.text.TextUtils; -import android.text.format.DateFormat; -import android.util.Log; - -import net.micode.notes.R; -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.DataColumns; -import net.micode.notes.data.Notes.DataConstants; -import net.micode.notes.data.Notes.NoteColumns; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.PrintStream; - - -public class BackupUtils { - private static final String TAG = "BackupUtils"; - // Singleton stuff - private static BackupUtils sInstance; - - public static synchronized BackupUtils getInstance(Context context) { - if (sInstance == null) { - sInstance = new BackupUtils(context); - } - return sInstance; - } - - /** - * Following states are signs to represents backup or restore - * status - */ - // Currently, the sdcard is not mounted - public static final int STATE_SD_CARD_UNMOUONTED = 0; - // The backup file not exist - public static final int STATE_BACKUP_FILE_NOT_EXIST = 1; - // The data is not well formated, may be changed by other programs - public static final int STATE_DATA_DESTROIED = 2; - // Some run-time exception which causes restore or backup fails - public static final int STATE_SYSTEM_ERROR = 3; - // Backup or restore success - public static final int STATE_SUCCESS = 4; - - private TextExport mTextExport; - - private BackupUtils(Context context) { - mTextExport = new TextExport(context); - } - - private static boolean externalStorageAvailable() { - return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()); - } - - public int exportToText() { - return mTextExport.exportToText(); - } - - public String getExportedTextFileName() { - return mTextExport.mFileName; - } - - public String getExportedTextFileDir() { - return mTextExport.mFileDirectory; - } - - private static class TextExport { - private static final String[] NOTE_PROJECTION = { - NoteColumns.ID, - NoteColumns.MODIFIED_DATE, - NoteColumns.SNIPPET, - NoteColumns.TYPE - }; - - private static final int NOTE_COLUMN_ID = 0; - - private static final int NOTE_COLUMN_MODIFIED_DATE = 1; - - private static final int NOTE_COLUMN_SNIPPET = 2; - - private static final String[] DATA_PROJECTION = { - DataColumns.CONTENT, - DataColumns.MIME_TYPE, - DataColumns.DATA1, - DataColumns.DATA2, - DataColumns.DATA3, - DataColumns.DATA4, - }; - - private static final int DATA_COLUMN_CONTENT = 0; - - private static final int DATA_COLUMN_MIME_TYPE = 1; - - private static final int DATA_COLUMN_CALL_DATE = 2; - - private static final int DATA_COLUMN_PHONE_NUMBER = 4; - - private final String [] TEXT_FORMAT; - private static final int FORMAT_FOLDER_NAME = 0; - private static final int FORMAT_NOTE_DATE = 1; - private static final int FORMAT_NOTE_CONTENT = 2; - - private Context mContext; - private String mFileName; - private String mFileDirectory; - - public TextExport(Context context) { - TEXT_FORMAT = context.getResources().getStringArray(R.array.format_for_exported_note); - mContext = context; - mFileName = ""; - mFileDirectory = ""; - } - - private String getFormat(int id) { - return TEXT_FORMAT[id]; - } - - /** - * Export the folder identified by folder id to text - */ - private void exportFolderToText(String folderId, PrintStream ps) { - // Query notes belong to this folder - Cursor notesCursor = mContext.getContentResolver().query(Notes.CONTENT_NOTE_URI, - NOTE_PROJECTION, NoteColumns.PARENT_ID + "=?", new String[] { - folderId - }, null); - - if (notesCursor != null) { - if (notesCursor.moveToFirst()) { - do { - // Print note's last modified date - ps.println(String.format(getFormat(FORMAT_NOTE_DATE), DateFormat.format( - mContext.getString(R.string.format_datetime_mdhm), - notesCursor.getLong(NOTE_COLUMN_MODIFIED_DATE)))); - // Query data belong to this note - String noteId = notesCursor.getString(NOTE_COLUMN_ID); - exportNoteToText(noteId, ps); - } while (notesCursor.moveToNext()); - } - notesCursor.close(); - } - } - - /** - * Export note identified by id to a print stream - */ - private void exportNoteToText(String noteId, PrintStream ps) { - Cursor dataCursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI, - DATA_PROJECTION, DataColumns.NOTE_ID + "=?", new String[] { - noteId - }, null); - - if (dataCursor != null) { - if (dataCursor.moveToFirst()) { - do { - String mimeType = dataCursor.getString(DATA_COLUMN_MIME_TYPE); - if (DataConstants.CALL_NOTE.equals(mimeType)) { - // Print phone number - String phoneNumber = dataCursor.getString(DATA_COLUMN_PHONE_NUMBER); - long callDate = dataCursor.getLong(DATA_COLUMN_CALL_DATE); - String location = dataCursor.getString(DATA_COLUMN_CONTENT); - - if (!TextUtils.isEmpty(phoneNumber)) { - ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), - phoneNumber)); - } - // Print call date - ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), DateFormat - .format(mContext.getString(R.string.format_datetime_mdhm), - callDate))); - // Print call attachment location - if (!TextUtils.isEmpty(location)) { - ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), - location)); - } - } else if (DataConstants.NOTE.equals(mimeType)) { - String content = dataCursor.getString(DATA_COLUMN_CONTENT); - if (!TextUtils.isEmpty(content)) { - ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), - content)); - } - } - } while (dataCursor.moveToNext()); - } - dataCursor.close(); - } - // print a line separator between note - try { - ps.write(new byte[] { - Character.LINE_SEPARATOR, Character.LETTER_NUMBER - }); - } catch (IOException e) { - Log.e(TAG, e.toString()); - } - } - - /** - * Note will be exported as text which is user readable - */ - public int exportToText() { - if (!externalStorageAvailable()) { - Log.d(TAG, "Media was not mounted"); - return STATE_SD_CARD_UNMOUONTED; - } - - PrintStream ps = getExportToTextPrintStream(); - if (ps == null) { - Log.e(TAG, "get print stream error"); - return STATE_SYSTEM_ERROR; - } - // First export folder and its notes - Cursor folderCursor = mContext.getContentResolver().query( - Notes.CONTENT_NOTE_URI, - NOTE_PROJECTION, - "(" + NoteColumns.TYPE + "=" + Notes.TYPE_FOLDER + " AND " - + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER + ") OR " - + NoteColumns.ID + "=" + Notes.ID_CALL_RECORD_FOLDER, null, null); - - if (folderCursor != null) { - if (folderCursor.moveToFirst()) { - do { - // Print folder's name - String folderName = ""; - if(folderCursor.getLong(NOTE_COLUMN_ID) == Notes.ID_CALL_RECORD_FOLDER) { - folderName = mContext.getString(R.string.call_record_folder_name); - } else { - folderName = folderCursor.getString(NOTE_COLUMN_SNIPPET); - } - if (!TextUtils.isEmpty(folderName)) { - ps.println(String.format(getFormat(FORMAT_FOLDER_NAME), folderName)); - } - String folderId = folderCursor.getString(NOTE_COLUMN_ID); - exportFolderToText(folderId, ps); - } while (folderCursor.moveToNext()); - } - folderCursor.close(); - } - - // Export notes in root's folder - Cursor noteCursor = mContext.getContentResolver().query( - Notes.CONTENT_NOTE_URI, - NOTE_PROJECTION, - NoteColumns.TYPE + "=" + +Notes.TYPE_NOTE + " AND " + NoteColumns.PARENT_ID - + "=0", null, null); - - if (noteCursor != null) { - if (noteCursor.moveToFirst()) { - do { - ps.println(String.format(getFormat(FORMAT_NOTE_DATE), DateFormat.format( - mContext.getString(R.string.format_datetime_mdhm), - noteCursor.getLong(NOTE_COLUMN_MODIFIED_DATE)))); - // Query data belong to this note - String noteId = noteCursor.getString(NOTE_COLUMN_ID); - exportNoteToText(noteId, ps); - } while (noteCursor.moveToNext()); - } - noteCursor.close(); - } - ps.close(); - - return STATE_SUCCESS; - } - - /** - * Get a print stream pointed to the file {@generateExportedTextFile} - */ - private PrintStream getExportToTextPrintStream() { - File file = generateFileMountedOnSDcard(mContext, R.string.file_path, - R.string.file_name_txt_format); - if (file == null) { - Log.e(TAG, "create file to exported failed"); - return null; - } - mFileName = file.getName(); - mFileDirectory = mContext.getString(R.string.file_path); - PrintStream ps = null; - try { - FileOutputStream fos = new FileOutputStream(file); - ps = new PrintStream(fos); - } catch (FileNotFoundException e) { - e.printStackTrace(); - return null; - } catch (NullPointerException e) { - e.printStackTrace(); - return null; - } - return ps; - } - } - - /** - * Generate the text file to store imported data - */ - private static File generateFileMountedOnSDcard(Context context, int filePathResId, int fileNameFormatResId) { - StringBuilder sb = new StringBuilder(); - sb.append(Environment.getExternalStorageDirectory()); - sb.append(context.getString(filePathResId)); - File filedir = new File(sb.toString()); - sb.append(context.getString( - fileNameFormatResId, - DateFormat.format(context.getString(R.string.format_date_ymd), - System.currentTimeMillis()))); - File file = new File(sb.toString()); - - try { - if (!filedir.exists()) { - filedir.mkdir(); - } - if (!file.exists()) { - file.createNewFile(); - } - return file; - } catch (SecurityException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - - return null; - } -} - - diff --git a/src/src/net/micode/notes/tool/DataUtils.java b/src/src/net/micode/notes/tool/DataUtils.java deleted file mode 100644 index 2a14982..0000000 --- a/src/src/net/micode/notes/tool/DataUtils.java +++ /dev/null @@ -1,295 +0,0 @@ -/* - * 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.tool; - -import android.content.ContentProviderOperation; -import android.content.ContentProviderResult; -import android.content.ContentResolver; -import android.content.ContentUris; -import android.content.ContentValues; -import android.content.OperationApplicationException; -import android.database.Cursor; -import android.os.RemoteException; -import android.util.Log; - -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.CallNote; -import net.micode.notes.data.Notes.NoteColumns; -import net.micode.notes.ui.NotesListAdapter.AppWidgetAttribute; - -import java.util.ArrayList; -import java.util.HashSet; - - -public class DataUtils { - public static final String TAG = "DataUtils"; - public static boolean batchDeleteNotes(ContentResolver resolver, HashSet ids) { - if (ids == null) { - Log.d(TAG, "the ids is null"); - return true; - } - if (ids.size() == 0) { - Log.d(TAG, "no id is in the hashset"); - return true; - } - - ArrayList operationList = new ArrayList(); - for (long id : ids) { - if(id == Notes.ID_ROOT_FOLDER) { - Log.e(TAG, "Don't delete system folder root"); - continue; - } - ContentProviderOperation.Builder builder = ContentProviderOperation - .newDelete(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id)); - operationList.add(builder.build()); - } - try { - ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList); - if (results == null || results.length == 0 || results[0] == null) { - Log.d(TAG, "delete notes failed, ids:" + ids.toString()); - return false; - } - return true; - } catch (RemoteException e) { - Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); - } catch (OperationApplicationException e) { - Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); - } - return false; - } - - public static void moveNoteToFoler(ContentResolver resolver, long id, long srcFolderId, long desFolderId) { - ContentValues values = new ContentValues(); - values.put(NoteColumns.PARENT_ID, desFolderId); - values.put(NoteColumns.ORIGIN_PARENT_ID, srcFolderId); - values.put(NoteColumns.LOCAL_MODIFIED, 1); - resolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id), values, null, null); - } - - public static boolean batchMoveToFolder(ContentResolver resolver, HashSet ids, - long folderId) { - if (ids == null) { - Log.d(TAG, "the ids is null"); - return true; - } - - ArrayList operationList = new ArrayList(); - for (long id : ids) { - ContentProviderOperation.Builder builder = ContentProviderOperation - .newUpdate(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id)); - builder.withValue(NoteColumns.PARENT_ID, folderId); - builder.withValue(NoteColumns.LOCAL_MODIFIED, 1); - operationList.add(builder.build()); - } - - try { - ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList); - if (results == null || results.length == 0 || results[0] == null) { - Log.d(TAG, "delete notes failed, ids:" + ids.toString()); - return false; - } - return true; - } catch (RemoteException e) { - Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); - } catch (OperationApplicationException e) { - Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); - } - return false; - } - - /** - * Get the all folder count except system folders {@link Notes#TYPE_SYSTEM}} - */ - public static int getUserFolderCount(ContentResolver resolver) { - Cursor cursor =resolver.query(Notes.CONTENT_NOTE_URI, - new String[] { "COUNT(*)" }, - NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>?", - new String[] { String.valueOf(Notes.TYPE_FOLDER), String.valueOf(Notes.ID_TRASH_FOLER)}, - null); - - int count = 0; - if(cursor != null) { - if(cursor.moveToFirst()) { - try { - count = cursor.getInt(0); - } catch (IndexOutOfBoundsException e) { - Log.e(TAG, "get folder count failed:" + e.toString()); - } finally { - cursor.close(); - } - } - } - return count; - } - - public static boolean visibleInNoteDatabase(ContentResolver resolver, long noteId, int type) { - Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), - null, - NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER, - new String [] {String.valueOf(type)}, - null); - - boolean exist = false; - if (cursor != null) { - if (cursor.getCount() > 0) { - exist = true; - } - cursor.close(); - } - return exist; - } - - public static boolean existInNoteDatabase(ContentResolver resolver, long noteId) { - Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), - null, null, null, null); - - boolean exist = false; - if (cursor != null) { - if (cursor.getCount() > 0) { - exist = true; - } - cursor.close(); - } - return exist; - } - - public static boolean existInDataDatabase(ContentResolver resolver, long dataId) { - Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId), - null, null, null, null); - - boolean exist = false; - if (cursor != null) { - if (cursor.getCount() > 0) { - exist = true; - } - cursor.close(); - } - return exist; - } - - public static boolean checkVisibleFolderName(ContentResolver resolver, String name) { - Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, null, - NoteColumns.TYPE + "=" + Notes.TYPE_FOLDER + - " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER + - " AND " + NoteColumns.SNIPPET + "=?", - new String[] { name }, null); - boolean exist = false; - if(cursor != null) { - if(cursor.getCount() > 0) { - exist = true; - } - cursor.close(); - } - return exist; - } - - public static HashSet getFolderNoteWidget(ContentResolver resolver, long folderId) { - Cursor c = resolver.query(Notes.CONTENT_NOTE_URI, - new String[] { NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE }, - NoteColumns.PARENT_ID + "=?", - new String[] { String.valueOf(folderId) }, - null); - - HashSet set = null; - if (c != null) { - if (c.moveToFirst()) { - set = new HashSet(); - do { - try { - AppWidgetAttribute widget = new AppWidgetAttribute(); - widget.widgetId = c.getInt(0); - widget.widgetType = c.getInt(1); - set.add(widget); - } catch (IndexOutOfBoundsException e) { - Log.e(TAG, e.toString()); - } - } while (c.moveToNext()); - } - c.close(); - } - return set; - } - - public static String getCallNumberByNoteId(ContentResolver resolver, long noteId) { - Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, - new String [] { CallNote.PHONE_NUMBER }, - CallNote.NOTE_ID + "=? AND " + CallNote.MIME_TYPE + "=?", - new String [] { String.valueOf(noteId), CallNote.CONTENT_ITEM_TYPE }, - null); - - if (cursor != null && cursor.moveToFirst()) { - try { - return cursor.getString(0); - } catch (IndexOutOfBoundsException e) { - Log.e(TAG, "Get call number fails " + e.toString()); - } finally { - cursor.close(); - } - } - return ""; - } - - public static long getNoteIdByPhoneNumberAndCallDate(ContentResolver resolver, String phoneNumber, long callDate) { - Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, - new String [] { CallNote.NOTE_ID }, - CallNote.CALL_DATE + "=? AND " + CallNote.MIME_TYPE + "=? AND PHONE_NUMBERS_EQUAL(" - + CallNote.PHONE_NUMBER + ",?)", - new String [] { String.valueOf(callDate), CallNote.CONTENT_ITEM_TYPE, phoneNumber }, - null); - - if (cursor != null) { - if (cursor.moveToFirst()) { - try { - return cursor.getLong(0); - } catch (IndexOutOfBoundsException e) { - Log.e(TAG, "Get call note id fails " + e.toString()); - } - } - cursor.close(); - } - return 0; - } - - public static String getSnippetById(ContentResolver resolver, long noteId) { - Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, - new String [] { NoteColumns.SNIPPET }, - NoteColumns.ID + "=?", - new String [] { String.valueOf(noteId)}, - null); - - if (cursor != null) { - String snippet = ""; - if (cursor.moveToFirst()) { - snippet = cursor.getString(0); - } - cursor.close(); - return snippet; - } - throw new IllegalArgumentException("Note is not found with id: " + noteId); - } - - public static String getFormattedSnippet(String snippet) { - if (snippet != null) { - snippet = snippet.trim(); - int index = snippet.indexOf('\n'); - if (index != -1) { - snippet = snippet.substring(0, index); - } - } - return snippet; - } -} diff --git a/src/src/net/micode/notes/tool/GTaskStringUtils.java b/src/src/net/micode/notes/tool/GTaskStringUtils.java deleted file mode 100644 index 666b729..0000000 --- a/src/src/net/micode/notes/tool/GTaskStringUtils.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * 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.tool; - -public class GTaskStringUtils { - - public final static String GTASK_JSON_ACTION_ID = "action_id"; - - public final static String GTASK_JSON_ACTION_LIST = "action_list"; - - public final static String GTASK_JSON_ACTION_TYPE = "action_type"; - - public final static String GTASK_JSON_ACTION_TYPE_CREATE = "create"; - - public final static String GTASK_JSON_ACTION_TYPE_GETALL = "get_all"; - - public final static String GTASK_JSON_ACTION_TYPE_MOVE = "move"; - - public final static String GTASK_JSON_ACTION_TYPE_UPDATE = "update"; - - public final static String GTASK_JSON_CREATOR_ID = "creator_id"; - - public final static String GTASK_JSON_CHILD_ENTITY = "child_entity"; - - public final static String GTASK_JSON_CLIENT_VERSION = "client_version"; - - public final static String GTASK_JSON_COMPLETED = "completed"; - - public final static String GTASK_JSON_CURRENT_LIST_ID = "current_list_id"; - - public final static String GTASK_JSON_DEFAULT_LIST_ID = "default_list_id"; - - public final static String GTASK_JSON_DELETED = "deleted"; - - public final static String GTASK_JSON_DEST_LIST = "dest_list"; - - public final static String GTASK_JSON_DEST_PARENT = "dest_parent"; - - public final static String GTASK_JSON_DEST_PARENT_TYPE = "dest_parent_type"; - - public final static String GTASK_JSON_ENTITY_DELTA = "entity_delta"; - - public final static String GTASK_JSON_ENTITY_TYPE = "entity_type"; - - public final static String GTASK_JSON_GET_DELETED = "get_deleted"; - - public final static String GTASK_JSON_ID = "id"; - - public final static String GTASK_JSON_INDEX = "index"; - - public final static String GTASK_JSON_LAST_MODIFIED = "last_modified"; - - public final static String GTASK_JSON_LATEST_SYNC_POINT = "latest_sync_point"; - - public final static String GTASK_JSON_LIST_ID = "list_id"; - - public final static String GTASK_JSON_LISTS = "lists"; - - public final static String GTASK_JSON_NAME = "name"; - - public final static String GTASK_JSON_NEW_ID = "new_id"; - - public final static String GTASK_JSON_NOTES = "notes"; - - public final static String GTASK_JSON_PARENT_ID = "parent_id"; - - public final static String GTASK_JSON_PRIOR_SIBLING_ID = "prior_sibling_id"; - - public final static String GTASK_JSON_RESULTS = "results"; - - public final static String GTASK_JSON_SOURCE_LIST = "source_list"; - - public final static String GTASK_JSON_TASKS = "tasks"; - - public final static String GTASK_JSON_TYPE = "type"; - - public final static String GTASK_JSON_TYPE_GROUP = "GROUP"; - - public final static String GTASK_JSON_TYPE_TASK = "TASK"; - - public final static String GTASK_JSON_USER = "user"; - - public final static String MIUI_FOLDER_PREFFIX = "[MIUI_Notes]"; - - public final static String FOLDER_DEFAULT = "Default"; - - public final static String FOLDER_CALL_NOTE = "Call_Note"; - - public final static String FOLDER_META = "METADATA"; - - public final static String META_HEAD_GTASK_ID = "meta_gid"; - - public final static String META_HEAD_NOTE = "meta_note"; - - public final static String META_HEAD_DATA = "meta_data"; - - public final static String META_NOTE_NAME = "[META INFO] DON'T UPDATE AND DELETE"; - -} diff --git a/src/src/net/micode/notes/tool/ResourceParser.java b/src/src/net/micode/notes/tool/ResourceParser.java deleted file mode 100644 index 1ad3ad6..0000000 --- a/src/src/net/micode/notes/tool/ResourceParser.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * 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.tool; - -import android.content.Context; -import android.preference.PreferenceManager; - -import net.micode.notes.R; -import net.micode.notes.ui.NotesPreferenceActivity; - -public class ResourceParser { - - public static final int YELLOW = 0; - public static final int BLUE = 1; - public static final int WHITE = 2; - public static final int GREEN = 3; - public static final int RED = 4; - - public static final int BG_DEFAULT_COLOR = YELLOW; - - public static final int TEXT_SMALL = 0; - public static final int TEXT_MEDIUM = 1; - public static final int TEXT_LARGE = 2; - public static final int TEXT_SUPER = 3; - - public static final int BG_DEFAULT_FONT_SIZE = TEXT_MEDIUM; - - public static class NoteBgResources { - private final static int [] BG_EDIT_RESOURCES = new int [] { - R.drawable.edit_yellow, - R.drawable.edit_blue, - R.drawable.edit_white, - R.drawable.edit_green, - R.drawable.edit_red - }; - - private final static int [] BG_EDIT_TITLE_RESOURCES = new int [] { - R.drawable.edit_title_yellow, - R.drawable.edit_title_blue, - R.drawable.edit_title_white, - R.drawable.edit_title_green, - R.drawable.edit_title_red - }; - - public static int getNoteBgResource(int id) { - return BG_EDIT_RESOURCES[id]; - } - - public static int getNoteTitleBgResource(int id) { - return BG_EDIT_TITLE_RESOURCES[id]; - } - } - - public static int getDefaultBgId(Context context) { - if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean( - NotesPreferenceActivity.PREFERENCE_SET_BG_COLOR_KEY, false)) { - return (int) (Math.random() * NoteBgResources.BG_EDIT_RESOURCES.length); - } else { - return BG_DEFAULT_COLOR; - } - } - - public static class NoteItemBgResources { - private final static int [] BG_FIRST_RESOURCES = new int [] { - R.drawable.list_yellow_up, - R.drawable.list_blue_up, - R.drawable.list_white_up, - R.drawable.list_green_up, - R.drawable.list_red_up - }; - - private final static int [] BG_NORMAL_RESOURCES = new int [] { - R.drawable.list_yellow_middle, - R.drawable.list_blue_middle, - R.drawable.list_white_middle, - R.drawable.list_green_middle, - R.drawable.list_red_middle - }; - - private final static int [] BG_LAST_RESOURCES = new int [] { - R.drawable.list_yellow_down, - R.drawable.list_blue_down, - R.drawable.list_white_down, - R.drawable.list_green_down, - R.drawable.list_red_down, - }; - - private final static int [] BG_SINGLE_RESOURCES = new int [] { - R.drawable.list_yellow_single, - R.drawable.list_blue_single, - R.drawable.list_white_single, - R.drawable.list_green_single, - R.drawable.list_red_single - }; - - public static int getNoteBgFirstRes(int id) { - return BG_FIRST_RESOURCES[id]; - } - - public static int getNoteBgLastRes(int id) { - return BG_LAST_RESOURCES[id]; - } - - public static int getNoteBgSingleRes(int id) { - return BG_SINGLE_RESOURCES[id]; - } - - public static int getNoteBgNormalRes(int id) { - return BG_NORMAL_RESOURCES[id]; - } - - public static int getFolderBgRes() { - return R.drawable.list_folder; - } - } - - public static class WidgetBgResources { - private final static int [] BG_2X_RESOURCES = new int [] { - R.drawable.widget_2x_yellow, - R.drawable.widget_2x_blue, - R.drawable.widget_2x_white, - R.drawable.widget_2x_green, - R.drawable.widget_2x_red, - }; - - public static int getWidget2xBgResource(int id) { - return BG_2X_RESOURCES[id]; - } - - private final static int [] BG_4X_RESOURCES = new int [] { - R.drawable.widget_4x_yellow, - R.drawable.widget_4x_blue, - R.drawable.widget_4x_white, - R.drawable.widget_4x_green, - R.drawable.widget_4x_red - }; - - public static int getWidget4xBgResource(int id) { - return BG_4X_RESOURCES[id]; - } - } - - public static class TextAppearanceResources { - private final static int [] TEXTAPPEARANCE_RESOURCES = new int [] { - R.style.TextAppearanceNormal, - R.style.TextAppearanceMedium, - R.style.TextAppearanceLarge, - R.style.TextAppearanceSuper - }; - - public static int getTexAppearanceResource(int id) { - /** - * HACKME: Fix bug of store the resource id in shared preference. - * The id may larger than the length of resources, in this case, - * return the {@link ResourceParser#BG_DEFAULT_FONT_SIZE} - */ - if (id >= TEXTAPPEARANCE_RESOURCES.length) { - return BG_DEFAULT_FONT_SIZE; - } - return TEXTAPPEARANCE_RESOURCES[id]; - } - - public static int getResourcesSize() { - return TEXTAPPEARANCE_RESOURCES.length; - } - } -} diff --git a/src/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/src/net/micode/notes/ui/AlarmAlertActivity.java deleted file mode 100644 index 657a3b4..0000000 --- a/src/src/net/micode/notes/ui/AlarmAlertActivity.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * 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; -import android.app.AlertDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.content.DialogInterface.OnClickListener; -import android.content.DialogInterface.OnDismissListener; -import android.content.Intent; -import android.media.AudioManager; -import android.media.MediaPlayer; -import android.media.RingtoneManager; -import android.net.Uri; -import android.os.Bundle; -import android.os.PowerManager; -import android.provider.Settings; -import android.view.Window; -import android.view.WindowManager; - -import net.micode.notes.R; -import net.micode.notes.data.Notes; -import net.micode.notes.tool.DataUtils; - -import java.io.IOException; - - -public class AlarmAlertActivity extends Activity implements OnClickListener, OnDismissListener { - // 定义笔记ID和笔记摘要 - private long mNoteId; - private String mSnippet; - // 定义笔记摘要的最大预览长度 - private static final int SNIPPET_PREW_MAX_LEN = 60; - // 定义MediaPlayer对象用于播放闹钟声音 - MediaPlayer mPlayer; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - // 去掉标题栏 - requestWindowFeature(Window.FEATURE_NO_TITLE); - - // 获取当前窗口对象 - final Window win = getWindow(); - // 设置窗口标志,使应用在锁屏时也能显示 - win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); - - // 如果屏幕未亮,则设置窗口标志以保持屏幕常亮并点亮屏幕 - if (!isScreenOn()) { - 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); - } - - // 获取启动当前Activity的Intent - Intent intent = getIntent(); - - 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; - } catch (IllegalArgumentException e) { - e.printStackTrace(); - return; - } - - // 初始化MediaPlayer对象 - mPlayer = new MediaPlayer(); - // 如果笔记在数据库中可见,则显示操作对话框并播放闹钟声音 - if (DataUtils.visibleInNoteDatabase(getContentResolver(), mNoteId, Notes.TYPE_NOTE)) { - showActionDialog(); - playAlarmSound(); - } else { - // 否则结束当前Activity - finish(); - } - } - - // 判断屏幕是否亮起 - private boolean isScreenOn() { - PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); - return pm.isScreenOn(); - } - - // 播放闹钟声音 - private void playAlarmSound() { - // 获取默认闹钟铃声的Uri - Uri url = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM); - - // 获取当前静音模式下的音频流设置 - int silentModeStreams = Settings.System.getInt(getContentResolver(), - Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0); - - // 如果闹钟音频流在静音模式下受影响,则设置MediaPlayer的音频流类型为静音模式下的音频流类型 - if ((silentModeStreams & (1 << AudioManager.STREAM_ALARM)) != 0) { - mPlayer.setAudioStreamType(silentModeStreams); - } else { - mPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); - } - try { - // 设置MediaPlayer的数据源 - mPlayer.setDataSource(this, url); - // 准备MediaPlayer - mPlayer.prepare(); - // 设置MediaPlayer循环播放 - mPlayer.setLooping(true); - // 开始播放 - mPlayer.start(); - } catch (IllegalArgumentException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (SecurityException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IllegalStateException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - // 定义一个私有方法showActionDialog,用于显示一个操作对话框 - private void showActionDialog() { - // 创建一个AlertDialog.Builder对象,用于构建对话框 - AlertDialog.Builder dialog = new AlertDialog.Builder(this); - // 设置对话框的标题,使用资源文件中的app_name字符串 - dialog.setTitle(R.string.app_name); - // 设置对话框的消息内容,使用成员变量mSnippet的值 - dialog.setMessage(mSnippet); - // 设置对话框的确定按钮,按钮文本使用资源文件中的notealert_ok字符串,点击事件监听器为当前对象 - dialog.setPositiveButton(R.string.notealert_ok, this); - // 检查屏幕是否处于开启状态 - if (isScreenOn()) { - // 如果屏幕开启,则设置对话框的取消按钮,按钮文本使用资源文件中的notealert_enter字符串,点击事件监听器为当前对象 - dialog.setNegativeButton(R.string.notealert_enter, this); - } - // 显示对话框,并设置对话框消失时的监听器为当前对象 - dialog.show().setOnDismissListener(this); - } - - // 定义一个方法来处理对话框点击事件 - public void onClick(DialogInterface dialog, int which) { - // 使用switch语句根据点击的按钮类型进行不同的处理 - switch (which) { - // 如果点击的是否定按钮(例如“取消”或“否”) - case DialogInterface.BUTTON_NEGATIVE: - // 创建一个新的Intent对象,用于启动NoteEditActivity - Intent intent = new Intent(this, NoteEditActivity.class); - // 设置Intent的动作类型为查看(ACTION_VIEW) - intent.setAction(Intent.ACTION_VIEW); - // 向Intent中添加一个额外的数据,即笔记的ID - intent.putExtra(Intent.EXTRA_UID, mNoteId); - // 启动NoteEditActivity,传递Intent对象 - startActivity(intent); - break; - // 默认情况下,不进行任何操作 - default: - break; - } - } - - // 定义一个方法,当对话框被取消或关闭时调用 - public void onDismiss(DialogInterface dialog) { - // 调用stopAlarmSound方法,停止报警声音 - stopAlarmSound(); - // 调用finish方法,结束当前Activity - finish(); - } - - // 停止报警声音的方法 - private void stopAlarmSound() { - // 检查mPlayer对象是否不为空,以避免空指针异常 - if (mPlayer != null) { - // 调用mPlayer的stop方法停止播放声音 - mPlayer.stop(); - // 调用mPlayer的release方法释放资源 - mPlayer.release(); - // 将mPlayer对象设置为null,表示不再使用 - mPlayer = null; - } - } -} diff --git a/src/src/net/micode/notes/ui/AlarmInitReceiver.java b/src/src/net/micode/notes/ui/AlarmInitReceiver.java deleted file mode 100644 index 6db582e..0000000 --- a/src/src/net/micode/notes/ui/AlarmInitReceiver.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * 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; -import android.app.PendingIntent; -import android.content.BroadcastReceiver; -import android.content.ContentUris; -import android.content.Context; -import android.content.Intent; -import android.database.Cursor; - -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.NoteColumns; - - -public class AlarmInitReceiver extends BroadcastReceiver { - - // 定义查询所需的列 - private static final String [] PROJECTION = new String [] { - NoteColumns.ID, // 笔记的ID - NoteColumns.ALERTED_DATE // 笔记的提醒日期 - }; - - - - // 定义列的索引 - private static final int COLUMN_ID = 0; // ID列的索引 - private static final int COLUMN_ALERTED_DATE = 1; // 提醒日期列的索引 - - @Override - public void onReceive(Context context, Intent intent) { - // 获取当前时间 - long currentDate = 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); // 排序参数 - - // 如果查询结果不为空 - if (c != null) { - // 如果有记录 - if (c.moveToFirst()) { - // 遍历所有记录 - do { - // 获取提醒日期 - long alertDate = c.getLong(COLUMN_ALERTED_DATE); - // 创建一个新的Intent,用于启动AlarmReceiver - Intent sender = new Intent(context, AlarmReceiver.class); - // 设置Intent的数据URI,包含笔记的ID - sender.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, c.getLong(COLUMN_ID))); - // 创建PendingIntent,用于延迟执行Intent - PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, sender, 0); - // 获取AlarmManager服务 - AlarmManager alermManager = (AlarmManager) context - .getSystemService(Context.ALARM_SERVICE); - // 设置闹钟,在指定时间唤醒设备并执行Intent - alermManager.set(AlarmManager.RTC_WAKEUP, alertDate, pendingIntent); - } while (c.moveToNext()); // 移动到下一条记录 - } - // 关闭Cursor - c.close(); - } - } -} diff --git a/src/src/net/micode/notes/ui/AlarmReceiver.java b/src/src/net/micode/notes/ui/AlarmReceiver.java deleted file mode 100644 index a05e61f..0000000 --- a/src/src/net/micode/notes/ui/AlarmReceiver.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; - -// 定义一个名为AlarmReceiver的类,继承自BroadcastReceiver,用于接收广播消息 -public class AlarmReceiver extends BroadcastReceiver { - // 重写onReceive方法,该方法会在接收到广播时被调用 - @Override - public void onReceive(Context context, Intent intent) { - // 将Intent的目标组件设置为AlarmAlertActivity类,即指定广播接收后要启动的Activity - intent.setClass(context, AlarmAlertActivity.class); - // 向Intent中添加FLAG_ACTIVITY_NEW_TASK标志,表示启动一个新的任务来承载该Activity - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - // 使用上下文context启动Activity,传入设置好的Intent对象 - context.startActivity(intent); - } -} diff --git a/src/src/net/micode/notes/ui/DateTimePicker.java b/src/src/net/micode/notes/ui/DateTimePicker.java deleted file mode 100644 index 9a0d587..0000000 --- a/src/src/net/micode/notes/ui/DateTimePicker.java +++ /dev/null @@ -1,648 +0,0 @@ -/* - * 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; -import java.util.Calendar; - -import net.micode.notes.R; - - -import android.content.Context; -import android.text.format.DateFormat; -import android.view.View; -import android.widget.FrameLayout; -import android.widget.NumberPicker; - -public class DateTimePicker extends FrameLayout { - - // 默认启用状态 - private static final boolean DEFAULT_ENABLE_STATE = true; - - // 一半天的小时数 - private static final int HOURS_IN_HALF_DAY = 12; - // 一天的小时数 - private static final int HOURS_IN_ALL_DAY = 24; - // 一周的天数 - private static final int DAYS_IN_ALL_WEEK = 7; - // 日期选择器的最小值 - private static final int DATE_SPINNER_MIN_VAL = 0; - // 日期选择器的最大值 - private static final int DATE_SPINNER_MAX_VAL = DAYS_IN_ALL_WEEK - 1; - // 24小时制小时选择器的最小值 - private static final int HOUR_SPINNER_MIN_VAL_24_HOUR_VIEW = 0; - // 24小时制小时选择器的最大值 - private static final int HOUR_SPINNER_MAX_VAL_24_HOUR_VIEW = 23; - // 12小时制小时选择器的最小值 - private static final int HOUR_SPINNER_MIN_VAL_12_HOUR_VIEW = 1; - // 12小时制小时选择器的最大值 - private static final int HOUR_SPINNER_MAX_VAL_12_HOUR_VIEW = 12; - // 分钟选择器的最小值 - private static final int MINUT_SPINNER_MIN_VAL = 0; - // 分钟选择器的最大值 - private static final int MINUT_SPINNER_MAX_VAL = 59; - // AM/PM选择器的最小值 - private static final int AMPM_SPINNER_MIN_VAL = 0; - // AM/PM选择器的最大值 - private static final int AMPM_SPINNER_MAX_VAL = 1; - - // 日期选择器 - private final NumberPicker mDateSpinner; - // 小时选择器 - private final NumberPicker mHourSpinner; - // 分钟选择器 - private final NumberPicker mMinuteSpinner; - // AM/PM选择器 - private final NumberPicker mAmPmSpinner; - // 日期对象 - private Calendar mDate; - - // 日期显示值数组 - private String[] mDateDisplayValues = new String[DAYS_IN_ALL_WEEK]; - - // 是否为AM - private boolean mIsAm; - - // 是否为24小时制 - private boolean mIs24HourView; - - // 是否启用 - private boolean mIsEnabled = DEFAULT_ENABLE_STATE; - - // 是否正在初始化 - private boolean mInitialising; - - // 日期时间变化监听器 - private OnDateTimeChangedListener mOnDateTimeChangedListener; - - // 日期变化监听器 - private NumberPicker.OnValueChangeListener mOnDateChangedListener = new NumberPicker.OnValueChangeListener() { - @Override - public void onValueChange(NumberPicker picker, int oldVal, int newVal) { - mDate.add(Calendar.DAY_OF_YEAR, newVal - oldVal); - updateDateControl(); - onDateTimeChanged(); - } - }; - - // 小时变化监听器 - private NumberPicker.OnValueChangeListener mOnHourChangedListener = new NumberPicker.OnValueChangeListener() { - @Override - public void onValueChange(NumberPicker picker, int oldVal, int newVal) { - boolean isDateChanged = false; - Calendar cal = Calendar.getInstance(); - 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; - } 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; - } - 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(); - } - } else { - if (oldVal == HOURS_IN_ALL_DAY - 1 && newVal == 0) { - cal.setTimeInMillis(mDate.getTimeInMillis()); - cal.add(Calendar.DAY_OF_YEAR, 1); - isDateChanged = true; - } else if (oldVal == 0 && newVal == HOURS_IN_ALL_DAY - 1) { - cal.setTimeInMillis(mDate.getTimeInMillis()); - cal.add(Calendar.DAY_OF_YEAR, -1); - isDateChanged = true; - } - } - int newHour = mHourSpinner.getValue() % HOURS_IN_HALF_DAY + (mIsAm ? 0 : HOURS_IN_HALF_DAY); - mDate.set(Calendar.HOUR_OF_DAY, newHour); - onDateTimeChanged(); - if (isDateChanged) { - setCurrentYear(cal.get(Calendar.YEAR)); - setCurrentMonth(cal.get(Calendar.MONTH)); - setCurrentDay(cal.get(Calendar.DAY_OF_MONTH)); - } - } - }; - - // 分钟变化监听器 - private NumberPicker.OnValueChangeListener mOnMinuteChangedListener = new NumberPicker.OnValueChangeListener() { - @Override - public void onValueChange(NumberPicker picker, int oldVal, int newVal) { - int minValue = mMinuteSpinner.getMinValue(); - int maxValue = mMinuteSpinner.getMaxValue(); - int offset = 0; - if (oldVal == maxValue && newVal == minValue) { - offset += 1; - } else if (oldVal == minValue && newVal == maxValue) { - offset -= 1; - } - if (offset != 0) { - mDate.add(Calendar.HOUR_OF_DAY, offset); - mHourSpinner.setValue(getCurrentHour()); - updateDateControl(); - int newHour = getCurrentHourOfDay(); - if (newHour >= HOURS_IN_HALF_DAY) { - mIsAm = false; - updateAmPmControl(); - } else { - mIsAm = true; - updateAmPmControl(); - } - } - mDate.set(Calendar.MINUTE, newVal); - onDateTimeChanged(); - } - }; - - // AM/PM变化监听器 - private NumberPicker.OnValueChangeListener mOnAmPmChangedListener = new NumberPicker.OnValueChangeListener() { - @Override - public void onValueChange(NumberPicker picker, int oldVal, int newVal) { - mIsAm = !mIsAm; - if (mIsAm) { - mDate.add(Calendar.HOUR_OF_DAY, -HOURS_IN_HALF_DAY); - } else { - mDate.add(Calendar.HOUR_OF_DAY, HOURS_IN_HALF_DAY); - } - updateAmPmControl(); - onDateTimeChanged(); - } - }; - - // 日期时间变化监听器接口 - public interface OnDateTimeChangedListener { - void onDateTimeChanged(DateTimePicker view, int year, int month, - int dayOfMonth, int hourOfDay, int minute); - } - - // 构造函数 - // 构造函数,用于创建DateTimePicker对象 - // 参数context:上下文对象,用于获取应用环境和资源 - public DateTimePicker(Context context) { - // 调用另一个构造函数,传入当前系统时间作为默认时间 - // System.currentTimeMillis():获取当前系统时间的毫秒值 - this(context, System.currentTimeMillis()); - } - - // 构造函数,用于创建DateTimePicker对象 - // 参数context:上下文对象,用于获取系统资源和配置 - // 参数date:初始日期时间,以毫秒为单位的长整型数值 - public DateTimePicker(Context context, long date) { - // 调用另一个构造函数,传入上下文对象、初始日期时间和是否使用24小时制 - // DateFormat.is24HourFormat(context)方法用于判断当前系统是否使用24小时制 - this(context, date, DateFormat.is24HourFormat(context)); - } - - // 构造函数,用于初始化DateTimePicker对象 - public DateTimePicker(Context context, long date, boolean is24HourView) { - // 调用父类的构造函数,传入上下文 - super(context); - // 初始化Calendar对象,用于存储日期和时间 - mDate = Calendar.getInstance(); - // 设置初始化标志为true,表示正在初始化 - mInitialising = true; - // 判断当前时间是上午还是下午 - mIsAm = getCurrentHourOfDay() >= HOURS_IN_HALF_DAY; - // 加载布局文件datetime_picker.xml,并将其添加到当前视图 - inflate(context, R.layout.datetime_picker, this); - - // 获取日期选择器NumberPicker,并设置其最小值和最大值 - mDateSpinner = (NumberPicker) findViewById(R.id.date); - mDateSpinner.setMinValue(DATE_SPINNER_MIN_VAL); - mDateSpinner.setMaxValue(DATE_SPINNER_MAX_VAL); - // 设置日期选择器的值变化监听器 - mDateSpinner.setOnValueChangedListener(mOnDateChangedListener); - - // 获取小时选择器NumberPicker,并设置其值变化监听器 - mHourSpinner = (NumberPicker) findViewById(R.id.hour); - mHourSpinner.setOnValueChangedListener(mOnHourChangedListener); - // 获取分钟选择器NumberPicker,并设置其最小值、最大值和长按更新间隔 - mMinuteSpinner = (NumberPicker) findViewById(R.id.minute); - mMinuteSpinner.setMinValue(MINUT_SPINNER_MIN_VAL); - mMinuteSpinner.setMaxValue(MINUT_SPINNER_MAX_VAL); - mMinuteSpinner.setOnLongPressUpdateInterval(100); - // 设置分钟选择器的值变化监听器 - mMinuteSpinner.setOnValueChangedListener(mOnMinuteChangedListener); - - // 获取上午/下午选择器NumberPicker,并设置其显示值和值变化监听器 - String[] stringsForAmPm = new DateFormatSymbols().getAmPmStrings(); - mAmPmSpinner = (NumberPicker) findViewById(R.id.amPm); - mAmPmSpinner.setMinValue(AMPM_SPINNER_MIN_VAL); - mAmPmSpinner.setMaxValue(AMPM_SPINNER_MAX_VAL); - mAmPmSpinner.setDisplayedValues(stringsForAmPm); - mAmPmSpinner.setOnValueChangedListener(mOnAmPmChangedListener); - - // update controls to initial state - updateDateControl(); - updateHourControl(); - updateAmPmControl(); - - set24HourView(is24HourView); - - // set to current time - setCurrentDate(date); - - setEnabled(isEnabled()); - - // set the content descriptions - mInitialising = false; - } - - @Override - public void setEnabled(boolean enabled) { - // 检查当前状态是否与要设置的状态相同,如果相同则直接返回,避免重复设置 - if (mIsEnabled == enabled) { - return; - } - // 调用父类的setEnabled方法,设置组件的基本启用状态 - super.setEnabled(enabled); - // 设置日期选择器的启用状态 - mDateSpinner.setEnabled(enabled); - // 设置分钟选择器的启用状态 - mMinuteSpinner.setEnabled(enabled); - // 设置小时选择器的启用状态 - mHourSpinner.setEnabled(enabled); - // 设置上午/下午选择器的启用状态 - mAmPmSpinner.setEnabled(enabled); - // 更新当前组件的启用状态标志 - mIsEnabled = enabled; - } - - // 重写父类或接口中的isEnabled方法 - @Override - public boolean isEnabled() { - // 返回成员变量mIsEnabled的值,表示当前对象是否启用 - return mIsEnabled; - } - - /** - * Get the current date in millis - * - * @return the current date in millis - */ - public long getCurrentDateInTimeMillis() { - return mDate.getTimeInMillis(); - } - - /** - * Set the current date - * - * @param date The current date in millis - */ - // 定义一个方法用于设置当前日期和时间 - public void setCurrentDate(long date) { - // 获取一个Calendar实例 - Calendar cal = Calendar.getInstance(); - // 将传入的日期(以毫秒为单位)设置到Calendar对象中 - cal.setTimeInMillis(date); - // 调用另一个重载的setCurrentDate方法,传入年、月、日、小时和分钟 - setCurrentDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), - cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE)); - } - - /** - * Set the current date - * - * @param year The current year - * @param month The current month - * @param dayOfMonth The current dayOfMonth - * @param hourOfDay The current hourOfDay - * @param minute The current minute - */ - // 定义一个方法用于设置当前日期和时间 - public void setCurrentDate(int year, int month, - int dayOfMonth, int hourOfDay, int minute) { - // 调用设置年份的方法,传入年份参数 - setCurrentYear(year); - // 调用设置月份的方法,传入月份参数 - setCurrentMonth(month); - // 调用设置日期的方法,传入日期参数 - setCurrentDay(dayOfMonth); - // 调用设置小时的方法,传入小时参数 - setCurrentHour(hourOfDay); - // 调用设置分钟的方法,传入分钟参数 - setCurrentMinute(minute); - } - - /** - * Get current year - * - * @return The current year - */ - // 定义一个公共方法,用于获取当前年份 - public int getCurrentYear() { - // 调用mDate对象的get方法,传入Calendar.YEAR常量,获取当前年份 - return mDate.get(Calendar.YEAR); - } - - /** - * Set current year - * - * @param year The current year - */ - // 设置当前年份的方法 - public void setCurrentYear(int year) { - // 检查是否正在初始化且年份与当前年份相同,如果是则直接返回,不进行任何操作 - if (!mInitialising && year == getCurrentYear()) { - return; - } - // 使用Calendar对象设置日期的年份为传入的年份 - mDate.set(Calendar.YEAR, year); - // 更新日期控件,以反映新的年份 - updateDateControl(); - // 调用方法处理日期时间变化,可能触发相关事件或更新UI - onDateTimeChanged(); - } - - /** - * Get current month in the year - * - * @return The current month in the year - */ - // 定义一个公共方法,用于获取当前月份 - public int getCurrentMonth() { - // 调用mDate对象的get方法,传入Calendar.MONTH常量,获取当前月份 - // Calendar.MONTH的值是从0开始的,即0代表一月,1代表二月,依此类推 - return mDate.get(Calendar.MONTH); - } - - /** - * Set current month in the year - * - * @param month The month in the year - */ - // 设置当前月份的方法 - public void setCurrentMonth(int month) { - // 检查是否正在初始化以及传入的月份是否与当前月份相同 - // 如果是,则直接返回,不进行任何操作 - if (!mInitialising && month == getCurrentMonth()) { - return; - } - // 使用Calendar对象设置日期的月份 - mDate.set(Calendar.MONTH, month); - // 更新日期控件,以反映新的月份设置 - updateDateControl(); - // 调用方法处理日期时间变化,可能触发相关事件或更新UI - onDateTimeChanged(); - } - - /** - * Get current day of the month - * - * @return The day of the month - */ - // 定义一个公共方法,用于获取当前日期的天数 - public int getCurrentDay() { - // 调用Calendar对象的get方法,传入Calendar.DAY_OF_MONTH常量,获取当前日期的天数 - return mDate.get(Calendar.DAY_OF_MONTH); - } - - /** - * Set current day of the month - * - * @param dayOfMonth The day of the month - */ - // 设置当前日期的天数 - public void setCurrentDay(int dayOfMonth) { - // 检查是否正在初始化并且传入的天数与当前天数相同,如果是则直接返回 - if (!mInitialising && dayOfMonth == getCurrentDay()) { - return; - } - // 使用Calendar对象设置日期的天数 - mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); - // 更新日期控件 - updateDateControl(); - // 触发日期时间变化事件 - onDateTimeChanged(); - } - - /** - * Get current hour in 24 hour mode, in the range (0~23) - * @return The current hour in 24 hour mode - */ - // 定义一个公共方法,用于获取当前的小时数(24小时制) - public int getCurrentHourOfDay() { - // 调用Calendar对象的get方法,传入Calendar.HOUR_OF_DAY常量,获取当前的小时数 - return mDate.get(Calendar.HOUR_OF_DAY); - } - - // 获取当前小时数的私有方法 - private int getCurrentHour() { - // 检查是否使用24小时制 - if (mIs24HourView){ - // 如果是24小时制,直接返回当前的小时数 - return getCurrentHourOfDay(); - } else { - // 如果不是24小时制,先获取当前的小时数 - int hour = getCurrentHourOfDay(); - // 检查当前小时数是否超过半天(12小时) - if (hour > HOURS_IN_HALF_DAY) { - // 如果超过半天,返回当前小时数减去半天的小时数(转换为下午的小时数) - return hour - HOURS_IN_HALF_DAY; - } else { - // 如果当前小时数是0(表示午夜12点),则返回半天的小时数(12) - // 否则,直接返回当前小时数(表示上午的小时数) - return hour == 0 ? HOURS_IN_HALF_DAY : hour; - } - } - } - - /** - * Set current hour in 24 hour mode, in the range (0~23) - * - * @param hourOfDay - */ - // 设置当前小时的方法 - public void setCurrentHour(int hourOfDay) { - // 检查是否正在初始化并且小时数是否与当前小时相同,如果是则直接返回 - if (!mInitialising && hourOfDay == getCurrentHourOfDay()) { - return; - } - // 使用Calendar对象设置小时数 - mDate.set(Calendar.HOUR_OF_DAY, hourOfDay); - // 检查是否为24小时制 - if (!mIs24HourView) { - // 如果小时数大于等于半天的小时数(12小时),则设置为下午 - if (hourOfDay >= HOURS_IN_HALF_DAY) { - mIsAm = false; - // 如果小时数大于半天的小时数(12小时),则减去半天的小时数 - if (hourOfDay > HOURS_IN_HALF_DAY) { - hourOfDay -= HOURS_IN_HALF_DAY; - } - } else { - // 否则设置为上午 - mIsAm = true; - // 如果小时数为0,则设置为半天的小时数(12小时) - if (hourOfDay == 0) { - hourOfDay = HOURS_IN_HALF_DAY; - } - } - // 更新上午/下午控件 - updateAmPmControl(); - } - // 设置小时选择器的值 - mHourSpinner.setValue(hourOfDay); - // 触发时间变化事件 - onDateTimeChanged(); - } - - /** - * Get currentMinute - * - * @return The Current Minute - */ - // 定义一个公共方法,用于获取当前分钟数 - public int getCurrentMinute() { - // 调用mDate对象的get方法,传入Calendar.MINUTE常量,获取当前时间的分钟数 - return mDate.get(Calendar.MINUTE); - } - - /** - * Set current minute - */ - // 设置当前分钟的方法 - public void setCurrentMinute(int minute) { - // 检查是否正在初始化并且分钟值是否与当前分钟相同 - if (!mInitialising && minute == getCurrentMinute()) { - // 如果是,则直接返回,不做任何操作 - return; - } - // 设置分钟选择器的值为传入的分钟值 - mMinuteSpinner.setValue(minute); - // 更新日期对象的分钟字段为传入的分钟值 - mDate.set(Calendar.MINUTE, minute); - // 调用方法通知时间已更改 - onDateTimeChanged(); - } - - /** - * @return true if this is in 24 hour view else false. - */ - // 定义一个公共的方法,用于判断是否为24小时制视图 - public boolean is24HourView () { - // 返回成员变量mIs24HourView的值,该变量用于存储是否为24小时制的状态 - return mIs24HourView; - } - - /** - * Set whether in 24 hour or AM/PM mode. - * - * @param is24HourView True for 24 hour mode. False for AM/PM mode. - */ - // 设置24小时制视图 - public void set24HourView(boolean is24HourView) { - // 如果当前24小时制视图状态与传入的参数相同,则直接返回,不做任何操作 - if (mIs24HourView == is24HourView) { - return; - } - // 更新24小时制视图状态 - mIs24HourView = is24HourView; - // 根据是否为24小时制视图,设置上午/下午选择器的可见性 - // 如果是24小时制,则隐藏上午/下午选择器;否则显示 - mAmPmSpinner.setVisibility(is24HourView ? View.GONE : View.VISIBLE); - // 获取当前的小时数 - int hour = getCurrentHourOfDay(); - // 更新小时控制部分 - updateHourControl(); - // 设置当前小时数 - setCurrentHour(hour); - // 更新上午/下午控制部分 - updateAmPmControl(); - } - - // 更新日期控件的方法 - private void updateDateControl() { - // 获取当前时间的Calendar实例 - Calendar cal = Calendar.getInstance(); - // 将Calendar实例的时间设置为mDate的时间 - cal.setTimeInMillis(mDate.getTimeInMillis()); - // 将日期向前调整一周的一半再加一天,即调整到当前周的起始日期 - cal.add(Calendar.DAY_OF_YEAR, -DAYS_IN_ALL_WEEK / 2 - 1); - // 清除日期选择器的显示值 - mDateSpinner.setDisplayedValues(null); - // 遍历一周的每一天 - for (int i = 0; i < DAYS_IN_ALL_WEEK; ++i) { - // 每次循环将日期加一天 - cal.add(Calendar.DAY_OF_YEAR, 1); - // 将格式化后的日期字符串存储到mDateDisplayValues数组中 - mDateDisplayValues[i] = (String) DateFormat.format("MM.dd EEEE", cal); - } - // 设置日期选择器的显示值为更新后的日期数组 - mDateSpinner.setDisplayedValues(mDateDisplayValues); - // 设置日期选择器的当前值为一周的中间日期 - mDateSpinner.setValue(DAYS_IN_ALL_WEEK / 2); - // 刷新日期选择器,使其显示最新的值 - mDateSpinner.invalidate(); - } - - // 定义一个私有方法updateAmPmControl,用于更新上午/下午选择控件的状态 - private void updateAmPmControl() { - // 检查是否为24小时制视图 - if (mIs24HourView) { - // 如果是24小时制视图,隐藏上午/下午选择控件 - mAmPmSpinner.setVisibility(View.GONE); - } else { - // 如果不是24小时制视图,根据当前是上午还是下午设置选择控件的值 - int index = mIsAm ? Calendar.AM : Calendar.PM; - // 设置上午/下午选择控件的值为index - mAmPmSpinner.setValue(index); - // 显示上午/下午选择控件 - mAmPmSpinner.setVisibility(View.VISIBLE); - } - } - - // 定义一个私有方法updateHourControl,用于更新小时选择器的范围 - private void updateHourControl() { - // 检查是否是24小时制视图 - if (mIs24HourView) { - // 如果是24小时制视图,设置小时选择器的最小值为HOUR_SPINNER_MIN_VAL_24_HOUR_VIEW - mHourSpinner.setMinValue(HOUR_SPINNER_MIN_VAL_24_HOUR_VIEW); - // 设置小时选择器的最大值为HOUR_SPINNER_MAX_VAL_24_HOUR_VIEW - mHourSpinner.setMaxValue(HOUR_SPINNER_MAX_VAL_24_HOUR_VIEW); - } else { - // 如果不是24小时制视图,设置小时选择器的最小值为HOUR_SPINNER_MIN_VAL_12_HOUR_VIEW - mHourSpinner.setMinValue(HOUR_SPINNER_MIN_VAL_12_HOUR_VIEW); - // 设置小时选择器的最大值为HOUR_SPINNER_MAX_VAL_12_HOUR_VIEW - mHourSpinner.setMaxValue(HOUR_SPINNER_MAX_VAL_12_HOUR_VIEW); - } - } - - /** - * Set the callback that indicates the 'Set' button has been pressed. - * @param callback the callback, if null will do nothing - */ - // 定义一个方法用于设置日期时间变化监听器 - public void setOnDateTimeChangedListener(OnDateTimeChangedListener callback) { - // 将传入的监听器对象赋值给类的成员变量mOnDateTimeChangedListener - mOnDateTimeChangedListener = callback; - } - - // 定义一个私有方法,用于处理日期时间变化事件 - private void onDateTimeChanged() { - // 检查是否已经设置了日期时间变化监听器 - if (mOnDateTimeChangedListener != null) { - // 如果监听器不为空,则调用监听器的onDateTimeChanged方法 - // 传递当前对象以及当前的年、月、日、小时和分钟 - mOnDateTimeChangedListener.onDateTimeChanged(this, getCurrentYear(), - getCurrentMonth(), getCurrentDay(), getCurrentHourOfDay(), getCurrentMinute()); - } - } -} diff --git a/src/src/net/micode/notes/ui/DateTimePickerDialog.java b/src/src/net/micode/notes/ui/DateTimePickerDialog.java deleted file mode 100644 index cc3f36c..0000000 --- a/src/src/net/micode/notes/ui/DateTimePickerDialog.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * 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; - -import net.micode.notes.R; -import net.micode.notes.ui.DateTimePicker; -import net.micode.notes.ui.DateTimePicker.OnDateTimeChangedListener; - -import android.app.AlertDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.content.DialogInterface.OnClickListener; -import android.text.format.DateFormat; -import android.text.format.DateUtils; - -public class DateTimePickerDialog extends AlertDialog implements OnClickListener { - - // 定义一个日历对象,用于存储日期和时间 - private Calendar mDate = Calendar.getInstance(); - // 是否使用24小时制 - private boolean mIs24HourView; - // 日期时间设置监听器 - private OnDateTimeSetListener mOnDateTimeSetListener; - // 日期时间选择器 - private DateTimePicker mDateTimePicker; - - // 定义一个接口,用于监听日期时间的设置 - public interface OnDateTimeSetListener { - void OnDateTimeSet(AlertDialog dialog, long 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) { - // 更新日历对象的日期和时间 - mDate.set(Calendar.YEAR, year); - mDate.set(Calendar.MONTH, month); - mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); - mDate.set(Calendar.HOUR_OF_DAY, hourOfDay); - mDate.set(Calendar.MINUTE, minute); - // 更新对话框标题 - 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); - set24HourView(DateFormat.is24HourFormat(this.getContext())); - updateTitle(mDate.getTimeInMillis()); - } - - // 定义一个公共方法,用于设置是否使用24小时制视图 - public void set24HourView(boolean is24HourView) { - // 将传入的布尔值参数is24HourView赋值给成员变量mIs24HourView - mIs24HourView = is24HourView; - } - - // 定义一个方法用于设置日期时间设置监听器 - public void setOnDateTimeSetListener(OnDateTimeSetListener callBack) { - // 将传入的监听器对象赋值给成员变量mOnDateTimeSetListener - mOnDateTimeSetListener = callBack; - } - - // 定义一个私有方法updateTitle,用于更新标题,接收一个长整型参数date表示日期时间 - private void updateTitle(long date) { - // 定义一个整型变量flag,用于存储日期时间的格式标志 - int flag = - // 使用位或运算符将FORMAT_SHOW_YEAR标志添加到flag中,表示显示年份 - DateUtils.FORMAT_SHOW_YEAR | - // 使用位或运算符将FORMAT_SHOW_DATE标志添加到flag中,表示显示日期 - DateUtils.FORMAT_SHOW_DATE | - // 使用位或运算符将FORMAT_SHOW_TIME标志添加到flag中,表示显示时间 - DateUtils.FORMAT_SHOW_TIME; - // 使用位或运算符将FORMAT_24HOUR标志添加到flag中 - // 如果mIs24HourView为true,则添加FORMAT_24HOUR标志,表示使用24小时制 - // 如果mIs24HourView为false,则也添加FORMAT_24HOUR标志,这里可能是一个逻辑错误,应该根据mIs24HourView的值决定是否添加该标志 - flag |= mIs24HourView ? DateUtils.FORMAT_24HOUR : DateUtils.FORMAT_24HOUR; - // 调用DateUtils的formatDateTime方法,将日期时间格式化为字符串 - // this.getContext()获取当前上下文 - // date为要格式化的日期时间 - // flag为格式标志 - setTitle(DateUtils.formatDateTime(this.getContext(), date, flag)); - } - - // 定义一个方法,当对话框被点击时触发 - public void onClick(DialogInterface arg0, int arg1) { - // 检查mOnDateTimeSetListener是否不为空,确保有监听器注册 - if (mOnDateTimeSetListener != null) { - // 调用mOnDateTimeSetListener的OnDateTimeSet方法,传递当前对象和日期的毫秒值 - mOnDateTimeSetListener.OnDateTimeSet(this, mDate.getTimeInMillis()); - } - } - -} \ No newline at end of file diff --git a/src/src/net/micode/notes/ui/DropdownMenu.java b/src/src/net/micode/notes/ui/DropdownMenu.java deleted file mode 100644 index 21e5be3..0000000 --- a/src/src/net/micode/notes/ui/DropdownMenu.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * 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; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.View.OnClickListener; -import android.widget.Button; -import android.widget.PopupMenu; -import android.widget.PopupMenu.OnMenuItemClickListener; - -import net.micode.notes.R; - -public class DropdownMenu { - // 声明一个Button对象,用于显示下拉菜单的按钮 - private Button mButton; - // 声明一个PopupMenu对象,用于创建和管理下拉菜单 - private PopupMenu mPopupMenu; - // 声明一个Menu对象,用于获取菜单项 - private Menu mMenu; - - // 构造方法,初始化DropdownMenu对象 - public DropdownMenu(Context context, Button button, int menuId) { - // 将传入的Button对象赋值给mButton - mButton = button; - // 设置按钮的背景资源为下拉图标 - mButton.setBackgroundResource(R.drawable.dropdown_icon); - // 创建一个PopupMenu对象,传入上下文和按钮对象 - mPopupMenu = new PopupMenu(context, mButton); - // 获取PopupMenu的Menu对象 - mMenu = mPopupMenu.getMenu(); - // 使用PopupMenu的MenuInflater对象加载菜单布局文件 - mPopupMenu.getMenuInflater().inflate(menuId, mMenu); - // 设置按钮的点击监听器 - mButton.setOnClickListener(new OnClickListener() { - // 点击按钮时显示PopupMenu - public void onClick(View v) { - mPopupMenu.show(); - } - }); - } - - // 设置下拉菜单项的点击监听器 - // 定义一个方法用于设置下拉菜单项的点击监听器 - public void setOnDropdownMenuItemClickListener(OnMenuItemClickListener listener) { - // 如果PopupMenu对象不为空,则设置菜单项点击监听器 - if (mPopupMenu != null) { - mPopupMenu.setOnMenuItemClickListener(listener); - } - } - - // 根据菜单项的ID查找菜单项 - public MenuItem findItem(int id) { - - // 调用mMenu对象的findItem方法,传入菜单项的id - // mMenu是一个菜单对象,用于管理菜单项 - // findItem方法用于在菜单中查找指定id的菜单项 - // id是菜单项的唯一标识符,通常是一个整型常量 - // 返回找到的菜单项对象,如果未找到则返回null - return mMenu.findItem(id); - } - - // 设置按钮的标题 - public void setTitle(CharSequence title) { - // 将传入的标题设置给按钮 - // 参数说明: - // CharSequence title - 要设置的标题文本 - // 功能说明: - // 该方法用于将传入的标题文本设置给成员变量mButton,即按钮的文本内容 - mButton.setText(title); - } -} diff --git a/src/src/net/micode/notes/ui/FoldersListAdapter.java b/src/src/net/micode/notes/ui/FoldersListAdapter.java deleted file mode 100644 index 9abdd16..0000000 --- a/src/src/net/micode/notes/ui/FoldersListAdapter.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * 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; -import android.database.Cursor; -import android.view.View; -import android.view.ViewGroup; -import android.widget.CursorAdapter; -import android.widget.LinearLayout; -import android.widget.TextView; - -import net.micode.notes.R; -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.NoteColumns; - - -public class FoldersListAdapter extends CursorAdapter { - // 定义查询的列 - public static final String [] PROJECTION = { - NoteColumns.ID, // 笔记ID - NoteColumns.SNIPPET // 笔记摘要 - }; - - - - // 定义列的索引 - public static final int ID_COLUMN = 0; // ID列的索引 - public static final int NAME_COLUMN = 1; // 名称列的索引 - - // 构造函数 - public FoldersListAdapter(Context context, Cursor c) { - super(context, c); - // TODO Auto-generated constructor stub - } - - // 创建新的视图 - @Override - public View newView(Context context, Cursor cursor, ViewGroup parent) { - return new FolderListItem(context); // 返回一个新的FolderListItem视图 - } - - // 绑定数据到视图 - @Override - public void bindView(View view, Context context, Cursor cursor) { - if (view instanceof FolderListItem) { // 如果视图是FolderListItem类型 - // 获取文件夹名称,如果是根文件夹则显示特定的字符串 - String folderName = (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) ? context - .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); // 获取指定位置的Cursor - // 如果是根文件夹则显示特定的字符串 - return (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) ? context - .getString(R.string.menu_move_parent_folder) : cursor.getString(NAME_COLUMN); - } - - // 内部类FolderListItem,继承自LinearLayout - 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); // 获取布局中的文本视图 - } - - // 绑定文件夹名称到文本视图 - public void bind(String name) { - mName.setText(name); // 设置文本视图的文本 - } - } - -} diff --git a/src/src/net/micode/notes/ui/NoteEditActivity.java b/src/src/net/micode/notes/ui/NoteEditActivity.java deleted file mode 100644 index 2e49698..0000000 --- a/src/src/net/micode/notes/ui/NoteEditActivity.java +++ /dev/null @@ -1,1158 +0,0 @@ -/* - * 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; -import android.app.AlarmManager; -import android.app.AlertDialog; -import android.app.PendingIntent; -import android.app.SearchManager; -import android.appwidget.AppWidgetManager; -import android.content.ContentUris; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.SharedPreferences; -import android.graphics.Paint; -import android.os.Bundle; -import android.preference.PreferenceManager; -import android.text.Spannable; -import android.text.SpannableString; -import android.text.TextUtils; -import android.text.format.DateUtils; -import android.text.style.BackgroundColorSpan; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; -import android.view.MotionEvent; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.WindowManager; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.CompoundButton.OnCheckedChangeListener; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; -import android.widget.Toast; - -import net.micode.notes.R; -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.TextNote; -import net.micode.notes.model.WorkingNote; -import net.micode.notes.model.WorkingNote.NoteSettingChangedListener; -import net.micode.notes.tool.DataUtils; -import net.micode.notes.tool.ResourceParser; -import net.micode.notes.tool.ResourceParser.TextAppearanceResources; -import net.micode.notes.ui.DateTimePickerDialog.OnDateTimeSetListener; -import net.micode.notes.ui.NoteEditText.OnTextViewChangeListener; -import net.micode.notes.widget.NoteWidgetProvider_2x; -import net.micode.notes.widget.NoteWidgetProvider_4x; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - - -public class NoteEditActivity extends Activity implements OnClickListener, - NoteSettingChangedListener, OnTextViewChangeListener { - // 定义一个内部类,用于保存头部视图的引用 - private class HeadViewHolder { - public TextView tvModified; // 显示修改日期的TextView - - public ImageView ivAlertIcon; // 显示提醒图标的ImageView - - public TextView tvAlertDate; // 显示提醒日期的TextView - - public ImageView ibSetBgColor; // 设置背景颜色的ImageView - } - - // 定义背景颜色选择按钮与背景颜色值的映射 - private static final Map sBgSelectorBtnsMap = new HashMap(); - static { - sBgSelectorBtnsMap.put(R.id.iv_bg_yellow, ResourceParser.YELLOW); - sBgSelectorBtnsMap.put(R.id.iv_bg_red, ResourceParser.RED); - sBgSelectorBtnsMap.put(R.id.iv_bg_blue, ResourceParser.BLUE); - sBgSelectorBtnsMap.put(R.id.iv_bg_green, ResourceParser.GREEN); - sBgSelectorBtnsMap.put(R.id.iv_bg_white, ResourceParser.WHITE); - } - - // 定义背景颜色值与选中状态的映射 - private static final Map sBgSelectorSelectionMap = new HashMap(); - static { - sBgSelectorSelectionMap.put(ResourceParser.YELLOW, R.id.iv_bg_yellow_select); - sBgSelectorSelectionMap.put(ResourceParser.RED, R.id.iv_bg_red_select); - sBgSelectorSelectionMap.put(ResourceParser.BLUE, R.id.iv_bg_blue_select); - sBgSelectorSelectionMap.put(ResourceParser.GREEN, R.id.iv_bg_green_select); - sBgSelectorSelectionMap.put(ResourceParser.WHITE, R.id.iv_bg_white_select); - } - - // 定义字体大小选择按钮与字体大小值的映射 - private static final Map sFontSizeBtnsMap = new HashMap(); - static { - sFontSizeBtnsMap.put(R.id.ll_font_large, ResourceParser.TEXT_LARGE); - sFontSizeBtnsMap.put(R.id.ll_font_small, ResourceParser.TEXT_SMALL); - sFontSizeBtnsMap.put(R.id.ll_font_normal, ResourceParser.TEXT_MEDIUM); - sFontSizeBtnsMap.put(R.id.ll_font_super, ResourceParser.TEXT_SUPER); - } - - // 定义字体大小值与选中状态的映射 - private static final Map sFontSelectorSelectionMap = new HashMap(); - static { - sFontSelectorSelectionMap.put(ResourceParser.TEXT_LARGE, R.id.iv_large_select); - sFontSelectorSelectionMap.put(ResourceParser.TEXT_SMALL, R.id.iv_small_select); - sFontSelectorSelectionMap.put(ResourceParser.TEXT_MEDIUM, R.id.iv_medium_select); - sFontSelectorSelectionMap.put(ResourceParser.TEXT_SUPER, R.id.iv_super_select); - } - - 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; // 当前正在编辑的笔记 - - private SharedPreferences mSharedPrefs; // 共享偏好设置 - private int mFontSizeId; // 当前字体大小ID - - private static final String PREFERENCE_FONT_SIZE = "pref_font_size"; // 字体大小偏好设置键 - - private static final int SHORTCUT_ICON_TITLE_MAX_LEN = 10; // 快捷方式图标标题最大长度 - - public static final String TAG_CHECKED = String.valueOf('\u221A'); // 已选中标签 - public static final String TAG_UNCHECKED = String.valueOf('\u25A1'); // 未选中标签 - - private LinearLayout mEditTextList; // 编辑文本列表 - - private String mUserQuery; // 用户查询字符串 - private Pattern mPattern; // 正则表达式模式 - - @Override - // 重写父类的方法,用于在Activity创建时调用 - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - // 调用父类的onCreate方法,进行Activity的基本初始化 - this.setContentView(R.layout.note_edit); - - // 设置当前Activity的布局文件为R.layout.note_edit - if (savedInstanceState == null && !initActivityState(getIntent())) { - // 检查savedInstanceState是否为null(即Activity是否是第一次创建) - // 并且调用initActivityState方法初始化Activity状态,如果返回false - finish(); - // 结束当前Activity - return; - // 结束方法执行,不再继续向下执行 - } - initResources(); - // 调用initResources方法,进行资源的初始化 - } - - /** - * Current activity may be killed when the memory is low. Once it is killed, for another time - * user load this activity, we should restore the former state - */ - @Override - protected void onRestoreInstanceState(Bundle savedInstanceState) { - // 调用父类的onRestoreInstanceState方法,确保父类的恢复逻辑得以执行 - super.onRestoreInstanceState(savedInstanceState); - // 检查savedInstanceState是否不为空,并且包含特定的键(Intent.EXTRA_UID) - if (savedInstanceState != null && savedInstanceState.containsKey(Intent.EXTRA_UID)) { - // 创建一个新的Intent对象,指定动作为查看(Intent.ACTION_VIEW) - Intent intent = new Intent(Intent.ACTION_VIEW); - // 将savedInstanceState中存储的UID值取出,并放入Intent的额外数据中 - intent.putExtra(Intent.EXTRA_UID, savedInstanceState.getLong(Intent.EXTRA_UID)); - // 调用initActivityState方法,传入intent,尝试初始化活动状态 - // 如果初始化失败,则调用finish()方法结束当前活动 - if (!initActivityState(intent)) { - finish(); - return; - } - // 使用Log.d输出调试信息,表示正在从被杀死的活动中恢复 - Log.d(TAG, "Restoring from killed activity"); - } - } - - private boolean initActivityState(Intent intent) { - /** - * If the user specified the {@link Intent#ACTION_VIEW} but not provided with id, - * then jump to the NotesListActivity - */ - mWorkingNote = null; - if (TextUtils.equals(Intent.ACTION_VIEW, intent.getAction())) { - long noteId = intent.getLongExtra(Intent.EXTRA_UID, 0); - mUserQuery = ""; - - /** - * Starting from the searched result - */ - if (intent.hasExtra(SearchManager.EXTRA_DATA_KEY)) { - noteId = Long.parseLong(intent.getStringExtra(SearchManager.EXTRA_DATA_KEY)); - mUserQuery = intent.getStringExtra(SearchManager.USER_QUERY); - } - - if (!DataUtils.visibleInNoteDatabase(getContentResolver(), noteId, Notes.TYPE_NOTE)) { - Intent jump = new Intent(this, NotesListActivity.class); - startActivity(jump); - showToast(R.string.error_note_not_exist); - finish(); - return false; - } else { - mWorkingNote = WorkingNote.load(this, noteId); - if (mWorkingNote == null) { - Log.e(TAG, "load note failed with note id" + noteId); - finish(); - return false; - } - } - getWindow().setSoftInputMode( - 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); - int widgetType = intent.getIntExtra(Notes.INTENT_EXTRA_WIDGET_TYPE, - 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) { - if (TextUtils.isEmpty(phoneNumber)) { - Log.w(TAG, "The call record number is null"); - } - long noteId = 0; - if ((noteId = DataUtils.getNoteIdByPhoneNumberAndCallDate(getContentResolver(), - phoneNumber, callDate)) > 0) { - mWorkingNote = WorkingNote.load(this, noteId); - if (mWorkingNote == null) { - Log.e(TAG, "load call note failed with note id" + noteId); - finish(); - return false; - } - } else { - mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId, - widgetType, bgResId); - mWorkingNote.convertToCallNote(phoneNumber, callDate); - } - } else { - mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId, widgetType, - bgResId); - } - - getWindow().setSoftInputMode( - WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE - | WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); - } else { - Log.e(TAG, "Intent not specified action, should not support"); - finish(); - return false; - } - mWorkingNote.setOnSettingStatusChangedListener(this); - return true; - } - - @Override - // 重写父类的方法,表示这个方法是一个覆盖方法 - protected void onResume() { - // 调用父类的onResume方法,确保父类的逻辑得以执行 - super.onResume(); - // 调用initNoteScreen方法,初始化笔记屏幕 - initNoteScreen(); - } - - // 初始化笔记屏幕的显示 - private void initNoteScreen() { - // 设置笔记编辑器的文本外观,根据字体大小ID获取对应的文本外观资源 - mNoteEditor.setTextAppearance(this, TextAppearanceResources - .getTexAppearanceResource(mFontSizeId)); - // 检查当前笔记是否为待办事项模式 - if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { - // 如果是待办事项模式,则切换到列表模式,并设置内容 - switchToListMode(mWorkingNote.getContent()); - } else { - // 如果不是待办事项模式,则设置笔记编辑器的文本内容 - // 高亮显示用户查询结果 - mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery)); - // 将光标移动到文本末尾 - mNoteEditor.setSelection(mNoteEditor.getText().length()); - } - // 遍历背景选择器的选择映射,将所有背景选择器的视图设置为不可见 - for (Integer id : sBgSelectorSelectionMap.keySet()) { - findViewById(sBgSelectorSelectionMap.get(id)).setVisibility(View.GONE); - } - // 设置笔记标题栏的背景资源 - mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId()); - // 设置笔记编辑器面板的背景资源 - mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId()); - - // 设置笔记头部视图的修改时间文本 - // 使用DateUtils格式化日期时间,显示日期、时间、年份 - mNoteHeaderHolder.tvModified.setText(DateUtils.formatDateTime(this, - mWorkingNote.getModifiedDate(), DateUtils.FORMAT_SHOW_DATE - | DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_SHOW_TIME - | DateUtils.FORMAT_SHOW_YEAR)); - - /** - * TODO: Add the menu for setting alert. Currently disable it because the DateTimePicker - * is not ready - */ - showAlertHeader(); - } - - // 定义一个私有方法用于显示提醒头部信息 - private void showAlertHeader() { - // 检查当前工作笔记是否有闹钟提醒 - if (mWorkingNote.hasClockAlert()) { - // 获取当前系统时间 - long time = System.currentTimeMillis(); - // 比较当前时间与提醒时间 - if (time > mWorkingNote.getAlertDate()) { - // 如果当前时间大于提醒时间,说明提醒已过期 - // 设置提醒日期文本为“提醒已过期” - mNoteHeaderHolder.tvAlertDate.setText(R.string.note_alert_expired); - } else { - // 如果当前时间小于提醒时间,说明提醒还未到 - // 使用DateUtils工具类获取相对时间字符串 - mNoteHeaderHolder.tvAlertDate.setText(DateUtils.getRelativeTimeSpanString( - mWorkingNote.getAlertDate(), time, DateUtils.MINUTE_IN_MILLIS)); - } - // 显示提醒日期文本视图 - mNoteHeaderHolder.tvAlertDate.setVisibility(View.VISIBLE); - // 显示提醒图标视图 - mNoteHeaderHolder.ivAlertIcon.setVisibility(View.VISIBLE); - } else { - // 如果当前工作笔记没有闹钟提醒 - // 隐藏提醒日期文本视图 - mNoteHeaderHolder.tvAlertDate.setVisibility(View.GONE); - // 隐藏提醒图标视图 - mNoteHeaderHolder.ivAlertIcon.setVisibility(View.GONE); - }; - } - - @Override - // 重写父类的方法,当Activity接收到新的Intent时调用 - protected void onNewIntent(Intent intent) { - super.onNewIntent(intent); - // 调用父类的onNewIntent方法,确保父类的逻辑得以执行 - initActivityState(intent); - // 调用initActivityState方法,传入新的Intent,用于初始化或更新Activity的状态 - } - - @Override - protected void onSaveInstanceState(Bundle outState) { - // 调用父类的onSaveInstanceState方法,保存当前Activity的状态 - super.onSaveInstanceState(outState); - /** - * For new note without note id, we should firstly save it to - * generate a id. If the editing note is not worth saving, there - * is no id which is equivalent to create new note - */ - if (!mWorkingNote.existInDatabase()) { - saveNote(); - } - 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 - && !inRangeOfView(mNoteBgColorSelector, ev)) { - // 如果选择器可见且触摸事件发生在选择器之外,则隐藏选择器 - mNoteBgColorSelector.setVisibility(View.GONE); - // 返回true表示事件已处理,不再传递 - return true; - } - - // 检查字体大小选择器的可见性,并且判断触摸事件是否发生在选择器之外 - if (mFontSizeSelector.getVisibility() == View.VISIBLE - && !inRangeOfView(mFontSizeSelector, ev)) { - // 如果选择器可见且触摸事件发生在选择器之外,则隐藏选择器 - mFontSizeSelector.setVisibility(View.GONE); - // 返回true表示事件已处理,不再传递 - return true; - } - // 如果上述条件都不满足,则调用父类的dispatchTouchEvent方法继续处理事件 - return super.dispatchTouchEvent(ev); - } - - // 定义一个私有方法,用于判断给定的MotionEvent是否在指定View的可见范围内 - private boolean inRangeOfView(View view, MotionEvent ev) { - // 创建一个整型数组,用于存储View在屏幕上的坐标位置 - int []location = new int[2]; - // 获取View在屏幕上的绝对坐标位置,结果存储在location数组中 - view.getLocationOnScreen(location); - // 从location数组中获取View的左上角x坐标 - int x = location[0]; - // 从location数组中获取View的左上角y坐标 - int y = location[1]; - if (ev.getX() < x - || ev.getX() > (x + view.getWidth()) - || ev.getY() < y - || ev.getY() > (y + view.getHeight())) { - return false; - } - return true; - } - - // 初始化资源的方法 - private void initResources() { - // 获取标题面板的视图 - mHeadViewPanel = findViewById(R.id.note_title); - // 创建一个HeadViewHolder对象来保存标题部分的视图 - mNoteHeaderHolder = new HeadViewHolder(); - // 获取修改日期的TextView - mNoteHeaderHolder.tvModified = (TextView) findViewById(R.id.tv_modified_date); - // 获取提醒图标的ImageView - mNoteHeaderHolder.ivAlertIcon = (ImageView) findViewById(R.id.iv_alert_icon); - // 获取提醒日期的TextView - mNoteHeaderHolder.tvAlertDate = (TextView) findViewById(R.id.tv_alert_date); - // 获取设置背景颜色的ImageView - mNoteHeaderHolder.ibSetBgColor = (ImageView) findViewById(R.id.btn_set_bg_color); - // 为设置背景颜色的ImageView设置点击监听器 - mNoteHeaderHolder.ibSetBgColor.setOnClickListener(this); - // 获取笔记编辑器的EditText - mNoteEditor = (EditText) findViewById(R.id.note_edit_view); - // 获取笔记编辑面板的视图 - mNoteEditorPanel = findViewById(R.id.sv_note_edit); - // 获取背景颜色选择器的视图 - mNoteBgColorSelector = findViewById(R.id.note_bg_color_selector); - // 遍历背景颜色选择器的按钮ID集合,并为每个按钮设置点击监听器 - for (int id : sBgSelectorBtnsMap.keySet()) { - ImageView iv = (ImageView) findViewById(id); - iv.setOnClickListener(this); - } - - // 获取字体大小选择器的视图 - mFontSizeSelector = findViewById(R.id.font_size_selector); - // 遍历字体大小选择器的按钮ID集合,并为每个按钮设置点击监听器 - for (int id : sFontSizeBtnsMap.keySet()) { - View view = findViewById(id); - view.setOnClickListener(this); - }; - // 获取默认的SharedPreferences - mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); - // 从SharedPreferences中获取保存的字体大小ID,如果没有则使用默认值 - mFontSizeId = mSharedPrefs.getInt(PREFERENCE_FONT_SIZE, ResourceParser.BG_DEFAULT_FONT_SIZE); - /** - * HACKME: Fix bug of store the resource id in shared preference. - * The id may larger than the length of resources, in this case, - * return the {@link ResourceParser#BG_DEFAULT_FONT_SIZE} - */ - if(mFontSizeId >= TextAppearanceResources.getResourcesSize()) { - mFontSizeId = ResourceParser.BG_DEFAULT_FONT_SIZE; - } - mEditTextList = (LinearLayout) findViewById(R.id.note_edit_list); - } - - @Override - // 重写父类中的onPause方法,该方法在Activity暂停时被调用 - protected void onPause() { - super.onPause(); - // 调用父类的onPause方法,确保父类的逻辑得以执行 - if(saveNote()) { - // 调用saveNote方法保存笔记,如果保存成功(返回true),则执行以下代码 - Log.d(TAG, "Note data was saved with length:" + mWorkingNote.getContent().length()); - // 使用Log.d方法记录调试信息,TAG为日志标签,内容为"Note data was saved with length:"加上笔记内容的长度 - } - clearSettingState(); - // 调用clearSettingState方法清除设置状态,确保在暂停时不会保留不必要的设置 - } - - // 更新小部件的方法 - private void updateWidget() { - // 创建一个意图,用于发送广播,更新小部件 - Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE); - // 根据当前工作笔记的小部件类型,设置对应的意图类 - if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_2X) { - // 如果是小部件类型2x2,则设置意图类为NoteWidgetProvider_2x - intent.setClass(this, NoteWidgetProvider_2x.class); - } else if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_4X) { - // 如果是小部件类型4x4,则设置意图类为NoteWidgetProvider_4x - intent.setClass(this, NoteWidgetProvider_4x.class); - } else { - // 如果是小部件类型不支持,则记录错误日志并返回 - Log.e(TAG, "Unspported widget type"); - return; - } - - // 将小部件ID作为额外数据添加到意图中 - intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { - mWorkingNote.getWidgetId() - }); - - // 发送广播,通知系统更新小部件 - sendBroadcast(intent); - // 设置结果码和意图,以便调用者知道操作成功 - setResult(RESULT_OK, intent); - } - - // 定义一个方法来处理点击事件 - public void onClick(View v) { - // 获取点击的视图的ID - int id = v.getId(); - // 如果点击的是设置背景颜色的按钮 - if (id == R.id.btn_set_bg_color) { - // 显示背景颜色选择器 - mNoteBgColorSelector.setVisibility(View.VISIBLE); - // 隐藏当前背景颜色选择器的选中状态 - findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility( - - View.VISIBLE); - } else if (sBgSelectorBtnsMap.containsKey(id)) { - // 隐藏当前背景颜色选择器的选中状态 - findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility( - View.GONE); - // 设置新的背景颜色ID - mWorkingNote.setBgColorId(sBgSelectorBtnsMap.get(id)); - // 隐藏背景颜色选择器 - mNoteBgColorSelector.setVisibility(View.GONE); - } else if (sFontSizeBtnsMap.containsKey(id)) { - // 隐藏当前字体大小选择器的选中状态 - findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.GONE); - // 设置新的字体大小ID - mFontSizeId = sFontSizeBtnsMap.get(id); - // 将新的字体大小ID保存到SharedPreferences - mSharedPrefs.edit().putInt(PREFERENCE_FONT_SIZE, mFontSizeId).commit(); - // 显示新的字体大小选择器的选中状态 - findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE); - // 如果当前笔记是检查列表模式 - if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { - // 获取当前笔记的内容 - getWorkingText(); - // 切换到检查列表模式 - switchToListMode(mWorkingNote.getContent()); - } else { - // 设置笔记编辑器的文本外观 - mNoteEditor.setTextAppearance(this, - TextAppearanceResources.getTexAppearanceResource(mFontSizeId)); - } - // 隐藏字体大小选择器 - mFontSizeSelector.setVisibility(View.GONE); - } - } - - @Override - // 重写父类的方法,当用户按下返回键时调用 - public void onBackPressed() { - // 调用clearSettingState方法,检查是否需要清除设置状态 - if(clearSettingState()) { - // 如果clearSettingState返回true,表示需要清除设置状态,直接返回,不执行后续操作 - return; - } - - // 调用saveNote方法,保存当前笔记 - saveNote(); - // 调用父类的onBackPressed方法,执行默认的返回键操作 - super.onBackPressed(); - } - - // 定义一个私有方法clearSettingState,用于清除设置状态 - private boolean clearSettingState() { - // 检查笔记背景颜色选择器的可见性 - if (mNoteBgColorSelector.getVisibility() == View.VISIBLE) { - // 如果笔记背景颜色选择器是可见的,将其设置为不可见 - mNoteBgColorSelector.setVisibility(View.GONE); - // 返回true,表示成功隐藏了笔记背景颜色选择器 - return true; - } else if (mFontSizeSelector.getVisibility() == View.VISIBLE) { - // 如果字体大小选择器是可见的,将其设置为不可见 - mFontSizeSelector.setVisibility(View.GONE); - // 返回true,表示成功隐藏了字体大小选择器 - return true; - } - // 如果笔记背景颜色选择器和字体大小选择器都不可见,返回false - return false; - } - - // 定义一个方法,当背景颜色发生变化时调用 - public void onBackgroundColorChanged() { - // 通过查找当前工作笔记的背景颜色ID,获取对应的视图,并将其设置为可见 - findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility( - View.VISIBLE); - // 设置笔记编辑面板的背景资源为当前工作笔记的背景颜色资源ID - mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId()); - // 设置头部视图面板的背景资源为当前工作笔记的标题背景资源ID - mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId()); - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - // 检查当前Activity是否正在 finishing(销毁中) - if (isFinishing()) { - // 如果Activity正在销毁,则不执行后续操作,直接返回true - return true; - } - // 清除设置状态 - clearSettingState(); - // 清空菜单 - menu.clear(); - // 根据当前工作笔记的文件夹ID,决定加载哪个菜单布局 - if (mWorkingNote.getFolderId() == Notes.ID_CALL_RECORD_FOLDER) { - // 如果是通话记录文件夹,则加载通话笔记编辑菜单 - getMenuInflater().inflate(R.menu.call_note_edit, menu); - } else { - // 否则加载普通笔记编辑菜单 - getMenuInflater().inflate(R.menu.note_edit, menu); - } - // 根据当前工作笔记的清单模式,设置菜单项的标题 - if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { - // 如果是清单模式,则将清单模式菜单项标题设置为“普通模式” - menu.findItem(R.id.menu_list_mode).setTitle(R.string.menu_normal_mode); - } else { - // 否则将清单模式菜单项标题设置为“清单模式” - menu.findItem(R.id.menu_list_mode).setTitle(R.string.menu_list_mode); - } - // 根据当前工作笔记是否有闹钟提醒,设置菜单项的可见性 - if (mWorkingNote.hasClockAlert()) { - // 如果有闹钟提醒,则隐藏“添加提醒”菜单项 - menu.findItem(R.id.menu_alert).setVisible(false); - } else { - // 如果没有闹钟提醒,则隐藏“删除提醒”菜单项 - menu.findItem(R.id.menu_delete_remind).setVisible(false); - } - // 返回true表示菜单已准备好 - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // 根据菜单项的ID进行不同的操作 - switch (item.getItemId()) { - case R.id.menu_new_note: - // 创建新笔记 - createNewNote(); - break; - case 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); - // 设置对话框消息 - builder.setMessage(getString(R.string.alert_message_delete_note)); - // 设置对话框的确定按钮及其点击事件 - builder.setPositiveButton(android.R.string.ok, - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - // 删除当前笔记 - deleteCurrentNote(); - // 结束当前Activity - finish(); - } - }); - // 设置对话框的取消按钮 - builder.setNegativeButton(android.R.string.cancel, null); - // 显示对话框 - builder.show(); - break; - case R.id.menu_font_size: - // 显示字体大小选择器 - mFontSizeSelector.setVisibility(View.VISIBLE); - // 显示当前字体大小选项 - findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE); - break; - case R.id.menu_list_mode: - // 切换笔记的列表模式 - mWorkingNote.setCheckListMode(mWorkingNote.getCheckListMode() == 0 ? - TextNote.MODE_CHECK_LIST : 0); - break; - case R.id.menu_share: - // 获取当前笔记的内容 - getWorkingText(); - // 分享笔记内容 - sendTo(this, mWorkingNote.getContent()); - break; - case R.id.menu_send_to_desktop: - // 将笔记发送到桌面 - sendToDesktop(); - break; - case R.id.menu_alert: - // 设置提醒 - setReminder(); - break; - case R.id.menu_delete_remind: - // 删除提醒 - mWorkingNote.setAlertDate(0, false); - break; - default: - // 默认操作 - break; - } - // 返回true表示事件已处理 - return true; - } - - // 定义一个私有方法setReminder,用于设置提醒 - private void setReminder() { - // 创建一个DateTimePickerDialog对象d,传入当前上下文和当前系统时间 - DateTimePickerDialog d = new DateTimePickerDialog(this, System.currentTimeMillis()); - // 为DateTimePickerDialog对象设置一个时间设置监听器 - d.setOnDateTimeSetListener(new OnDateTimeSetListener() { - // 当用户设置时间时,会调用此方法 - public void OnDateTimeSet(AlertDialog dialog, long date) { - // 将设置的时间赋值给工作笔记的提醒日期,并标记为已设置 - mWorkingNote.setAlertDate(date , true); - } - }); - // 显示DateTimePickerDialog对话框 - d.show(); - } - - /** - * Share note to apps that support {@link Intent#ACTION_SEND} action - * and {@text/plain} type - */ - // 定义一个私有方法sendTo,用于发送信息 - private void sendTo(Context context, String info) { - // 创建一个Intent对象,指定动作类型为ACTION_SEND,表示发送 - Intent intent = new Intent(Intent.ACTION_SEND); - // 将要发送的信息添加到Intent中,使用EXTRA_TEXT键,info为要发送的文本内容 - intent.putExtra(Intent.EXTRA_TEXT, info); - // 设置Intent的数据类型为"text/plain",表示发送的是纯文本 - intent.setType("text/plain"); - // 使用传入的Context对象启动Activity,将Intent传递给系统,系统会根据Intent的类型选择合适的Activity来处理发送操作 - context.startActivity(intent); - } - - private void createNewNote() { - // Firstly, save current editing notes - saveNote(); - - // For safety, start a new NoteEditActivity - finish(); - Intent intent = new Intent(this, NoteEditActivity.class); - intent.setAction(Intent.ACTION_INSERT_OR_EDIT); - intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mWorkingNote.getFolderId()); - startActivity(intent); - } - - // 删除当前笔记的方法 - private void deleteCurrentNote() { - // 检查当前笔记是否存在于数据库中 - if (mWorkingNote.existInDatabase()) { - // 创建一个HashSet用于存储要删除的笔记ID - HashSet ids = new HashSet(); - // 获取当前笔记的ID - long id = mWorkingNote.getNoteId(); - // 检查笔记ID是否为根文件夹ID,如果不是则添加到HashSet中 - if (id != Notes.ID_ROOT_FOLDER) { - ids.add(id); - } else { - // 如果笔记ID为根文件夹ID,则记录错误日志 - Log.d(TAG, "Wrong note id, should not happen"); - } - // 检查当前是否处于同步模式 - if (!isSyncMode()) { - // 如果不是同步模式,则批量删除笔记 - if (!DataUtils.batchDeleteNotes(getContentResolver(), ids)) { - // 如果删除失败,则记录错误日志 - Log.e(TAG, "Delete Note error"); - } - } else { - // 如果是同步模式,则将笔记移动到垃圾文件夹 - if (!DataUtils.batchMoveToFolder(getContentResolver(), ids, Notes.ID_TRASH_FOLER)) { - // 如果移动失败,则记录错误日志 - Log.e(TAG, "Move notes to trash folder error, should not happens"); - } - } - } - // 标记当前笔记为已删除 - mWorkingNote.markDeleted(true); - } - - // 定义一个私有方法isSyncMode,用于判断当前是否处于同步模式 - 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 - * alert clock, we should save the note first - */ - if (!mWorkingNote.existInDatabase()) { - saveNote(); - } - if (mWorkingNote.getNoteId() > 0) { - Intent intent = new Intent(this, AlarmReceiver.class); - intent.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, mWorkingNote.getNoteId())); - PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); - AlarmManager alarmManager = ((AlarmManager) getSystemService(ALARM_SERVICE)); - showAlertHeader(); - if(!set) { - alarmManager.cancel(pendingIntent); - } else { - alarmManager.set(AlarmManager.RTC_WAKEUP, date, pendingIntent); - } - } else { - /** - * There is the condition that user has input nothing (the note is - * not worthy saving), we have no note id, remind the user that he - * should input something - */ - Log.e(TAG, "Clock alert setting error"); - showToast(R.string.error_note_empty_for_clock); - } - } - - // 定义一个公共方法,当小部件发生变化时调用 - public void onWidgetChanged() { - // 调用updateWidget方法来更新小部件 - updateWidget(); - } - - // 定义一个方法,用于处理编辑文本框的删除操作 - public void onEditTextDelete(int index, String text) { - // 获取当前编辑文本框列表中的子视图数量 - int childCount = mEditTextList.getChildCount(); - // 如果只有一个编辑文本框,则直接返回,不做任何操作 - if (childCount == 1) { - return; - } - - // 从被删除的编辑文本框的下一个开始,遍历所有后续的编辑文本框 - for (int i = index + 1; i < childCount; i++) { - // 获取当前编辑文本框的子视图,并设置其索引为当前索引减1 - ((NoteEditText) mEditTextList.getChildAt(i).findViewById(R.id.et_edit_text)) - .setIndex(i - 1); - } - - // 从列表中移除被删除的编辑文本框 - mEditTextList.removeViewAt(index); - NoteEditText edit = null; - // 如果被删除的编辑文本框是第一个,则获取新的第一个编辑文本框 - if(index == 0) { - edit = (NoteEditText) mEditTextList.getChildAt(0).findViewById( - R.id.et_edit_text); - } else { - // 否则获取被删除的编辑文本框的前一个编辑文本框 - edit = (NoteEditText) mEditTextList.getChildAt(index - 1).findViewById( - R.id.et_edit_text); - } - // 获取当前编辑文本框的文本长度 - int length = edit.length(); - // 将被删除的编辑文本框的文本追加到当前编辑文本框 - edit.append(text); - // 请求焦点 - edit.requestFocus(); - // 设置光标位置为文本末尾 - edit.setSelection(length); - } - - public void onEditTextEnter(int index, String text) { - /** - * Should not happen, check for debug - */ - if(index > mEditTextList.getChildCount()) { - Log.e(TAG, "Index out of mEditTextList boundrary, should not happen"); - } - - View view = getListItem(text, index); - mEditTextList.addView(view, index); - NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); - edit.requestFocus(); - edit.setSelection(0); - for (int i = index + 1; i < mEditTextList.getChildCount(); i++) { - ((NoteEditText) mEditTextList.getChildAt(i).findViewById(R.id.et_edit_text)) - .setIndex(i); - } - } - - // 定义一个私有方法,用于将文本转换为列表模式 - private void switchToListMode(String text) { - // 清除mEditTextList中的所有视图 - mEditTextList.removeAllViews(); - // 将输入的文本按换行符分割成字符串数组 - String[] items = text.split("\n"); - // 初始化索引变量 - int index = 0; - // 遍历分割后的字符串数组 - for (String item : items) { - // 检查当前字符串是否为空 - if(!TextUtils.isEmpty(item)) { - // 如果不为空,将当前字符串作为列表项添加到mEditTextList中 - mEditTextList.addView(getListItem(item, index)); - // 索引加1 - index++; - } - } - // 添加一个空列表项到mEditTextList中 - mEditTextList.addView(getListItem("", index)); - // 获取刚刚添加的空列表项,并请求其内部的编辑文本视图获得焦点 - mEditTextList.getChildAt(index).findViewById(R.id.et_edit_text).requestFocus(); - - // 隐藏笔记编辑器视图 - mNoteEditor.setVisibility(View.GONE); - // 显示编辑文本列表视图 - mEditTextList.setVisibility(View.VISIBLE); - } - - // 定义一个私有方法,用于获取高亮显示用户查询结果的可变字符串 - private Spannable getHighlightQueryResult(String fullText, String userQuery) { - // 创建一个SpannableString对象,如果fullText为null,则使用空字符串 - SpannableString spannable = new SpannableString(fullText == null ? "" : fullText); - // 检查用户查询字符串是否为空 - if (!TextUtils.isEmpty(userQuery)) { - // 编译用户查询字符串为正则表达式模式 - mPattern = Pattern.compile(userQuery); - // 创建一个匹配器,用于在fullText中查找匹配的用户查询字符串 - Matcher m = mPattern.matcher(fullText); - // 初始化匹配的起始位置 - int start = 0; - // 循环查找匹配的用户查询字符串 - while (m.find(start)) { - // 在匹配的起始和结束位置之间设置背景颜色,以高亮显示查询结果 - spannable.setSpan( - // 创建一个BackgroundColorSpan对象,设置高亮背景颜色 - new BackgroundColorSpan(this.getResources().getColor( - R.color.user_query_highlight)), m.start(), m.end(), - Spannable.SPAN_INCLUSIVE_EXCLUSIVE); - start = m.end(); - } - } - return spannable; - } - - // 定义一个私有方法,用于获取列表项的视图 - private View getListItem(String item, int index) { - // 使用LayoutInflater从当前上下文中加载note_edit_list_item布局文件,并返回一个View对象 - View view = LayoutInflater.from(this).inflate(R.layout.note_edit_list_item, null); - // 从视图中找到id为et_edit_text的NoteEditText控件 - final NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); - // 设置edit文本的样式,使用TextAppearanceResources类获取对应的样式资源ID - edit.setTextAppearance(this, TextAppearanceResources.getTexAppearanceResource(mFontSizeId)); - // 从视图中找到id为cb_edit_item的CheckBox控件 - CheckBox cb = ((CheckBox) view.findViewById(R.id.cb_edit_item)); - // 为CheckBox设置一个OnCheckedChangeListener监听器,用于处理选中状态变化 - cb.setOnCheckedChangeListener(new OnCheckedChangeListener() { - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - // 如果CheckBox被选中 - if (isChecked) { - // 设置edit文本的画笔标志,添加删除线效果 - edit.setPaintFlags(edit.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); - } else { - // 如果CheckBox未被选中,设置edit文本的画笔标志,去除删除线效果 - edit.setPaintFlags(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); - } - } - }); - - // 检查item字符串是否以TAG_CHECKED开头 - if (item.startsWith(TAG_CHECKED)) { - // 如果是,设置CheckBox为选中状态 - cb.setChecked(true); - // 设置edit文本的画笔标志,添加删除线效果 - edit.setPaintFlags(edit.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); - // 去除TAG_CHECKED部分,并去除首尾空格 - item = item.substring(TAG_CHECKED.length(), item.length()).trim(); - } else if (item.startsWith(TAG_UNCHECKED)) { - // 如果item字符串以TAG_UNCHECKED开头 - cb.setChecked(false); - // 设置edit文本的画笔标志,去除删除线效果 - edit.setPaintFlags(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); - // 去除TAG_UNCHECKED部分,并去除首尾空格 - item = item.substring(TAG_UNCHECKED.length(), item.length()).trim(); - } - - // 设置edit控件的文本内容,并高亮显示用户查询的关键词 - edit.setOnTextViewChangeListener(this); - // 设置edit控件的索引 - edit.setIndex(index); - // 设置edit控件的文本内容,并高亮显示用户查询的关键词 - 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"); - // 结束方法执行 - return; - } - // 如果有文本内容 - if(hasText) { - // 获取指定索引位置的子视图,并找到其中的 R.id.cb_edit_item 视图,设置为可见 - mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.VISIBLE); - } else { - // 如果没有文本内容,获取指定索引位置的子视图,并找到其中的 R.id.cb_edit_item 视图,设置为不可见 - mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.GONE); - } - } - - // 当检查列表模式改变时调用的方法 - 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); - } - } - - // 定义一个私有方法getWorkingText,用于获取工作文本并返回是否有已选中的项 - private boolean getWorkingText() { - // 初始化一个布尔变量hasChecked,用于标记是否有已选中的项 - boolean hasChecked = false; - // 检查当前工作笔记是否处于清单模式 - if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { - // 创建一个StringBuilder对象,用于构建工作文本 - StringBuilder sb = new StringBuilder(); - // 遍历mEditTextList中的所有子视图 - for (int i = 0; i < mEditTextList.getChildCount(); i++) { - // 获取当前子视图 - View view = mEditTextList.getChildAt(i); - // 从子视图中找到NoteEditText控件 - NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); - // 检查edit文本是否为空 - if (!TextUtils.isEmpty(edit.getText())) { - // 检查子视图中的CheckBox是否被选中 - if (((CheckBox) view.findViewById(R.id.cb_edit_item)).isChecked()) { - // 如果被选中,将选中标记和文本添加到StringBuilder中,并设置hasChecked为true - sb.append(TAG_CHECKED).append(" ").append(edit.getText()).append("\n"); - hasChecked = true; - } else { - // 如果未被选中,将未选中标记和文本添加到StringBuilder中 - sb.append(TAG_UNCHECKED).append(" ").append(edit.getText()).append("\n"); - } - } - } - // 将构建好的字符串设置为工作笔记的工作文本 - mWorkingNote.setWorkingText(sb.toString()); - } else { - // 如果不是清单模式,直接将NoteEditor中的文本设置为工作笔记的工作文本 - mWorkingNote.setWorkingText(mNoteEditor.getText().toString()); - } - // 返回是否有已选中的项 - return hasChecked; - } - - // 定义一个私有方法saveNote,用于保存笔记 - private boolean saveNote() { - // 调用getWorkingText方法获取当前正在编辑的文本内容 - getWorkingText(); - // 调用mWorkingNote对象的saveNote方法保存笔记,并将返回的布尔值赋给变量saved - boolean saved = mWorkingNote.saveNote(); - // 如果笔记保存成功(saved为true) - if (saved) { - /** - * There are two modes from List view to edit view, open one note, - * create/edit a node. Opening node requires to the original - * position in the list when back from edit view, while creating a - * new node requires to the top of the list. This code - * {@link #RESULT_OK} is used to identify the create/edit state - */ - // 设置结果为RESULT_OK,表示操作成功 - setResult(RESULT_OK); - } - // 返回保存操作的结果 - return saved; - } - - private void sendToDesktop() { - /** - * Before send message to home, we should make sure that current - * editing note is exists in databases. So, for new note, firstly - * save it - */ - if (!mWorkingNote.existInDatabase()) { - saveNote(); - } - - if (mWorkingNote.getNoteId() > 0) { - Intent sender = new Intent(); - Intent shortcutIntent = new Intent(this, NoteEditActivity.class); - shortcutIntent.setAction(Intent.ACTION_VIEW); - shortcutIntent.putExtra(Intent.EXTRA_UID, mWorkingNote.getNoteId()); - sender.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); - sender.putExtra(Intent.EXTRA_SHORTCUT_NAME, - makeShortcutIconTitle(mWorkingNote.getContent())); - sender.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, - Intent.ShortcutIconResource.fromContext(this, R.drawable.icon_app)); - sender.putExtra("duplicate", true); - sender.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); - showToast(R.string.info_note_enter_desktop); - sendBroadcast(sender); - } else { - /** - * There is the condition that user has input nothing (the note is - * not worthy saving), we have no note id, remind the user that he - * should input something - */ - Log.e(TAG, "Send to desktop error"); - 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; - } - - // 定义一个私有方法showToast,用于显示一个简短的Toast消息 - private void showToast(int resId) { - // 调用另一个重载的showToast方法,传入resId和Toast.LENGTH_SHORT作为参数 - // resId是字符串资源的ID,Toast.LENGTH_SHORT表示Toast显示的时长为短时间 - showToast(resId, Toast.LENGTH_SHORT); - } - - // 定义一个私有方法showToast,用于显示一个Toast消息 - private void showToast(int resId, int duration) { - // 调用Toast类的静态方法makeText,创建一个Toast对象 - // this:当前上下文,通常是Activity - // resId:要显示的消息字符串的资源ID - // duration:Toast显示的时长,可以是Toast.LENGTH_SHORT或Toast.LENGTH_LONG - Toast.makeText(this, resId, duration).show(); - } -} diff --git a/src/src/net/micode/notes/ui/NoteEditText.java b/src/src/net/micode/notes/ui/NoteEditText.java deleted file mode 100644 index a24662c..0000000 --- a/src/src/net/micode/notes/ui/NoteEditText.java +++ /dev/null @@ -1,283 +0,0 @@ -/* - * 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; -import android.graphics.Rect; -import android.text.Layout; -import android.text.Selection; -import android.text.Spanned; -import android.text.TextUtils; -import android.text.style.URLSpan; -import android.util.AttributeSet; -import android.util.Log; -import android.view.ContextMenu; -import android.view.KeyEvent; -import android.view.MenuItem; -import android.view.MenuItem.OnMenuItemClickListener; -import android.view.MotionEvent; -import android.widget.EditText; - -import net.micode.notes.R; - -import java.util.HashMap; -import java.util.Map; - -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:" ; - - // 链接方案与对应的操作资源ID映射 - private static final Map sSchemaActionResMap = new HashMap(); - static { - // 初始化映射 - sSchemaActionResMap.put(SCHEME_TEL, R.string.note_link_tel); - sSchemaActionResMap.put(SCHEME_HTTP, R.string.note_link_web); - sSchemaActionResMap.put(SCHEME_EMAIL, R.string.note_link_email); - } - - /** - * Call by the {@link NoteEditActivity} to delete or add edit text - */ - public interface OnTextViewChangeListener { - /** - * Delete current edit text when {@link KeyEvent#KEYCODE_DEL} happens - * and the text is null - */ - void onEditTextDelete(int index, String text); - - /** - * Add edit text after current edit text when {@link KeyEvent#KEYCODE_ENTER} - * happen - */ - 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) { - // 调用父类的构造函数,传入当前上下文和null作为参数 - super(context, null); - // 初始化成员变量mIndex,将其设置为0 - mIndex = 0; - } - - // 定义一个公共方法,用于设置索引值 - public void setIndex(int index) { - // 将传入的索引值赋值给成员变量mIndex - mIndex = index; - } - - // 定义一个方法用于设置TextView内容变化的监听器 - public void setOnTextViewChangeListener(OnTextViewChangeListener listener) { - // 将传入的监听器对象赋值给成员变量mOnTextViewChangeListener - mOnTextViewChangeListener = listener; - } - - // 构造函数,用于创建NoteEditText对象 - public NoteEditText(Context context, AttributeSet attrs) { - // 调用父类的构造函数,传入上下文对象和属性集,同时指定默认样式为android.R.attr.editTextStyle - // 这里的super关键字表示调用父类(可能是TextView或EditText)的构造函数 - // context: 上下文对象,用于获取资源和系统服务 - // attrs: 属性集,包含在XML布局文件中定义的属性 - // android.R.attr.editTextStyle: 指定默认的EditText样式 - super(context, attrs, android.R.attr.editTextStyle); - } - - // 构造函数,用于创建NoteEditText对象 - public NoteEditText(Context context, AttributeSet attrs, int defStyle) { - // 调用父类(可能是TextView或EditText)的构造函数,传入上下文、属性集和样式资源ID - super(context, attrs, defStyle); - // TODO Auto-generated constructor stub - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - // 根据触摸事件的类型进行处理 - switch (event.getAction()) { - case MotionEvent.ACTION_DOWN: - - // 获取触摸点的x坐标 - int x = (int) event.getX(); - // 获取触摸点的y坐标 - int y = (int) event.getY(); - // 调整x坐标,减去左侧的内边距 - x -= getTotalPaddingLeft(); - // 调整y坐标,减去顶部的内边距 - y -= getTotalPaddingTop(); - // 调整x坐标,加上视图的滚动偏移量 - x += getScrollX(); - // 调整y坐标,加上视图的滚动偏移量 - y += getScrollY(); - - // 获取当前文本的布局 - Layout layout = getLayout(); - // 根据y坐标获取触摸点所在的行 - int line = layout.getLineForVertical(y); - // 根据x坐标和行号获取触摸点在该行中的偏移量 - int off = layout.getOffsetForHorizontal(line, x); - // 设置文本的选中位置为触摸点所在的偏移量 - Selection.setSelection(getText(), off); - break; - } - - // 调用父类的onTouchEvent方法,继续处理触摸事件 - return super.onTouchEvent(event); - } - - @Override - // 重写 onKeyDown 方法,用于处理按键按下事件 - public boolean onKeyDown(int keyCode, KeyEvent event) { - // 根据按键代码进行不同的处理 - switch (keyCode) { - case KeyEvent.KEYCODE_ENTER: - // 如果按键是回车键 - if (mOnTextViewChangeListener != null) { - - // 如果存在文本视图内容变化监听器 - return false; // 返回 false,表示不处理该按键事件 - } - break; // 跳出 switch 语句 - case KeyEvent.KEYCODE_DEL: - // 如果按键是删除键 - mSelectionStartBeforeDelete = getSelectionStart(); - - // 记录删除操作前的光标位置 - break; // 跳出 switch 语句 - default: - - // 如果是其他按键 - break; // 跳出 switch 语句 - } - // 调用父类的 onKeyDown 方法,处理其他按键事件 - return super.onKeyDown(keyCode, event); - } - - @Override - public boolean onKeyUp(int keyCode, KeyEvent event) { - // 根据按键代码进行不同的处理 - switch(keyCode) { - case KeyEvent.KEYCODE_DEL: // 处理删除键 - if (mOnTextViewChangeListener != null) { // 检查是否有设置文本变化监听器 - if (0 == mSelectionStartBeforeDelete && mIndex != 0) { // 检查删除位置是否在文本开始且不是第一个编辑框 - // 调用监听器的删除方法,传递当前编辑框索引和文本内容 - mOnTextViewChangeListener.onEditTextDelete(mIndex, getText().toString()); - return true; // 返回true表示事件已处理 - } - } else { - // 如果没有设置监听器,记录日志 - Log.d(TAG, "OnTextViewChangeListener was not seted"); - } - break; - case KeyEvent.KEYCODE_ENTER: // 处理回车键 - if (mOnTextViewChangeListener != null) { // 检查是否有设置文本变化监听器 - int selectionStart = getSelectionStart(); // 获取当前光标位置 - String text = getText().subSequence(selectionStart, length()).toString(); // 获取光标后的文本 - setText(getText().subSequence(0, selectionStart)); // 清除光标后的文本 - // 调用监听器的回车方法,传递下一个编辑框索引和光标后的文本内容 - mOnTextViewChangeListener.onEditTextEnter(mIndex + 1, text); - } else { - // 如果没有设置监听器,记录日志 - Log.d(TAG, "OnTextViewChangeListener was not seted"); - } - break; - default: // 其他按键不做处理 - break; - } - // 调用父类方法处理其他按键事件 - return super.onKeyUp(keyCode, event); - } - - @Override - // 重写父类的方法,当视图焦点状态改变时调用 - protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { - // 检查是否有文本变化监听器 - if (mOnTextViewChangeListener != null) { - // 如果当前视图失去焦点且文本为空 - if (!focused && TextUtils.isEmpty(getText())) { - // 调用监听器的onTextChange方法,通知文本为空 - mOnTextViewChangeListener.onTextChange(mIndex, false); - } else { - // 否则,调用监听器的onTextChange方法,通知文本不为空 - mOnTextViewChangeListener.onTextChange(mIndex, true); - } - } - // 调用父类的onFocusChanged方法,确保父类的逻辑也被执行 - super.onFocusChanged(focused, direction, previouslyFocusedRect); - } - - @Override - protected void onCreateContextMenu(ContextMenu menu) { - // 检查当前文本是否为Spanned类型 - if (getText() instanceof Spanned) { - // 获取当前选中的文本的起始和结束位置 - int selStart = getSelectionStart(); - int selEnd = getSelectionEnd(); - - // 确定选中文本的起始和结束位置 - int min = Math.min(selStart, selEnd); - int max = Math.max(selStart, selEnd); - - // 获取选中文本中的URLSpan对象数组 - final URLSpan[] urls = ((Spanned) getText()).getSpans(min, max, URLSpan.class); - // 如果只有一个URLSpan对象 - if (urls.length == 1) { - int defaultResId = 0; - // 遍历预定义的URL模式映射表 - for(String schema: sSchemaActionResMap.keySet()) { - // 检查URL是否包含当前模式 - if(urls[0].getURL().indexOf(schema) >= 0) { - // 如果匹配,获取对应的资源ID - defaultResId = sSchemaActionResMap.get(schema); - break; - } - } - - // 如果没有匹配的模式,使用默认的资源ID - if (defaultResId == 0) { - defaultResId = R.string.note_link_other; - } - - // 向上下文菜单中添加一个菜单项 - menu.add(0, 0, 0, defaultResId).setOnMenuItemClickListener( - new OnMenuItemClickListener() { - public boolean onMenuItemClick(MenuItem item) { - // goto a new intent - urls[0].onClick(NoteEditText.this); - return true; - } - }); - } - } - super.onCreateContextMenu(menu); - } -} diff --git a/src/src/net/micode/notes/ui/NoteItemData.java b/src/src/net/micode/notes/ui/NoteItemData.java deleted file mode 100644 index ced076b..0000000 --- a/src/src/net/micode/notes/ui/NoteItemData.java +++ /dev/null @@ -1,255 +0,0 @@ -/* - * 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; -import android.database.Cursor; -import android.text.TextUtils; - -import net.micode.notes.data.Contact; -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.NoteColumns; -import net.micode.notes.tool.DataUtils; - - -public class NoteItemData { - // 定义一个静态常量数组,用于查询数据库时使用的列名 - static final String [] PROJECTION = new String [] { - NoteColumns.ID, // 笔记ID - NoteColumns.ALERTED_DATE, // 提醒日期 - NoteColumns.BG_COLOR_ID, // 背景颜色ID - NoteColumns.CREATED_DATE, // 创建日期 - NoteColumns.HAS_ATTACHMENT, // 是否有附件 - NoteColumns.MODIFIED_DATE, // 修改日期 - NoteColumns.NOTES_COUNT, // 笔记数量 - NoteColumns.PARENT_ID, // 父ID - NoteColumns.SNIPPET, // 笔记摘要 - NoteColumns.TYPE, // 笔记类型 - NoteColumns.WIDGET_ID, // 小部件ID - NoteColumns.WIDGET_TYPE, // 小部件类型 - }; - - // 定义各个列在PROJECTION数组中的索引 - private static final int ID_COLUMN = 0; - private static final int ALERTED_DATE_COLUMN = 1; - private static final int BG_COLOR_ID_COLUMN = 2; - private static final int CREATED_DATE_COLUMN = 3; - private static final int HAS_ATTACHMENT_COLUMN = 4; - private static final int MODIFIED_DATE_COLUMN = 5; - private static final int NOTES_COUNT_COLUMN = 6; - private static final int PARENT_ID_COLUMN = 7; - private static final int SNIPPET_COLUMN = 8; - private static final int TYPE_COLUMN = 9; - private static final int WIDGET_ID_COLUMN = 10; - private static final int WIDGET_TYPE_COLUMN = 11; - - // 定义笔记项的数据成员变量 - private long mId; - private long mAlertDate; - private int mBgColorId; - private long mCreatedDate; - private boolean mHasAttachment; - private long mModifiedDate; - private int mNotesCount; - private long mParentId; - private String mSnippet; - private int mType; - private int mWidgetId; - private int mWidgetType; - private String mName; - private String mPhoneNumber; - - // 定义笔记项的位置相关标志 - private boolean mIsLastItem; - private boolean mIsFirstItem; - private boolean mIsOnlyOneItem; - private boolean mIsOneNoteFollowingFolder; - private boolean mIsMultiNotesFollowingFolder; - - // 构造函数,从Cursor中读取数据并初始化NoteItemData对象 - public NoteItemData(Context context, Cursor cursor) { - mId = cursor.getLong(ID_COLUMN); - mAlertDate = cursor.getLong(ALERTED_DATE_COLUMN); - mBgColorId = cursor.getInt(BG_COLOR_ID_COLUMN); - mCreatedDate = cursor.getLong(CREATED_DATE_COLUMN); - mHasAttachment = (cursor.getInt(HAS_ATTACHMENT_COLUMN) > 0) ? true : false; - mModifiedDate = cursor.getLong(MODIFIED_DATE_COLUMN); - mNotesCount = cursor.getInt(NOTES_COUNT_COLUMN); - mParentId = cursor.getLong(PARENT_ID_COLUMN); - mSnippet = cursor.getString(SNIPPET_COLUMN); - mSnippet = mSnippet.replace(NoteEditActivity.TAG_CHECKED, "").replace( - NoteEditActivity.TAG_UNCHECKED, ""); - mType = cursor.getInt(TYPE_COLUMN); - mWidgetId = cursor.getInt(WIDGET_ID_COLUMN); - mWidgetType = cursor.getInt(WIDGET_TYPE_COLUMN); - - mPhoneNumber = ""; - // 如果父ID是通话记录文件夹,则获取通话号码和联系人名称 - if (mParentId == Notes.ID_CALL_RECORD_FOLDER) { - mPhoneNumber = DataUtils.getCallNumberByNoteId(context.getContentResolver(), mId); - if (!TextUtils.isEmpty(mPhoneNumber)) { - mName = Contact.getContact(context, mPhoneNumber); - if (mName == null) { - mName = mPhoneNumber; - } - } - } - - if (mName == null) { - mName = ""; - } - // 检查笔记项的位置 - checkPostion(cursor); - } - - // 检查笔记项在Cursor中的位置,并设置相应的标志 - private void checkPostion(Cursor cursor) { - mIsLastItem = cursor.isLast() ? true : false; - mIsFirstItem = cursor.isFirst() ? true : false; - mIsOnlyOneItem = (cursor.getCount() == 1); - mIsMultiNotesFollowingFolder = false; - mIsOneNoteFollowingFolder = false; - - // 如果笔记类型是普通笔记且不是第一个笔记,则检查前一个笔记的类型 - if (mType == Notes.TYPE_NOTE && !mIsFirstItem) { - int position = cursor.getPosition(); - if (cursor.moveToPrevious()) { - if (cursor.getInt(TYPE_COLUMN) == Notes.TYPE_FOLDER - || cursor.getInt(TYPE_COLUMN) == Notes.TYPE_SYSTEM) { - if (cursor.getCount() > (position + 1)) { - mIsMultiNotesFollowingFolder = true; - } else { - mIsOneNoteFollowingFolder = true; - } - } - if (!cursor.moveToNext()) { - throw new IllegalStateException("cursor move to previous but can't move back"); - } - } - } - } - - // 判断是否只有一个笔记跟随文件夹 - public boolean isOneFollowingFolder() { - return mIsOneNoteFollowingFolder; - } - - // 判断是否有多个笔记跟随文件夹 - public boolean isMultiFollowingFolder() { - return mIsMultiNotesFollowingFolder; - } - - // 判断是否是最后一个笔记项 - public boolean isLast() { - return mIsLastItem; - } - - // 获取通话记录的联系人名称 - public String getCallName() { - return mName; - } - - // 判断是否是第一个笔记项 - public boolean isFirst() { - return mIsFirstItem; - } - - // 判断是否只有一个笔记项 - public boolean isSingle() { - return mIsOnlyOneItem; - } - - // 获取笔记ID - public long getId() { - return mId; - } - - // 获取提醒日期 - public long getAlertDate() { - return mAlertDate; - } - - // 获取创建日期 - public long getCreatedDate() { - return mCreatedDate; - } - - // 判断是否有附件 - public boolean hasAttachment() { - return mHasAttachment; - } - - // 获取修改日期 - public long getModifiedDate() { - return mModifiedDate; - } - - // 获取背景颜色ID - public int getBgColorId() { - return mBgColorId; - } - - // 获取父ID - public long getParentId() { - return mParentId; - } - - // 获取笔记数量 - public int getNotesCount() { - return mNotesCount; - } - - // 获取文件夹ID - public long getFolderId () { - return mParentId; - } - - // 获取笔记类型 - public int getType() { - return mType; - } - - // 获取小部件类型 - public int getWidgetType() { - return mWidgetType; - } - - // 获取小部件ID - public int getWidgetId() { - return mWidgetId; - } - - // 获取笔记摘要 - public String getSnippet() { - return mSnippet; - } - - // 判断是否有提醒 - public boolean hasAlert() { - return (mAlertDate > 0); - } - - // 判断是否是通话记录 - public boolean isCallRecord() { - return (mParentId == Notes.ID_CALL_RECORD_FOLDER && !TextUtils.isEmpty(mPhoneNumber)); - } - - // 静态方法,从Cursor中获取笔记类型 - public static int getNoteType(Cursor cursor) { - return cursor.getInt(TYPE_COLUMN); - } -} diff --git a/src/src/net/micode/notes/ui/NotesListActivity.java b/src/src/net/micode/notes/ui/NotesListActivity.java deleted file mode 100644 index 075491c..0000000 --- a/src/src/net/micode/notes/ui/NotesListActivity.java +++ /dev/null @@ -1,1140 +0,0 @@ -/* - * 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; -import android.app.AlertDialog; -import android.app.Dialog; -import android.appwidget.AppWidgetManager; -import android.content.AsyncQueryHandler; -import android.content.ContentResolver; -import android.content.ContentValues; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.SharedPreferences; -import android.database.Cursor; -import android.os.AsyncTask; -import android.os.Bundle; -import android.preference.PreferenceManager; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.util.Log; -import android.view.ActionMode; -import android.view.ContextMenu; -import android.view.ContextMenu.ContextMenuInfo; -import android.view.Display; -import android.view.HapticFeedbackConstants; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; -import android.view.MenuItem.OnMenuItemClickListener; -import android.view.MotionEvent; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.View.OnCreateContextMenuListener; -import android.view.View.OnTouchListener; -import android.view.inputmethod.InputMethodManager; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemClickListener; -import android.widget.AdapterView.OnItemLongClickListener; -import android.widget.Button; -import android.widget.EditText; -import android.widget.ListView; -import android.widget.PopupMenu; -import android.widget.TextView; -import android.widget.Toast; - -import net.micode.notes.R; -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.NoteColumns; -import net.micode.notes.gtask.remote.GTaskSyncService; -import net.micode.notes.model.WorkingNote; -import net.micode.notes.tool.BackupUtils; -import net.micode.notes.tool.DataUtils; -import net.micode.notes.tool.ResourceParser; -import net.micode.notes.ui.NotesListAdapter.AppWidgetAttribute; -import net.micode.notes.widget.NoteWidgetProvider_2x; -import net.micode.notes.widget.NoteWidgetProvider_4x; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.HashSet; - -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; - - // 定义文件夹菜单的删除选项 - private static final int MENU_FOLDER_DELETE = 0; - - // 定义文件夹菜单的查看选项 - private static final int MENU_FOLDER_VIEW = 1; - - // 定义文件夹菜单的更改名称选项 - private static final int MENU_FOLDER_CHANGE_NAME = 2; - - // 定义首选项中添加介绍的键 - private static final String PREFERENCE_ADD_INTRODUCTION = "net.micode.notes.introduction"; - - // 定义列表编辑状态枚举 - private enum ListEditState { - NOTE_LIST, SUB_FOLDER, CALL_RECORD_FOLDER - }; - - // 当前列表编辑状态 - private ListEditState mState; - - // 后台查询处理器 - private BackgroundQueryHandler mBackgroundQueryHandler; - - // 笔记列表适配器 - private NotesListAdapter mNotesListAdapter; - - // 笔记列表视图 - private ListView mNotesListView; - - // 添加新笔记按钮 - private Button mAddNewNote; - - // 是否分发事件 - private boolean mDispatch; - - // 原始Y坐标 - private int mOriginY; - - // 分发Y坐标 - private int mDispatchY; - - // 标题栏 - private TextView mTitleBar; - - // 当前文件夹ID - private long mCurrentFolderId; - - // 内容解析器 - private ContentResolver mContentResolver; - - // 多选模式回调 - private ModeCallback mModeCallBack; - - // 日志标签 - private static final String TAG = "NotesListActivity"; - - // 笔记列表视图滚动速率 - public static final int NOTES_LISTVIEW_SCROLL_RATE = 30; - - // 焦点笔记数据项 - private NoteItemData mFocusNoteDataItem; - - // 正常选择条件 - private static final String NORMAL_SELECTION = NoteColumns.PARENT_ID + "=?"; - - // 根文件夹选择条件 - private static final String ROOT_FOLDER_SELECTION = "(" + NoteColumns.TYPE + "<>" - + Notes.TYPE_SYSTEM + " AND " + NoteColumns.PARENT_ID + "=?)" + " OR (" - + NoteColumns.ID + "=" + Notes.ID_CALL_RECORD_FOLDER + " AND " - + NoteColumns.NOTES_COUNT + ">0)"; - - // 打开笔记的请求代码 - private final static int REQUEST_CODE_OPEN_NODE = 102; - // 新建笔记的请求代码 - private final static int REQUEST_CODE_NEW_NODE = 103; - - @Override - // 重写父类的方法,这里是重写Activity类的onCreate方法 - protected void onCreate(Bundle savedInstanceState) { - // 调用父类的onCreate方法,确保Activity正常创建 - super.onCreate(savedInstanceState); - // 设置当前Activity的布局文件为note_list.xml - setContentView(R.layout.note_list); - // 初始化资源,具体实现可能在initResources方法中定义 - initResources(); - - /** - * Insert an introduction when user firstly use this application - */ - // 从原始资源文件中设置应用信息,可能是首次使用应用时的引导信息 - setAppInfoFromRawRes(); - } - - @Override - // 重写父类的方法,处理从其他Activity返回的结果 - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - // 检查返回结果是否为RESULT_OK,并且请求码为打开节点或新建节点 - if (resultCode == RESULT_OK - && (requestCode == REQUEST_CODE_OPEN_NODE || requestCode == REQUEST_CODE_NEW_NODE)) { - // 如果条件满足,调用适配器的changeCursor方法,传入null,刷新数据 - mNotesListAdapter.changeCursor(null); - } else { - // 如果条件不满足,调用父类的onActivityResult方法,继续处理结果 - super.onActivityResult(requestCode, resultCode, data); - } - } - - // 从原始资源文件中设置应用信息的方法 - private void setAppInfoFromRawRes() { - // 获取SharedPreferences实例,用于存储和读取应用偏好设置 - SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); - // 检查是否已经添加了介绍信息,如果没有则进行添加 - if (!sp.getBoolean(PREFERENCE_ADD_INTRODUCTION, false)) { - // 创建StringBuilder用于构建读取的文本内容 - StringBuilder sb = new StringBuilder(); - InputStream in = null; - try { - // 打开原始资源文件,文件名为introduction - in = getResources().openRawResource(R.raw.introduction); - // 检查输入流是否为空 - if (in != null) { - // 创建InputStreamReader和BufferedReader用于读取文件内容 - InputStreamReader isr = new InputStreamReader(in); - BufferedReader br = new BufferedReader(isr); - // 创建字符数组用于存储读取的字符 - char [] buf = new char[1024]; - int len = 0; - // 循环读取文件内容,直到读取完毕 - while ((len = br.read(buf)) > 0) { - // 将读取的字符追加到StringBuilder中 - sb.append(buf, 0, len); - } - } else { - // 如果输入流为空,则记录错误日志并返回 - Log.e(TAG, "Read introduction file error"); - return; - } - } catch (IOException e) { - // 捕获IO异常并打印堆栈信息,然后返回 - e.printStackTrace(); - return; - } finally { - // 确保输入流被正确关闭 - if(in != null) { - try { - in.close(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } - - // 创建一个空的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()) { - // 如果保存成功,更新SharedPreferences标记为已添加介绍信息 - sp.edit().putBoolean(PREFERENCE_ADD_INTRODUCTION, true).commit(); - } else { - // 如果保存失败,记录错误日志并返回 - Log.e(TAG, "Save introduction note error"); - return; - } - } - } - - @Override - // 重写父类的方法,表示这个方法是一个覆盖方法 - protected void onStart() { - // 调用父类的onStart方法,确保父类的逻辑得以执行 - super.onStart(); - // 调用startAsyncNotesListQuery方法,开始异步查询笔记列表 - startAsyncNotesListQuery(); - } - - // 初始化资源的方法 - private void initResources() { - // 获取当前Activity的内容解析器 - mContentResolver = this.getContentResolver(); - // 创建一个后台查询处理器,用于在后台线程中执行查询操作 - mBackgroundQueryHandler = new BackgroundQueryHandler(this.getContentResolver()); - // 设置当前文件夹ID为根文件夹ID - mCurrentFolderId = Notes.ID_ROOT_FOLDER; - // 获取笔记列表视图 - mNotesListView = (ListView) findViewById(R.id.notes_list); - // 向笔记列表视图添加一个页脚视图 - 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.setOnClickListener(this); - // 设置添加新笔记按钮的触摸监听器 - mAddNewNote.setOnTouchListener(new NewNoteOnTouchListener()); - // 初始化触摸事件相关的变量 - mDispatch = false; - mDispatchY = 0; - mOriginY = 0; - // 获取标题栏文本视图 - mTitleBar = (TextView) findViewById(R.id.tv_title_bar); - // 设置当前状态为笔记列表状态 - mState = ListEditState.NOTE_LIST; - // 创建并设置模式回调 - mModeCallBack = new ModeCallback(); - } - - // 定义一个内部类ModeCallback,实现ListView.MultiChoiceModeListener和OnMenuItemClickListener接口 - private class ModeCallback implements ListView.MultiChoiceModeListener, OnMenuItemClickListener { - // 声明DropdownMenu对象,用于显示下拉菜单 - private DropdownMenu mDropDownMenu; - // 声明ActionMode对象,用于多选模式 - private ActionMode mActionMode; - // 声明MenuItem对象,用于移动菜单项 - private MenuItem mMoveMenu; - - // 当ActionMode创建时调用,初始化菜单和视图 - public boolean onCreateActionMode(ActionMode mode, Menu menu) { - // 加载菜单布局 - getMenuInflater().inflate(R.menu.note_list_options, menu); - // 设置删除菜单项的点击监听器 - menu.findItem(R.id.delete).setOnMenuItemClickListener(this); - // 获取移动菜单项 - mMoveMenu = menu.findItem(R.id.move); - // 根据条件设置移动菜单项的可见性 - if (mFocusNoteDataItem.getParentId() == Notes.ID_CALL_RECORD_FOLDER - || DataUtils.getUserFolderCount(mContentResolver) == 0) { - mMoveMenu.setVisible(false); - } else { - mMoveMenu.setVisible(true); - mMoveMenu.setOnMenuItemClickListener(this); - } - // 保存当前的ActionMode对象 - mActionMode = mode; - // 设置笔记列表适配器为选择模式 - mNotesListAdapter.setChoiceMode(true); - // 设置笔记列表不可长按 - mNotesListView.setLongClickable(false); - // 隐藏添加新笔记的按钮 - mAddNewNote.setVisibility(View.GONE); - - // 加载自定义视图 - View customView = LayoutInflater.from(NotesListActivity.this).inflate( - R.layout.note_list_dropdown_menu, null); - // 设置ActionMode的自定义视图 - mode.setCustomView(customView); - // 初始化下拉菜单 - mDropDownMenu = new DropdownMenu(NotesListActivity.this, - (Button) customView.findViewById(R.id.selection_menu), - R.menu.note_list_dropdown); - // 设置下拉菜单项的点击监听器 - mDropDownMenu.setOnDropdownMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){ - public boolean onMenuItemClick(MenuItem item) { - // 切换全选/取消全选状态 - mNotesListAdapter.selectAll(!mNotesListAdapter.isAllSelected()); - // 更新菜单 - updateMenu(); - return true; - } - - }); - return true; - } - - // 更新菜单标题和选项状态 - // 更新菜单项的方法 - private void updateMenu() { - // 获取当前选中的笔记数量 - int selectedCount = mNotesListAdapter.getSelectedCount(); - // Update dropdown menu - String format = getResources().getString(R.string.menu_select_title, selectedCount); - mDropDownMenu.setTitle(format); - MenuItem item = mDropDownMenu.findItem(R.id.action_select_all); - if (item != null) { - if (mNotesListAdapter.isAllSelected()) { - item.setChecked(true); - item.setTitle(R.string.menu_deselect_all); - } else { - item.setChecked(false); - item.setTitle(R.string.menu_select_all); - } - } - } - - // 定义一个方法,用于在ActionMode准备就绪时进行一些操作 - public boolean onPrepareActionMode(ActionMode mode, Menu menu) { - // TODO Auto-generated method stub - // 这是一个自动生成的代码注释,提示开发者这里可以添加自定义逻辑 - // 返回false,表示没有对菜单进行任何修改 - return false; - } - - // 定义一个方法,用于处理ActionMode中的菜单项点击事件 - public boolean onActionItemClicked(ActionMode mode, MenuItem item) { - // TODO Auto-generated method stub - // 这是一个自动生成的代码注释,提示开发者此处需要实现具体的功能 - // 返回false,表示该点击事件未被处理 - return false; - } - - // 当操作模式被销毁时调用的方法 - public void onDestroyActionMode(ActionMode mode) { - // 设置笔记列表适配器的选择模式为false,即取消选择模式 - mNotesListAdapter.setChoiceMode(false); - // 设置笔记列表视图的长按可点击性为true,即允许长按操作 - mNotesListView.setLongClickable(true); - // 设置添加新笔记按钮的可见性为VISIBLE,即显示按钮 - mAddNewNote.setVisibility(View.VISIBLE); - } - - // 定义一个公共方法,用于结束操作模式 - public void finishActionMode() { - // 调用mActionMode对象的finish方法,结束当前的操作模式 - mActionMode.finish(); - } - - // 定义一个方法,当列表项的选中状态发生变化时被调用 - public void onItemCheckedStateChanged(ActionMode mode, int position, long id, - boolean checked) { - // 调用适配器的方法,设置指定位置项的选中状态 - mNotesListAdapter.setCheckedItem(position, checked); - // 更新菜单,可能是为了根据选中状态显示或隐藏某些菜单项 - updateMenu(); - } - - // 定义一个方法来处理菜单项点击事件 - public boolean onMenuItemClick(MenuItem item) { - // 检查当前选中的笔记数量是否为0 - if (mNotesListAdapter.getSelectedCount() == 0) { - // 如果没有选中任何笔记,显示一个提示信息 - Toast.makeText(NotesListActivity.this, getString(R.string.menu_select_none), - Toast.LENGTH_SHORT).show(); - // 返回true表示事件已处理 - return true; - } - - // 根据点击的菜单项ID进行不同的处理 - switch (item.getItemId()) { - case R.id.delete: - // 创建一个AlertDialog.Builder对象来构建删除确认对话框 - AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.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_notes, - mNotesListAdapter.getSelectedCount())); - // 设置对话框的确定按钮及其点击事件 - builder.setPositiveButton(android.R.string.ok, - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, - int which) { - // 调用批量删除方法 - batchDelete(); - } - }); - // 设置对话框的取消按钮 - builder.setNegativeButton(android.R.string.cancel, null); - // 显示对话框 - builder.show(); - break; - case R.id.move: - // 调用方法查询目标文件夹 - startQueryDestinationFolders(); - break; - default: - // 如果点击的菜单项ID不在上述范围内,返回false表示未处理 - return false; - } - // 返回true表示事件已处理 - return true; - } - } - - // 定义一个内部类 NewNoteOnTouchListener,实现 OnTouchListener 接口,用于处理触摸事件 - private class NewNoteOnTouchListener implements OnTouchListener { - - // 重写 onTouch 方法,处理触摸事件 - public boolean onTouch(View v, MotionEvent event) { - // 根据触摸事件的类型进行不同的处理 - switch (event.getAction()) { - case MotionEvent.ACTION_DOWN: { - // 获取当前窗口的显示对象 - Display display = getWindowManager().getDefaultDisplay(); - // 获取屏幕的高度 - int screenHeight = display.getHeight(); - // 获取“新建笔记”按钮视图的高度 - int newNoteViewHeight = mAddNewNote.getHeight(); - // 计算触摸事件在屏幕中的起始位置 - int start = screenHeight - newNoteViewHeight; - // 计算触摸事件的 Y 坐标 - 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(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))) { - // 记录原始触摸事件的 Y 坐标 - mOriginY = (int) event.getY(); - // 计算需要分发的 Y 坐标 - mDispatchY = eventY; - // 设置触摸事件的新位置 - event.setLocation(event.getX(), mDispatchY); - // 标记需要分发事件 - mDispatch = true; - // 分发触摸事件到列表视图 - return mNotesListView.dispatchTouchEvent(event); - } - } - break; - } - case MotionEvent.ACTION_MOVE: { - // 如果需要分发事件 - if (mDispatch) { - // 更新需要分发的 Y 坐标 - mDispatchY += (int) event.getY() - mOriginY; - // 设置触摸事件的新位置 - event.setLocation(event.getX(), mDispatchY); - // 分发触摸事件到列表视图 - return mNotesListView.dispatchTouchEvent(event); - } - break; - } - default: { - // 如果需要分发事件 - if (mDispatch) { - // 设置触摸事件的新位置 - event.setLocation(event.getX(), mDispatchY); - // 取消标记需要分发事件 - mDispatch = false; - // 分发触摸事件到列表视图 - return mNotesListView.dispatchTouchEvent(event); - } - break; - } - } - // 默认返回 false,表示未处理该触摸事件 - return false; - } - - }; - - // 定义一个私有方法,用于启动异步的笔记列表查询 - private void startAsyncNotesListQuery() { - // 根据当前文件夹ID是否为根文件夹,选择不同的查询条件 - // 如果当前文件夹ID等于根文件夹ID,则使用根文件夹的查询条件 - // 否则使用普通文件夹的查询条件 - 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"); - } - - // 定义一个私有的最终类 BackgroundQueryHandler,继承自 AsyncQueryHandler - private final class BackgroundQueryHandler extends AsyncQueryHandler { - // 构造函数,接收一个 ContentResolver 对象,并调用父类的构造函数 - public BackgroundQueryHandler(ContentResolver contentResolver) { - super(contentResolver); - } - - // 重写 onQueryComplete 方法,在查询完成时被调用 - @Override - protected void onQueryComplete(int token, Object cookie, Cursor cursor) { - // 使用 switch 语句根据 token 的值来处理不同的查询结果 - switch (token) { - case FOLDER_NOTE_LIST_QUERY_TOKEN: - // 如果 token 是 FOLDER_NOTE_LIST_QUERY_TOKEN,则更新 mNotesListAdapter 的数据源 - mNotesListAdapter.changeCursor(cursor); - break; - case FOLDER_LIST_QUERY_TOKEN: - // 如果 token 是 FOLDER_LIST_QUERY_TOKEN,则检查 cursor 是否不为空且包含数据 - if (cursor != null && cursor.getCount() > 0) { - // 如果有数据,则显示文件夹列表菜单 - showFolderListMenu(cursor); - } else { - // 如果没有数据,则记录错误日志 - Log.e(TAG, "Query folder failed"); - } - break; - default: - // 如果 token 不匹配任何已知值,则直接返回 - return; - } - } - } - - // 定义一个私有方法showFolderListMenu,用于显示文件夹列表菜单 - private void showFolderListMenu(Cursor cursor) { - // 创建一个AlertDialog.Builder对象,用于构建对话框 - AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); - // 设置对话框的标题,标题内容来自资源文件中的menu_title_select_folder - builder.setTitle(R.string.menu_title_select_folder); - // 创建一个FoldersListAdapter对象,用于适配文件夹列表数据 - final FoldersListAdapter adapter = new FoldersListAdapter(this, cursor); - // 设置对话框的适配器,用于显示文件夹列表 - builder.setAdapter(adapter, new DialogInterface.OnClickListener() { - - // 当用户点击对话框中的某个选项时,执行此方法 - public void onClick(DialogInterface dialog, int which) { - // 调用DataUtils的batchMoveToFolder方法,将选中的笔记批量移动到指定的文件夹 - DataUtils.batchMoveToFolder(mContentResolver, - mNotesListAdapter.getSelectedItemIds(), adapter.getItemId(which)); - // 显示一个Toast消息,提示用户笔记已移动到指定文件夹 - Toast.makeText( - NotesListActivity.this, - // 格式化字符串,显示移动的笔记数量和目标文件夹名称 - getString(R.string.format_move_notes_to_folder, - mNotesListAdapter.getSelectedCount(), - adapter.getFolderName(NotesListActivity.this, which)), - // 设置Toast显示时长为短时间 - Toast.LENGTH_SHORT).show(); - // 调用mModeCallBack的finishActionMode方法,结束当前的操作模式 - mModeCallBack.finishActionMode(); - } - }); - // 显示对话框 - builder.show(); - } - - // 定义一个私有方法用于创建新笔记 - private void createNewNote() { - // 创建一个Intent对象,用于从当前Activity跳转到NoteEditActivity - Intent intent = new Intent(this, NoteEditActivity.class); - // 设置Intent的动作类型为插入或编辑 - intent.setAction(Intent.ACTION_INSERT_OR_EDIT); - // 向Intent中添加一个额外的数据,表示当前文件夹的ID - intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mCurrentFolderId); - // 调用startActivityForResult方法启动NoteEditActivity,并传递Intent和请求码 - // 请求码用于在NoteEditActivity返回结果时标识这次请求 - this.startActivityForResult(intent, REQUEST_CODE_NEW_NODE); - } - - // 定义一个私有方法batchDelete,用于批量删除选中的笔记 - private void batchDelete() { - // 创建一个新的AsyncTask,用于在后台执行删除操作 - new AsyncTask>() { - // 在后台执行删除操作 - protected HashSet doInBackground(Void... unused) { - // 获取选中的笔记对应的AppWidgetAttribute集合 - 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 - if (!DataUtils.batchMoveToFolder(mContentResolver, mNotesListAdapter - .getSelectedItemIds(), Notes.ID_TRASH_FOLER)) { - Log.e(TAG, "Move notes to trash folder error, should not happens"); - } - } - return widgets; - } - - @Override - protected void onPostExecute(HashSet widgets) { - if (widgets != null) { - for (AppWidgetAttribute widget : widgets) { - if (widget.widgetId != AppWidgetManager.INVALID_APPWIDGET_ID - && widget.widgetType != Notes.TYPE_WIDGET_INVALIDE) { - updateWidget(widget.widgetId, widget.widgetType); - } - } - } - mModeCallBack.finishActionMode(); - } - }.execute(); - } - - private void deleteFolder(long folderId) { - if (folderId == Notes.ID_ROOT_FOLDER) { - Log.e(TAG, "Wrong folder id, should not happen " + folderId); - return; - } - - HashSet ids = new HashSet(); - ids.add(folderId); - HashSet widgets = DataUtils.getFolderNoteWidget(mContentResolver, - folderId); - if (!isSyncMode()) { - // if not synced, delete folder directly - DataUtils.batchDeleteNotes(mContentResolver, ids); - } else { - // in sync mode, we'll move the deleted folder into the trash folder - DataUtils.batchMoveToFolder(mContentResolver, ids, Notes.ID_TRASH_FOLER); - } - if (widgets != null) { - for (AppWidgetAttribute widget : widgets) { - if (widget.widgetId != AppWidgetManager.INVALID_APPWIDGET_ID - && widget.widgetType != Notes.TYPE_WIDGET_INVALIDE) { - updateWidget(widget.widgetId, widget.widgetType); - } - } - } - } - - 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); - } - - private void openFolder(NoteItemData data) { - mCurrentFolderId = data.getId(); - startAsyncNotesListQuery(); - if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { - mState = ListEditState.CALL_RECORD_FOLDER; - mAddNewNote.setVisibility(View.GONE); - } else { - mState = ListEditState.SUB_FOLDER; - } - if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { - mTitleBar.setText(R.string.call_record_folder_name); - } else { - mTitleBar.setText(data.getSnippet()); - } - mTitleBar.setVisibility(View.VISIBLE); - } - - public void onClick(View v) { - switch (v.getId()) { - case R.id.btn_new_note: - createNewNote(); - break; - default: - break; - } - } - - private void showSoftInput() { - InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); - if (inputMethodManager != null) { - inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); - } - } - - private void hideSoftInput(View view) { - InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); - inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); - } - - 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); - final EditText etName = (EditText) view.findViewById(R.id.et_foler_name); - showSoftInput(); - if (!create) { - if (mFocusNoteDataItem != null) { - etName.setText(mFocusNoteDataItem.getSnippet()); - builder.setTitle(getString(R.string.menu_folder_change_name)); - } else { - Log.e(TAG, "The long click data item is null"); - return; - } - } else { - etName.setText(""); - builder.setTitle(this.getString(R.string.menu_create_folder)); - } - - builder.setPositiveButton(android.R.string.ok, null); - builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - hideSoftInput(etName); - } - }); - - final Dialog dialog = builder.setView(view).show(); - final Button positive = (Button)dialog.findViewById(android.R.id.button1); - positive.setOnClickListener(new OnClickListener() { - public void onClick(View v) { - hideSoftInput(etName); - String name = etName.getText().toString(); - if (DataUtils.checkVisibleFolderName(mContentResolver, name)) { - Toast.makeText(NotesListActivity.this, getString(R.string.folder_exist, name), - Toast.LENGTH_LONG).show(); - etName.setSelection(0, etName.length()); - return; - } - if (!create) { - if (!TextUtils.isEmpty(name)) { - ContentValues values = new ContentValues(); - values.put(NoteColumns.SNIPPET, name); - values.put(NoteColumns.TYPE, Notes.TYPE_FOLDER); - values.put(NoteColumns.LOCAL_MODIFIED, 1); - mContentResolver.update(Notes.CONTENT_NOTE_URI, values, NoteColumns.ID - + "=?", new String[] { - String.valueOf(mFocusNoteDataItem.getId()) - }); - } - } else if (!TextUtils.isEmpty(name)) { - ContentValues values = new ContentValues(); - values.put(NoteColumns.SNIPPET, name); - values.put(NoteColumns.TYPE, Notes.TYPE_FOLDER); - mContentResolver.insert(Notes.CONTENT_NOTE_URI, values); - } - 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 - - } - - public void onTextChanged(CharSequence s, int start, int before, int count) { - if (TextUtils.isEmpty(etName.getText())) { - positive.setEnabled(false); - } else { - positive.setEnabled(true); - } - } - - public void afterTextChanged(Editable s) { - // TODO Auto-generated method stub - - } - }); - } - - @Override - public void onBackPressed() { - switch (mState) { - case SUB_FOLDER: - mCurrentFolderId = Notes.ID_ROOT_FOLDER; - mState = ListEditState.NOTE_LIST; - startAsyncNotesListQuery(); - mTitleBar.setVisibility(View.GONE); - break; - case CALL_RECORD_FOLDER: - mCurrentFolderId = Notes.ID_ROOT_FOLDER; - mState = ListEditState.NOTE_LIST; - mAddNewNote.setVisibility(View.VISIBLE); - mTitleBar.setVisibility(View.GONE); - startAsyncNotesListQuery(); - break; - case NOTE_LIST: - super.onBackPressed(); - break; - default: - break; - } - } - - private void updateWidget(int appWidgetId, int appWidgetType) { - Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE); - if (appWidgetType == Notes.TYPE_WIDGET_2X) { - intent.setClass(this, NoteWidgetProvider_2x.class); - } else if (appWidgetType == Notes.TYPE_WIDGET_4X) { - intent.setClass(this, NoteWidgetProvider_4x.class); - } else { - Log.e(TAG, "Unspported widget type"); - return; - } - - intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { - appWidgetId - }); - - sendBroadcast(intent); - setResult(RESULT_OK, intent); - } - - private final OnCreateContextMenuListener mFolderOnCreateContextMenuListener = new OnCreateContextMenuListener() { - public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { - if (mFocusNoteDataItem != null) { - menu.setHeaderTitle(mFocusNoteDataItem.getSnippet()); - menu.add(0, MENU_FOLDER_VIEW, 0, R.string.menu_folder_view); - menu.add(0, MENU_FOLDER_DELETE, 0, R.string.menu_folder_delete); - menu.add(0, MENU_FOLDER_CHANGE_NAME, 0, R.string.menu_folder_change_name); - } - } - }; - - @Override - public void onContextMenuClosed(Menu menu) { - if (mNotesListView != null) { - mNotesListView.setOnCreateContextMenuListener(null); - } - super.onContextMenuClosed(menu); - } - - @Override - public boolean onContextItemSelected(MenuItem item) { - if (mFocusNoteDataItem == null) { - Log.e(TAG, "The long click data item is null"); - return false; - } - switch (item.getItemId()) { - case MENU_FOLDER_VIEW: - openFolder(mFocusNoteDataItem); - break; - case MENU_FOLDER_DELETE: - 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)); - builder.setPositiveButton(android.R.string.ok, - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - deleteFolder(mFocusNoteDataItem.getId()); - } - }); - builder.setNegativeButton(android.R.string.cancel, null); - builder.show(); - break; - case MENU_FOLDER_CHANGE_NAME: - showCreateOrModifyFolderDialog(false); - break; - default: - break; - } - - return true; - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - menu.clear(); - if (mState == ListEditState.NOTE_LIST) { - getMenuInflater().inflate(R.menu.note_list, menu); - // set sync or sync_cancel - menu.findItem(R.id.menu_sync).setTitle( - GTaskSyncService.isSyncing() ? R.string.menu_sync_cancel : R.string.menu_sync); - } else if (mState == ListEditState.SUB_FOLDER) { - getMenuInflater().inflate(R.menu.sub_folder, menu); - } else if (mState == ListEditState.CALL_RECORD_FOLDER) { - getMenuInflater().inflate(R.menu.call_record_folder, menu); - } else { - Log.e(TAG, "Wrong state:" + mState); - } - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_new_folder: { - showCreateOrModifyFolderDialog(true); - break; - } - case R.id.menu_export_text: { - exportNoteToText(); - break; - } - case R.id.menu_sync: { - if (isSyncMode()) { - if (TextUtils.equals(item.getTitle(), getString(R.string.menu_sync))) { - GTaskSyncService.startSync(this); - } else { - GTaskSyncService.cancelSync(this); - } - } else { - startPreferenceActivity(); - } - break; - } - case R.id.menu_setting: { - startPreferenceActivity(); - break; - } - case R.id.menu_new_note: { - createNewNote(); - break; - } - case R.id.menu_search: - onSearchRequested(); - break; - default: - break; - } - return true; - } - - @Override - public boolean onSearchRequested() { - startSearch(null, false, null /* appData */, false); - return true; - } - - private void exportNoteToText() { - final BackupUtils backup = BackupUtils.getInstance(NotesListActivity.this); - new AsyncTask() { - - @Override - protected Integer doInBackground(Void... unused) { - return backup.exportToText(); - } - - @Override - protected void onPostExecute(Integer result) { - if (result == BackupUtils.STATE_SD_CARD_UNMOUONTED) { - AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); - builder.setTitle(NotesListActivity.this - .getString(R.string.failed_sdcard_export)); - builder.setMessage(NotesListActivity.this - .getString(R.string.error_sdcard_unmounted)); - builder.setPositiveButton(android.R.string.ok, null); - builder.show(); - } else if (result == BackupUtils.STATE_SUCCESS) { - AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); - builder.setTitle(NotesListActivity.this - .getString(R.string.success_sdcard_export)); - builder.setMessage(NotesListActivity.this.getString( - R.string.format_exported_file_location, backup - .getExportedTextFileName(), backup.getExportedTextFileDir())); - builder.setPositiveButton(android.R.string.ok, null); - builder.show(); - } else if (result == BackupUtils.STATE_SYSTEM_ERROR) { - AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); - builder.setTitle(NotesListActivity.this - .getString(R.string.failed_sdcard_export)); - builder.setMessage(NotesListActivity.this - .getString(R.string.error_sdcard_export)); - builder.setPositiveButton(android.R.string.ok, null); - builder.show(); - } - } - - }.execute(); - } - - private boolean isSyncMode() { - return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0; - } - - private void startPreferenceActivity() { - Activity from = getParent() != null ? getParent() : this; - Intent intent = new Intent(from, NotesPreferenceActivity.class); - from.startActivityIfNeeded(intent, -1); - } - - private class OnListItemClickListener implements OnItemClickListener { - - public void onItemClick(AdapterView parent, View view, int position, long id) { - if (view instanceof NotesListItem) { - NoteItemData item = ((NotesListItem) view).getItemData(); - if (mNotesListAdapter.isInChoiceMode()) { - if (item.getType() == Notes.TYPE_NOTE) { - position = position - mNotesListView.getHeaderViewsCount(); - mModeCallBack.onItemCheckedStateChanged(null, position, id, - !mNotesListAdapter.isSelectedItem(position)); - } - return; - } - - switch (mState) { - case NOTE_LIST: - if (item.getType() == Notes.TYPE_FOLDER - || item.getType() == Notes.TYPE_SYSTEM) { - openFolder(item); - } else if (item.getType() == Notes.TYPE_NOTE) { - openNode(item); - } else { - Log.e(TAG, "Wrong note type in NOTE_LIST"); - } - break; - case SUB_FOLDER: - case CALL_RECORD_FOLDER: - if (item.getType() == Notes.TYPE_NOTE) { - openNode(item); - } else { - Log.e(TAG, "Wrong note type in SUB_FOLDER"); - } - break; - default: - break; - } - } - } - - } - - 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 + ")"; - - mBackgroundQueryHandler.startQuery(FOLDER_LIST_QUERY_TOKEN, - null, - Notes.CONTENT_NOTE_URI, - FoldersListAdapter.PROJECTION, - selection, - new String[] { - String.valueOf(Notes.TYPE_FOLDER), - String.valueOf(Notes.ID_TRASH_FOLER), - String.valueOf(mCurrentFolderId) - }, - NoteColumns.MODIFIED_DATE + " DESC"); - } - - public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { - if (view instanceof NotesListItem) { - mFocusNoteDataItem = ((NotesListItem) view).getItemData(); - if (mFocusNoteDataItem.getType() == Notes.TYPE_NOTE && !mNotesListAdapter.isInChoiceMode()) { - if (mNotesListView.startActionMode(mModeCallBack) != null) { - mModeCallBack.onItemCheckedStateChanged(null, position, id, true); - mNotesListView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); - } else { - Log.e(TAG, "startActionMode fails"); - } - } else if (mFocusNoteDataItem.getType() == Notes.TYPE_FOLDER) { - mNotesListView.setOnCreateContextMenuListener(mFolderOnCreateContextMenuListener); - } - } - return false; - } -} diff --git a/src/src/net/micode/notes/ui/NotesListAdapter.java b/src/src/net/micode/notes/ui/NotesListAdapter.java deleted file mode 100644 index 51c9cb9..0000000 --- a/src/src/net/micode/notes/ui/NotesListAdapter.java +++ /dev/null @@ -1,184 +0,0 @@ -/* - * 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; -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; - - -public class NotesListAdapter extends CursorAdapter { - private static final String TAG = "NotesListAdapter"; - private Context mContext; - private HashMap mSelectedIndex; - private int mNotesCount; - private boolean mChoiceMode; - - public static class AppWidgetAttribute { - public int widgetId; - public int widgetType; - }; - - public NotesListAdapter(Context context) { - super(context, null); - mSelectedIndex = new HashMap(); - mContext = context; - mNotesCount = 0; - } - - @Override - public View newView(Context context, Cursor cursor, ViewGroup parent) { - return new NotesListItem(context); - } - - @Override - public void bindView(View view, Context context, Cursor cursor) { - if (view instanceof NotesListItem) { - NoteItemData itemData = new NoteItemData(context, cursor); - ((NotesListItem) view).bind(context, itemData, mChoiceMode, - isSelectedItem(cursor.getPosition())); - } - } - - public void setCheckedItem(final int position, final boolean checked) { - mSelectedIndex.put(position, checked); - notifyDataSetChanged(); - } - - public boolean isInChoiceMode() { - return mChoiceMode; - } - - public void setChoiceMode(boolean mode) { - mSelectedIndex.clear(); - mChoiceMode = mode; - } - - 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); - } - } - } - } - - public HashSet getSelectedItemIds() { - HashSet itemSet = new HashSet(); - 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; - } - - public HashSet getSelectedWidget() { - HashSet itemSet = new HashSet(); - for (Integer position : mSelectedIndex.keySet()) { - if (mSelectedIndex.get(position) == true) { - Cursor c = (Cursor) getItem(position); - if (c != null) { - 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; - } - - 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++; - } - } - return count; - } - - public boolean isAllSelected() { - int checkedCount = getSelectedCount(); - return (checkedCount != 0 && checkedCount == mNotesCount); - } - - public boolean isSelectedItem(final int position) { - if (null == mSelectedIndex.get(position)) { - return false; - } - return mSelectedIndex.get(position); - } - - @Override - protected void onContentChanged() { - super.onContentChanged(); - calcNotesCount(); - } - - @Override - public void changeCursor(Cursor cursor) { - super.changeCursor(cursor); - calcNotesCount(); - } - - 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++; - } - } else { - Log.e(TAG, "Invalid cursor"); - return; - } - } - } -} diff --git a/src/src/net/micode/notes/ui/NotesListItem.java b/src/src/net/micode/notes/ui/NotesListItem.java deleted file mode 100644 index 1221e80..0000000 --- a/src/src/net/micode/notes/ui/NotesListItem.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * 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; -import android.text.format.DateUtils; -import android.view.View; -import android.widget.CheckBox; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; - -import net.micode.notes.R; -import net.micode.notes.data.Notes; -import net.micode.notes.tool.DataUtils; -import net.micode.notes.tool.ResourceParser.NoteItemBgResources; - - -public class NotesListItem extends LinearLayout { - 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); - 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); - } - - 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); - } else { - mCheckBox.setVisibility(View.GONE); - } - - mItemData = data; - if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { - mCallName.setVisibility(View.GONE); - mAlert.setVisibility(View.VISIBLE); - mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem); - 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); - } else if (data.getParentId() == Notes.ID_CALL_RECORD_FOLDER) { - mCallName.setVisibility(View.VISIBLE); - 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.setVisibility(View.VISIBLE); - } else { - mAlert.setVisibility(View.GONE); - } - } else { - mCallName.setVisibility(View.GONE); - mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem); - - if (data.getType() == Notes.TYPE_FOLDER) { - mTitle.setText(data.getSnippet() - + context.getString(R.string.format_folder_files_count, - data.getNotesCount())); - mAlert.setVisibility(View.GONE); - } else { - mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); - if (data.hasAlert()) { - mAlert.setImageResource(R.drawable.clock); - mAlert.setVisibility(View.VISIBLE); - } else { - mAlert.setVisibility(View.GONE); - } - } - } - mTime.setText(DateUtils.getRelativeTimeSpanString(data.getModifiedDate())); - - setBackground(data); - } - - private void setBackground(NoteItemData data) { - int id = data.getBgColorId(); - if (data.getType() == Notes.TYPE_NOTE) { - if (data.isSingle() || data.isOneFollowingFolder()) { - setBackgroundResource(NoteItemBgResources.getNoteBgSingleRes(id)); - } else if (data.isLast()) { - setBackgroundResource(NoteItemBgResources.getNoteBgLastRes(id)); - } else if (data.isFirst() || data.isMultiFollowingFolder()) { - setBackgroundResource(NoteItemBgResources.getNoteBgFirstRes(id)); - } else { - setBackgroundResource(NoteItemBgResources.getNoteBgNormalRes(id)); - } - } else { - setBackgroundResource(NoteItemBgResources.getFolderBgRes()); - } - } - - public NoteItemData getItemData() { - return mItemData; - } -} diff --git a/src/src/net/micode/notes/ui/NotesPreferenceActivity.java b/src/src/net/micode/notes/ui/NotesPreferenceActivity.java deleted file mode 100644 index 07c5f7e..0000000 --- a/src/src/net/micode/notes/ui/NotesPreferenceActivity.java +++ /dev/null @@ -1,388 +0,0 @@ -/* - * 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; -import android.accounts.AccountManager; -import android.app.ActionBar; -import android.app.AlertDialog; -import android.content.BroadcastReceiver; -import android.content.ContentValues; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.SharedPreferences; -import android.os.Bundle; -import android.preference.Preference; -import android.preference.Preference.OnPreferenceClickListener; -import android.preference.PreferenceActivity; -import android.preference.PreferenceCategory; -import android.text.TextUtils; -import android.text.format.DateFormat; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; -import android.widget.Toast; - -import net.micode.notes.R; -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.NoteColumns; -import net.micode.notes.gtask.remote.GTaskSyncService; - - -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_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 AUTHORITIES_FILTER_KEY = "authorities"; - - private PreferenceCategory mAccountCategory; - - private GTaskReceiver mReceiver; - - private Account[] mOriAccounts; - - private boolean mHasAddedAccount; - - @Override - 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); - mReceiver = new GTaskReceiver(); - IntentFilter filter = new IntentFilter(); - filter.addAction(GTaskSyncService.GTASK_SERVICE_BROADCAST_NAME); - registerReceiver(mReceiver, filter); - - mOriAccounts = null; - View header = LayoutInflater.from(this).inflate(R.layout.settings_header, null); - getListView().addHeaderView(header, null, true); - } - - @Override - protected void onResume() { - super.onResume(); - - // need to set sync account automatically if user has added a new - // account - if (mHasAddedAccount) { - Account[] accounts = getGoogleAccounts(); - 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(); - } - - @Override - protected void onDestroy() { - if (mReceiver != null) { - unregisterReceiver(mReceiver); - } - super.onDestroy(); - } - - private void loadAccountPreference() { - 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.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.makeText(NotesPreferenceActivity.this, - R.string.preferences_toast_cannot_change_account, Toast.LENGTH_SHORT) - .show(); - } - return true; - } - }); - - mAccountCategory.addPreference(accountPref); - } - - 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))); - - // 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); - } - } - } - - private void refreshUI() { - loadAccountPreference(); - loadSyncButton(); - } - - private void showSelectAccountAlertDialog() { - 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)); - - dialogBuilder.setCustomTitle(titleView); - dialogBuilder.setPositiveButton(null, null); - - Account[] accounts = getGoogleAccounts(); - 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; - } - items[index++] = account.name; - } - dialogBuilder.setSingleChoiceItems(items, checkedItem, - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - setSyncAccount(itemMapping[which].toString()); - dialog.dismiss(); - refreshUI(); - } - }); - } - - View addAccountView = LayoutInflater.from(this).inflate(R.layout.add_account_text, null); - dialogBuilder.setView(addAccountView); - - final AlertDialog dialog = dialogBuilder.show(); - addAccountView.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - mHasAddedAccount = true; - Intent intent = new Intent("android.settings.ADD_ACCOUNT_SETTINGS"); - intent.putExtra(AUTHORITIES_FILTER_KEY, new String[] { - "gmail-ls" - }); - startActivityForResult(intent, -1); - dialog.dismiss(); - } - }); - } - - private void showChangeAccountConfirmAlertDialog() { - 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); - - 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() { - public void onClick(DialogInterface dialog, int which) { - if (which == 0) { - showSelectAccountAlertDialog(); - } else if (which == 1) { - removeSyncAccount(); - refreshUI(); - } - } - }); - dialogBuilder.show(); - } - - private Account[] getGoogleAccounts() { - AccountManager accountManager = AccountManager.get(this); - return accountManager.getAccountsByType("com.google"); - } - - private void setSyncAccount(String account) { - if (!getSyncAccountName(this).equals(account)) { - SharedPreferences settings = getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); - 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); - - // clean up local gtask related info - new Thread(new Runnable() { - public void run() { - ContentValues values = new ContentValues(); - values.put(NoteColumns.GTASK_ID, ""); - values.put(NoteColumns.SYNC_ID, 0); - 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(); - } - } - - private void removeSyncAccount() { - SharedPreferences settings = getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = settings.edit(); - if (settings.contains(PREFERENCE_SYNC_ACCOUNT_NAME)) { - editor.remove(PREFERENCE_SYNC_ACCOUNT_NAME); - } - if (settings.contains(PREFERENCE_LAST_SYNC_TIME)) { - editor.remove(PREFERENCE_LAST_SYNC_TIME); - } - editor.commit(); - - // clean up local gtask related info - new Thread(new Runnable() { - public void run() { - ContentValues values = new ContentValues(); - values.put(NoteColumns.GTASK_ID, ""); - values.put(NoteColumns.SYNC_ID, 0); - getContentResolver().update(Notes.CONTENT_NOTE_URI, values, null, null); - } - }).start(); - } - - public static String getSyncAccountName(Context context) { - SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, - Context.MODE_PRIVATE); - return settings.getString(PREFERENCE_SYNC_ACCOUNT_NAME, ""); - } - - public static void setLastSyncTime(Context context, long time) { - SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, - Context.MODE_PRIVATE); - SharedPreferences.Editor editor = settings.edit(); - editor.putLong(PREFERENCE_LAST_SYNC_TIME, time); - editor.commit(); - } - - public static long getLastSyncTime(Context context) { - SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, - Context.MODE_PRIVATE); - return settings.getLong(PREFERENCE_LAST_SYNC_TIME, 0); - } - - private class GTaskReceiver extends BroadcastReceiver { - - @Override - public void onReceive(Context context, Intent intent) { - refreshUI(); - if (intent.getBooleanExtra(GTaskSyncService.GTASK_SERVICE_BROADCAST_IS_SYNCING, false)) { - TextView syncStatus = (TextView) findViewById(R.id.prefenerece_sync_status_textview); - syncStatus.setText(intent - .getStringExtra(GTaskSyncService.GTASK_SERVICE_BROADCAST_PROGRESS_MSG)); - } - - } - } - - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - Intent intent = new Intent(this, NotesListActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - startActivity(intent); - return true; - default: - return false; - } - } -} diff --git a/src/src/net/micode/notes/widget/NoteWidgetProvider.java b/src/src/net/micode/notes/widget/NoteWidgetProvider.java deleted file mode 100644 index d8cfecf..0000000 --- a/src/src/net/micode/notes/widget/NoteWidgetProvider.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * 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.widget; -import android.app.PendingIntent; -import android.appwidget.AppWidgetManager; -import android.appwidget.AppWidgetProvider; -import android.content.ContentValues; -import android.content.Context; -import android.content.Intent; -import android.database.Cursor; -import android.util.Log; -import android.widget.RemoteViews; - -import net.micode.notes.R; -import net.micode.notes.data.Notes; -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; - -public abstract class NoteWidgetProvider extends AppWidgetProvider { - // 定义查询笔记信息的列 - public static final String [] PROJECTION = new String [] { - NoteColumns.ID, // 笔记ID - NoteColumns.BG_COLOR_ID, // 背景颜色ID - NoteColumns.SNIPPET // 笔记摘要 - }; - - - - // 定义列的索引 - public static final int COLUMN_ID = 0; // 笔记ID列索引 - public static final int COLUMN_BG_COLOR_ID = 1; // 背景颜色ID列索引 - public static final int COLUMN_SNIPPET = 2; // 笔记摘要列索引 - - // 日志标签 - private static final String TAG = "NoteWidgetProvider"; - - @Override - public void onDeleted(Context context, int[] appWidgetIds) { - // 当小部件被删除时,更新数据库中的小部件ID为无效值 - ContentValues values = new ContentValues(); - values.put(NoteColumns.WIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); - for (int i = 0; i < appWidgetIds.length; i++) { - context.getContentResolver().update(Notes.CONTENT_NOTE_URI, - values, - NoteColumns.WIDGET_ID + "=?", - new String[] { String.valueOf(appWidgetIds[i])}); - } - } - - // 获取指定小部件ID的笔记信息 - private Cursor getNoteWidgetInfo(Context context, int widgetId) { - return context.getContentResolver().query(Notes.CONTENT_NOTE_URI, - PROJECTION, - NoteColumns.WIDGET_ID + "=? AND " + NoteColumns.PARENT_ID + "<>?", - new String[] { String.valueOf(widgetId), String.valueOf(Notes.ID_TRASH_FOLER) }, - null); - } - - // 更新小部件 - protected void update(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { - update(context, appWidgetManager, appWidgetIds, false); - } - - // 更新小部件,支持隐私模式 - // 更新应用小部件的方法 - private void update(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds, - boolean privacyMode) { - // 遍历所有的小部件ID - for (int i = 0; i < appWidgetIds.length; i++) { - // 检查小部件ID是否有效 - if (appWidgetIds[i] != AppWidgetManager.INVALID_APPWIDGET_ID) { - int bgId = ResourceParser.getDefaultBgId(context); // 获取默认背景ID - String snippet = ""; // 笔记摘要 - Intent intent = new Intent(context, NoteEditActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); - intent.putExtra(Notes.INTENT_EXTRA_WIDGET_ID, appWidgetIds[i]); - intent.putExtra(Notes.INTENT_EXTRA_WIDGET_TYPE, getWidgetType()); - - // 获取小部件的笔记信息 - Cursor c = getNoteWidgetInfo(context, appWidgetIds[i]); - if (c != null && c.moveToFirst()) { - // 检查是否有多个笔记使用相同的小部件ID - if (c.getCount() > 1) { - Log.e(TAG, "Multiple message with same widget id:" + appWidgetIds[i]); - c.close(); - return; - } - snippet = c.getString(COLUMN_SNIPPET); // 获取笔记摘要 - bgId = c.getInt(COLUMN_BG_COLOR_ID); // 获取背景颜色ID - intent.putExtra(Intent.EXTRA_UID, c.getLong(COLUMN_ID)); // 添加笔记ID - intent.setAction(Intent.ACTION_VIEW); // 设置意图为查看笔记 - } else { - // 如果没有找到笔记,显示默认提示信息 - snippet = context.getResources().getString(R.string.widget_havenot_content); - intent.setAction(Intent.ACTION_INSERT_OR_EDIT); // 设置意图为插入或编辑笔记 - } - - if (c != null) { - c.close(); // 关闭游标 - } - - // 创建RemoteViews对象,用于更新小部件布局 - RemoteViews rv = new RemoteViews(context.getPackageName(), getLayoutId()); - rv.setImageViewResource(R.id.widget_bg_image, getBgResourceId(bgId)); // 设置背景图片 - intent.putExtra(Notes.INTENT_EXTRA_BACKGROUND_ID, bgId); // 添加背景ID到意图 - /** - * Generate the pending intent to start host for the widget - */ - PendingIntent pendingIntent = null; - if (privacyMode) { - // 如果处于隐私模式,显示隐私提示信息 - rv.setTextViewText(R.id.widget_text, - context.getString(R.string.widget_under_visit_mode)); - // 创建PendingIntent,点击时启动NotesListActivity - pendingIntent = PendingIntent.getActivity(context, appWidgetIds[i], new Intent( - context, NotesListActivity.class), PendingIntent.FLAG_UPDATE_CURRENT); - } else { - // 显示笔记摘要 - rv.setTextViewText(R.id.widget_text, snippet); - // 创建PendingIntent,点击时启动NoteEditActivity - pendingIntent = PendingIntent.getActivity(context, appWidgetIds[i], intent, - PendingIntent.FLAG_UPDATE_CURRENT); - } - - // 设置点击事件 - rv.setOnClickPendingIntent(R.id.widget_text, pendingIntent); - // 更新小部件 - appWidgetManager.updateAppWidget(appWidgetIds[i], rv); - } - } - } - - // 获取背景资源ID - // 定义一个受保护的抽象方法,用于获取背景资源的ID - // 该方法接受一个整数类型的参数bgId,表示背景资源的标识符 - // 返回值是一个整数,表示对应的背景资源ID - protected abstract int getBgResourceId(int bgId); - - // 获取布局ID - // 定义一个受保护的抽象方法 getLayoutId - // 该方法返回一个整数,通常用于标识布局资源的ID - protected abstract int getLayoutId(); - - // 获取小部件类型 - // 定义一个受保护的抽象方法,用于获取小部件的类型 - // 该方法没有具体的实现,需要在子类中实现 - // 返回类型为int,表示小部件的类型 - protected abstract int getWidgetType(); -} diff --git a/src/src/net/micode/notes/widget/NoteWidgetProvider_2x.java b/src/src/net/micode/notes/widget/NoteWidgetProvider_2x.java deleted file mode 100644 index 845f28b..0000000 --- a/src/src/net/micode/notes/widget/NoteWidgetProvider_2x.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * 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.widget; - -import android.appwidget.AppWidgetManager; -import android.content.Context; - -import net.micode.notes.R; -import net.micode.notes.data.Notes; -import net.micode.notes.tool.ResourceParser; - - -public class NoteWidgetProvider_2x extends NoteWidgetProvider { - // 重写onUpdate方法,当Widget更新时调用 - @Override - public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { - // 调用父类的update方法,执行通用的更新逻辑 - super.update(context, appWidgetManager, appWidgetIds); - } - - // 重写getLayoutId方法,返回当前Widget的布局资源ID - @Override - protected int getLayoutId() { - // 返回2x大小的Widget布局资源ID - return R.layout.widget_2x; - } - - // 重写getBgResourceId方法,根据背景ID返回对应的背景资源ID - @Override - protected int getBgResourceId(int bgId) { - // 使用ResourceParser获取2x大小Widget的背景资源ID - return ResourceParser.WidgetBgResources.getWidget2xBgResource(bgId); - } - - // 重写getWidgetType方法,返回当前Widget的类型 - @Override - protected int getWidgetType() { - // 返回2x大小的Widget类型 - return Notes.TYPE_WIDGET_2X; - } -} diff --git a/src/src/net/micode/notes/widget/NoteWidgetProvider_4x.java b/src/src/net/micode/notes/widget/NoteWidgetProvider_4x.java deleted file mode 100644 index 5fe1172..0000000 --- a/src/src/net/micode/notes/widget/NoteWidgetProvider_4x.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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.widget; - -import android.appwidget.AppWidgetManager; -import android.content.Context; - -import net.micode.notes.R; -import net.micode.notes.data.Notes; -import net.micode.notes.tool.ResourceParser; - - -public class NoteWidgetProvider_4x extends NoteWidgetProvider { - // 重写onUpdate方法,当Widget更新时调用 - @Override - public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { - // 调用父类的update方法,执行通用的更新逻辑 - super.update(context, appWidgetManager, appWidgetIds); - } - - // 获取当前Widget的布局资源ID - protected int getLayoutId() { - // 返回4x大小的Widget布局资源ID - return R.layout.widget_4x; - } - - // 重写getBgResourceId方法,根据背景ID获取对应的背景资源ID - @Override - protected int getBgResourceId(int bgId) { - // 使用ResourceParser获取4x大小Widget的背景资源ID - return ResourceParser.WidgetBgResources.getWidget4xBgResource(bgId); - } - - // 重写getWidgetType方法,获取当前Widget的类型 - @Override - protected int getWidgetType() { - // 返回4x大小的Widget类型 - return Notes.TYPE_WIDGET_4X; - } -}