diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb
index c39ccbe..9d9b693 100644
--- a/.idea/sonarlint/issuestore/index.pb
+++ b/.idea/sonarlint/issuestore/index.pb
@@ -1,106 +1,143 @@
-
->
-app/.gitignore,5\1\51e1c5d383dfaa35e0e7e5873a0a99355a86880f
-:
-
-.gitignore,a\5\a5cc2925ca8258af241be7e5b0381edf30266302
-~
-Napp/src/main/java/net/micode/notes/gtask/exception/ActionFailureException.java,5\f\5f6162ca79fcea353b280c5dc84973a9c37d2c74
-m
-=app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java,3\e\3e688be40dc69cfd1062f41d0fc27fe261a26710
-l
-<app/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java,0\2\0268ec648e2fc0139b30ed13396174b7392c1ae2
-h
-8app/src/main/java/net/micode/notes/ui/AlarmReceiver.java,5\8\5836a695995df8fadacfa6409fe8d21d88946842
-P
- app/src/main/AndroidManifest.xml,8\c\8c55c3ccc257e5907959013f99656e4c8ec3903e
-h
-8app/src/main/java/net/micode/notes/tool/BackupUtils.java,a\4\a446c87b1013132f8adaf83656b582028e8809af
-@
-app/build.gradle,f\4\f4a01d6a4fcb971362ec00a83903fd3902f52164
-<
-build.gradle,f\0\f07866736216be0ee2aba49e392191aeae700a35
-f
-6app/src/main/java/net/micode/notes/tool/DataUtils.java,3\2\32360bf24febc78f20db52498c7576b3d8650d56
-i
-9app/src/main/java/net/micode/notes/ui/DateTimePicker.java,6\c\6cbf8bd9aa98eff862b1dc067330ba66ba4493aa
-o
-?app/src/main/java/net/micode/notes/ui/DateTimePickerDialog.java,2\b\2bfc771e07e87c37d3a76a2c815bc8fb30649798
-g
-7app/src/main/java/net/micode/notes/ui/DropdownMenu.java,d\1\d1cc822fa9d783a8d4563bf6e139b7ae10de2fb1
-v
-Fapp/src/androidTest/java/net/micode/notes/ExampleInstrumentedTest.java,c\b\cb1a06a8717813ec7c510788635a593f17fbd0e5
-g
-7app/src/test/java/net/micode/notes/ExampleUnitTest.java,2\2\2206dceaaf1c3cd3bc394c5e3e2918227831f5e8
-m
-=app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java,f\9\f9f49497f95afd327db7a7a512612aa1089003d4
-A
-gradle.properties,2\a\2afbb999f001938c88fa43fc2ef52abf0f8213e4
-X
-(gradle/wrapper/gradle-wrapper.properties,f\b\fbe448ebfc3eb2d4e308f6b8b043666f5b57235e
-7
-gradlew,5\b\5bbfa66edb4db3c7c33c5181f43510990d3307f9
-;
-gradlew.bat,2\a\2a45a911a8f1836b0b6c5b758962572012d8f8c3
-s
-Capp/src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java,0\2\023468cfdd0b71d4098903b9070e364658e2fbcf
-p
-@app/src/main/java/net/micode/notes/gtask/remote/GTaskClient.java,4\5\4529b3a97b0f3b19b895aa06f23bed63ff38a312
-q
-Aapp/src/main/java/net/micode/notes/gtask/remote/GTaskManager.java,a\b\ab153b0256bc5f6c194e188cec0b8e327e347a90
-m
-=app/src/main/java/net/micode/notes/tool/GTaskStringUtils.java,c\4\c42ad3cd6e664963fa1849c760a57d417d500ee7
-u
-Eapp/src/main/java/net/micode/notes/gtask/remote/GTaskSyncService.java,f\0\f087b1ba1b9c91b7293fea0fb071eaed62a42137
-k
-;app/src/main/java/net/micode/notes/gtask/data/MetaData.java,c\1\c182d0c9c237ea8a46a92ccaae9bb5c751923a88
-
-Oapp/src/main/java/net/micode/notes/gtask/exception/NetworkFailureException.java,0\f\0f0f0549145d0e2bfb972ba1ed2e2c38bfd6d1b1
-g
-7app/src/main/java/net/micode/notes/gtask/data/Node.java,3\a\3aac5305cb73bfbdeb8078cd264d04323fa80e92
-b
-2app/src/main/java/net/micode/notes/model/Note.java,d\d\dd970bd8ce083850fca1d4d159647ccd110e57cb
-k
-;app/src/main/java/net/micode/notes/ui/NoteEditActivity.java,5\7\577f30d26378ec8a2bd2e4a43f3c79b3f04c402c
-g
-7app/src/main/java/net/micode/notes/ui/NoteEditText.java,5\0\503adcf2a0be1ecdb94a15efba4433b6589877b9
-g
-7app/src/main/java/net/micode/notes/ui/NoteItemData.java,0\8\08c35f02f11c35ae9ebf8db0a482054dfa1cf493
-b
-2app/src/main/java/net/micode/notes/data/Notes.java,a\7\a7641cfac724321d508c2a284223a711011a93f5
-p
-@app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java,1\e\1eb2363b523dbcae43d3c6e4790c64436af61b13
-l
-<app/src/main/java/net/micode/notes/ui/NotesListActivity.java,a\d\ad72331a1bed265bb9c0fe838faa74dbf69fce32
-k
-;app/src/main/java/net/micode/notes/ui/NotesListAdapter.java,2\8\283f16cc23da56ca65616082bc810304d3511d0a
-h
-8app/src/main/java/net/micode/notes/ui/NotesListItem.java,5\d\5dfe6902d8ec740690f88d644e74362c3be08fad
-r
-Bapp/src/main/java/net/micode/notes/ui/NotesPreferenceActivity.java,d\a\da57ce446af85bbd9aefee65e969869f0cff78b0
-j
-:app/src/main/java/net/micode/notes/data/NotesProvider.java,6\a\6a65e747031f27aef20597b4181148a9fbf963d5
-q
-Aapp/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java,5\8\58052a8597c5f01595e1c849728bcae66c27a1a6
-t
-Dapp/src/main/java/net/micode/notes/widget/NoteWidgetProvider_2x.java,1\7\175d8fa829f0a7ced6aa11970f112de6ad144628
-t
-Dapp/src/main/java/net/micode/notes/widget/NoteWidgetProvider_4x.java,2\b\2b687ab930681e3885683578d43df600a0a20982
-F
-app/proguard-rules.pro,9\e\9e08934d811afe28fbc77aaa3c0d747b94348db9
-k
-;app/src/main/java/net/micode/notes/tool/ResourceParser.java,c\6\c65f5dc8218ef1da6f6bfb5d1b14aea855a54d7f
-?
-settings.gradle,0\5\05efc8b1657769a27696d478ded1e95f38737233
-j
-:app/src/main/java/net/micode/notes/gtask/data/SqlData.java,9\3\934a4e2abf19d28a53f6aeb1dcd99248c44b6892
-j
-:app/src/main/java/net/micode/notes/gtask/data/SqlNote.java,f\1\f1226eeacd46c914d51f3d1a6d6f27377490d2a4
-g
-7app/src/main/java/net/micode/notes/gtask/data/Task.java,d\1\d187f1271655c3d91661a39fe6de395b6a9f290a
-k
-;app/src/main/java/net/micode/notes/gtask/data/TaskList.java,e\0\e094aec5c3e1b6f44539adff3114f5a1ad603ddc
-i
-9app/src/main/java/net/micode/notes/model/WorkingNote.java,8\7\876016634c6642b35109680ccac740dc8271b236
-d
+
+w
+G.idea/sonarlint/issuestore/f/b/fbe448ebfc3eb2d4e308f6b8b043666f5b57235e,5\2\52114fdaa426e9b83a3c5df4e11c4f0ebbcd814b
+�
+Q.idea/sonarlint/securityhotspotstore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302,3\0\30205a209c6ce77c4cfc19a09e6f57c588b7fb88
+�
+Q.idea/sonarlint/securityhotspotstore/a/4/a446c87b1013132f8adaf83656b582028e8809af,8\8\88f0307f3e34df46b303b903f89e17b0ba65871a
+�
+Q.idea/sonarlint/securityhotspotstore/a/b/ab153b0256bc5f6c194e188cec0b8e327e347a90,7\5\75ce1cae3474f98e6eb69cff56d7723c52135b16
+�
+Q.idea/sonarlint/securityhotspotstore/a/7/a7641cfac724321d508c2a284223a711011a93f5,3\c\3c57ca1f674d66c28f8a29d80dda94c90ddb5986
+�
+Q.idea/sonarlint/securityhotspotstore/a/d/ad72331a1bed265bb9c0fe838faa74dbf69fce32,3\c\3cf3c9fa2ebe32077392afa7dc47b1afdfee5625
+�
+Q.idea/sonarlint/securityhotspotstore/c/1/c182d0c9c237ea8a46a92ccaae9bb5c751923a88,a\9\a93b2b893fe4b13c52f790c725f069f49bd09d6b
+�
+Q.idea/sonarlint/securityhotspotstore/c/6/c65f5dc8218ef1da6f6bfb5d1b14aea855a54d7f,0\0\00efb74c8b9b2b2ec854d51e17db3a5de6b7a5a9
+�
+Q.idea/sonarlint/securityhotspotstore/c/4/c42ad3cd6e664963fa1849c760a57d417d500ee7,4\8\485848e6d1cccafd7d1fa19b9a6527501d1c3ee5
+�
+Q.idea/sonarlint/securityhotspotstore/c/b/cb1a06a8717813ec7c510788635a593f17fbd0e5,b\2\b264fe12862423c88be07440bbbc977182c0dbef
+�
+Q.idea/sonarlint/securityhotspotstore/d/1/d1cc822fa9d783a8d4563bf6e139b7ae10de2fb1,c\9\c9d96fd284b4def0f14b0dbffddf090d64e820bb
+�
+Q.idea/sonarlint/securityhotspotstore/d/1/d187f1271655c3d91661a39fe6de395b6a9f290a,0\6\06792f383cb0a56c88f5a0c57cb94ecc6879b693
+�
+Q.idea/sonarlint/securityhotspotstore/d/d/dd970bd8ce083850fca1d4d159647ccd110e57cb,2\1\21e2570e7742328baf120f6f82ae64076b5e901a
+�
+Q.idea/sonarlint/securityhotspotstore/d/a/da57ce446af85bbd9aefee65e969869f0cff78b0,c\c\cca5710f41f6ab358473f436554c70b157c76a00
+�
+Q.idea/sonarlint/securityhotspotstore/e/0/e094aec5c3e1b6f44539adff3114f5a1ad603ddc,6\8\689162fb3aed781a3857eadca2fb67690fc04891
+w
+G.idea/sonarlint/issuestore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302,e\d\ed67eb178d523a4b3f117dcbe0eda5196367ceec
+�
+Q.idea/sonarlint/securityhotspotstore/f/0/f07866736216be0ee2aba49e392191aeae700a35,2\5\25f6469773b9f3ebb994178c1114a60412389f58
+�
+Q.idea/sonarlint/securityhotspotstore/f/1/f1226eeacd46c914d51f3d1a6d6f27377490d2a4,2\6\269c12c6e185b5eec138deaf4e081548ab21a845
+�
+Q.idea/sonarlint/securityhotspotstore/f/0/f087b1ba1b9c91b7293fea0fb071eaed62a42137,3\1\318b6871093794acf416fc91f62e30a08720b9b5
+�
+Q.idea/sonarlint/securityhotspotstore/f/9/f9f49497f95afd327db7a7a512612aa1089003d4,f\3\f356b117ad1cc23b6ae3957c0903107e47c89efc
+�
+Q.idea/sonarlint/securityhotspotstore/1/e/1eb2363b523dbcae43d3c6e4790c64436af61b13,8\a\8a8e691ee152de38c321aabbf3f6bc381bc2dcc6
+�
+Q.idea/sonarlint/securityhotspotstore/f/4/f4a01d6a4fcb971362ec00a83903fd3902f52164,9\b\9b9af03329b517cdd460b1ee115f2bb0ec341883
+�
+Q.idea/sonarlint/securityhotspotstore/1/7/175d8fa829f0a7ced6aa11970f112de6ad144628,d\a\da18decabb6c0b6084c44558623b91fb432925a6
+w
+G.idea/sonarlint/issuestore/c/b/cb1a06a8717813ec7c510788635a593f17fbd0e5,d\7\d79667d6266e57bad37e9e687ee15fd3ccfc782c
+�
+Q.idea/sonarlint/securityhotspotstore/f/b/fbe448ebfc3eb2d4e308f6b8b043666f5b57235e,2\a\2a357145b04aeee0545d8bc616c6d89a975ff771
+�
+Q.idea/sonarlint/securityhotspotstore/2/8/283f16cc23da56ca65616082bc810304d3511d0a,8\4\847fb8517650935505cbc86f158aaae0a1c75258
+w
+G.idea/sonarlint/issuestore/0/2/0268ec648e2fc0139b30ed13396174b7392c1ae2,8\a\8ab9b1f96b506a5a5cb174f02fc62408216398ad
+�
+Q.idea/sonarlint/securityhotspotstore/2/2/2206dceaaf1c3cd3bc394c5e3e2918227831f5e8,f\4\f428aca5076bde88ded80e03643e8b873d173431
+�
+Q.idea/sonarlint/securityhotspotstore/0/2/023468cfdd0b71d4098903b9070e364658e2fbcf,8\2\822afb35bb7b02f71833027f5662034dd0fcc3d4
+�
+Q.idea/sonarlint/securityhotspotstore/2/a/2a45a911a8f1836b0b6c5b758962572012d8f8c3,1\0\1017d171139053a6ceaff055b7159ba14e80dc44
+�
+Q.idea/sonarlint/securityhotspotstore/0/5/05efc8b1657769a27696d478ded1e95f38737233,2\5\2534b7ffebad46793fc4d77da07aca83b23dd835
+�
+Q.idea/sonarlint/securityhotspotstore/2/a/2afbb999f001938c88fa43fc2ef52abf0f8213e4,a\8\a8a52112049d840217cfa586a3a399d9502f9b94
+�
+Q.idea/sonarlint/securityhotspotstore/2/b/2bfc771e07e87c37d3a76a2c815bc8fb30649798,5\0\50b3f2ed855d3633238a771c3ee2897c36b942ac
+�
+Q.idea/sonarlint/securityhotspotstore/0/2/0268ec648e2fc0139b30ed13396174b7392c1ae2,f\6\f64a667773afd069aada7e2f9ebb2e5cbf23461f
+�
+Q.idea/sonarlint/securityhotspotstore/0/f/0f0f0549145d0e2bfb972ba1ed2e2c38bfd6d1b1,5\6\562e664f9d59704b465c5334c179b2d55b3a2250
+�
+Q.idea/sonarlint/securityhotspotstore/2/b/2b687ab930681e3885683578d43df600a0a20982,f\2\f2d076c6ad2809e200bcececb583e53e00594728
+�
+Q.idea/sonarlint/securityhotspotstore/3/2/32360bf24febc78f20db52498c7576b3d8650d56,5\e\5e37502f37506acdd5f87b171e77f1bb3a5e15eb
+w
+G.idea/sonarlint/issuestore/0/5/05efc8b1657769a27696d478ded1e95f38737233,3\c\3c8c56407c35e5f5ebbd6c7250a79af8128a13a6
+�
+Q.idea/sonarlint/securityhotspotstore/3/e/3e688be40dc69cfd1062f41d0fc27fe261a26710,0\8\087e83a732c1e61cff05e21282814030a89217cb
+�
+Q.idea/sonarlint/securityhotspotstore/3/a/3aac5305cb73bfbdeb8078cd264d04323fa80e92,6\9\69e2be27857a4fc9ea4ee026d00fef865535346e
+�
+Q.idea/sonarlint/securityhotspotstore/0/8/08c35f02f11c35ae9ebf8db0a482054dfa1cf493,6\b\6b0a1bc15be7d7beba0228ddb7f4ea7ae8ed873b
+w
+G.idea/sonarlint/issuestore/0/f/0f0f0549145d0e2bfb972ba1ed2e2c38bfd6d1b1,a\e\ae9326ffb75a11914f00e64d664eca64db917b5a
+]
+-.idea/sonarlint/securityhotspotstore/index.pb,8\8\88a9255124c95bdc913197c120a8d560edc59c8e
+�
+Q.idea/sonarlint/securityhotspotstore/4/5/4529b3a97b0f3b19b895aa06f23bed63ff38a312,3\5\35a431b03c3f6010902c4047034ab63121441a31
+S
+#.idea/sonarlint/issuestore/index.pb,9\f\9fe84ebb15faf917b7def6236dba604453cc61e0
+�
+Q.idea/sonarlint/securityhotspotstore/5/0/503adcf2a0be1ecdb94a15efba4433b6589877b9,1\8\189da6af10dd84356b69645b80a659f149fca7d5
+�
+Q.idea/sonarlint/securityhotspotstore/5/7/577f30d26378ec8a2bd2e4a43f3c79b3f04c402c,4\b\4beb7a152b5563adb76dbad90d681eea8457c22d
+w
+G.idea/sonarlint/issuestore/2/2/2206dceaaf1c3cd3bc394c5e3e2918227831f5e8,a\e\ae4cddd6775c5a857e5512befb551e40da03e755
+�
+Q.idea/sonarlint/securityhotspotstore/5/1/51e1c5d383dfaa35e0e7e5873a0a99355a86880f,9\8\98b276e680f6f42cc2f1876ddde0c3e304d47f13
+w
+G.idea/sonarlint/issuestore/2/a/2afbb999f001938c88fa43fc2ef52abf0f8213e4,5\1\516e730a14e71f02fa73f3acd6dc7cea9a9fe002
+�
+Q.idea/sonarlint/securityhotspotstore/5/8/58052a8597c5f01595e1c849728bcae66c27a1a6,3\9\399dbcd65e120b45730e4c2147032a2c34b9d78c
+�
+Q.idea/sonarlint/securityhotspotstore/5/8/5836a695995df8fadacfa6409fe8d21d88946842,0\c\0c7cee9d3beba8740ba5532607af82758655e34e
+w
+G.idea/sonarlint/issuestore/2/a/2a45a911a8f1836b0b6c5b758962572012d8f8c3,9\a\9aed88f31eac276604c6355c1adcc0bce1f80fd6
+�
+Q.idea/sonarlint/securityhotspotstore/5/d/5dfe6902d8ec740690f88d644e74362c3be08fad,c\2\c284b0141178686da7da83261f5a301532ae66ee
+�
+Q.idea/sonarlint/securityhotspotstore/5/b/5bbfa66edb4db3c7c33c5181f43510990d3307f9,1\e\1e45613b6060de813dc92caeb118e08a2124bc35
+�
+Q.idea/sonarlint/securityhotspotstore/5/f/5f6162ca79fcea353b280c5dc84973a9c37d2c74,b\d\bd7d6a1d05cc4deaf0b353312877995ce53ac8d5
+�
+Q.idea/sonarlint/securityhotspotstore/6/a/6a65e747031f27aef20597b4181148a9fbf963d5,f\7\f73d5486a3e9d94d53a71ccb8796734eb31db47f
+�
+Q.idea/sonarlint/securityhotspotstore/6/c/6cbf8bd9aa98eff862b1dc067330ba66ba4493aa,5\3\53217992143a39b0f5a2069c1e7de404a66f3f0e
+�
+Q.idea/sonarlint/securityhotspotstore/8/7/876016634c6642b35109680ccac740dc8271b236,2\5\253fc2aafc5abbcf0ce4de6bfe5ac42b16aa05ac
+w
+G.idea/sonarlint/issuestore/5/1/51e1c5d383dfaa35e0e7e5873a0a99355a86880f,3\1\31c4cd19c36ab63325379c8a050c1688b5493ffd
+�
+Q.idea/sonarlint/securityhotspotstore/8/c/8c55c3ccc257e5907959013f99656e4c8ec3903e,1\f\1fe398aa86b382486ed27d0a69bf92f68bd5edaa
+w
+G.idea/sonarlint/issuestore/5/b/5bbfa66edb4db3c7c33c5181f43510990d3307f9,f\7\f7819ea138c33fec28e7e536cb2de34db38fc121
+�
+Q.idea/sonarlint/securityhotspotstore/9/a/9a3a19793537958b8b1b03a81985999e22705a2f,7\1\71865899a0dbe0a6d01c54eaae321fdb79886b33
+�
+Q.idea/sonarlint/securityhotspotstore/9/3/934a4e2abf19d28a53f6aeb1dcd99248c44b6892,0\b\0b62b6f7992deb71c9e8ebf98fee7d1940075e41
+w
+G.idea/sonarlint/issuestore/5/8/5836a695995df8fadacfa6409fe8d21d88946842,1\7\17d15be76bedbc6f57be9eb6a0e732345c853676
+w
+G.idea/sonarlint/issuestore/5/f/5f6162ca79fcea353b280c5dc84973a9c37d2c74,f\3\f3076fbf223a2888341d4e4dc93ed73e2646f717
+�
+Q.idea/sonarlint/securityhotspotstore/9/e/9e08934d811afe28fbc77aaa3c0d747b94348db9,8\3\8363137acd658af1ae43ae51d794bf293d58aa7c
+w
+G.idea/sonarlint/issuestore/f/0/f07866736216be0ee2aba49e392191aeae700a35,b\f\bfb9453d49af9bc40f5f7a5f034be3c7ef8fa6bf
+w
+G.idea/sonarlint/issuestore/f/4/f4a01d6a4fcb971362ec00a83903fd3902f52164,3\1\31073cf3a12b082ef2fe0f9403916a4db3811c89
+w
+G.idea/sonarlint/issuestore/9/e/9e08934d811afe28fbc77aaa3c0d747b94348db9,0\1\0105d5a774c76db833eb83cbebde54a8abef1599
+d
 4app/src/main/java/net/micode/notes/data/Contact.java,9\a\9a3a19793537958b8b1b03a81985999e22705a2f
\ No newline at end of file
diff --git a/.idea/sonarlint/securityhotspotstore/index.pb b/.idea/sonarlint/securityhotspotstore/index.pb
index 11a4733..1c21ffd 100644
--- a/.idea/sonarlint/securityhotspotstore/index.pb
+++ b/.idea/sonarlint/securityhotspotstore/index.pb
@@ -1,106 +1,143 @@
-
-l
-<app/src/main/java/net/micode/notes/ui/NotesListActivity.java,a\d\ad72331a1bed265bb9c0fe838faa74dbf69fce32
-k
-;app/src/main/java/net/micode/notes/ui/NotesListAdapter.java,2\8\283f16cc23da56ca65616082bc810304d3511d0a
-7
-gradlew,5\b\5bbfa66edb4db3c7c33c5181f43510990d3307f9
-g
-7app/src/main/java/net/micode/notes/ui/NoteEditText.java,5\0\503adcf2a0be1ecdb94a15efba4433b6589877b9
-g
-7app/src/main/java/net/micode/notes/ui/NoteItemData.java,0\8\08c35f02f11c35ae9ebf8db0a482054dfa1cf493
-m
-=app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java,f\9\f9f49497f95afd327db7a7a512612aa1089003d4
-k
-;app/src/main/java/net/micode/notes/ui/NoteEditActivity.java,5\7\577f30d26378ec8a2bd2e4a43f3c79b3f04c402c
-o
-?app/src/main/java/net/micode/notes/ui/DateTimePickerDialog.java,2\b\2bfc771e07e87c37d3a76a2c815bc8fb30649798
-g
-7app/src/main/java/net/micode/notes/ui/DropdownMenu.java,d\1\d1cc822fa9d783a8d4563bf6e139b7ae10de2fb1
-h
-8app/src/main/java/net/micode/notes/ui/AlarmReceiver.java,5\8\5836a695995df8fadacfa6409fe8d21d88946842
-i
-9app/src/main/java/net/micode/notes/ui/DateTimePicker.java,6\c\6cbf8bd9aa98eff862b1dc067330ba66ba4493aa
-m
-=app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java,3\e\3e688be40dc69cfd1062f41d0fc27fe261a26710
-l
-<app/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java,0\2\0268ec648e2fc0139b30ed13396174b7392c1ae2
-g
-7app/src/test/java/net/micode/notes/ExampleUnitTest.java,2\2\2206dceaaf1c3cd3bc394c5e3e2918227831f5e8
-v
-Fapp/src/androidTest/java/net/micode/notes/ExampleInstrumentedTest.java,c\b\cb1a06a8717813ec7c510788635a593f17fbd0e5
-~
-Napp/src/main/java/net/micode/notes/gtask/exception/ActionFailureException.java,5\f\5f6162ca79fcea353b280c5dc84973a9c37d2c74
-
-Oapp/src/main/java/net/micode/notes/gtask/exception/NetworkFailureException.java,0\f\0f0f0549145d0e2bfb972ba1ed2e2c38bfd6d1b1
-q
-Aapp/src/main/java/net/micode/notes/gtask/remote/GTaskManager.java,a\b\ab153b0256bc5f6c194e188cec0b8e327e347a90
-u
-Eapp/src/main/java/net/micode/notes/gtask/remote/GTaskSyncService.java,f\0\f087b1ba1b9c91b7293fea0fb071eaed62a42137
-s
-Capp/src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java,0\2\023468cfdd0b71d4098903b9070e364658e2fbcf
-p
-@app/src/main/java/net/micode/notes/gtask/remote/GTaskClient.java,4\5\4529b3a97b0f3b19b895aa06f23bed63ff38a312
-g
-7app/src/main/java/net/micode/notes/gtask/data/Task.java,d\1\d187f1271655c3d91661a39fe6de395b6a9f290a
-k
-;app/src/main/java/net/micode/notes/gtask/data/TaskList.java,e\0\e094aec5c3e1b6f44539adff3114f5a1ad603ddc
-j
-:app/src/main/java/net/micode/notes/gtask/data/SqlData.java,9\3\934a4e2abf19d28a53f6aeb1dcd99248c44b6892
-j
-:app/src/main/java/net/micode/notes/gtask/data/SqlNote.java,f\1\f1226eeacd46c914d51f3d1a6d6f27377490d2a4
-k
-;app/src/main/java/net/micode/notes/gtask/data/MetaData.java,c\1\c182d0c9c237ea8a46a92ccaae9bb5c751923a88
-g
-7app/src/main/java/net/micode/notes/gtask/data/Node.java,3\a\3aac5305cb73bfbdeb8078cd264d04323fa80e92
-t
-Dapp/src/main/java/net/micode/notes/widget/NoteWidgetProvider_2x.java,1\7\175d8fa829f0a7ced6aa11970f112de6ad144628
-t
-Dapp/src/main/java/net/micode/notes/widget/NoteWidgetProvider_4x.java,2\b\2b687ab930681e3885683578d43df600a0a20982
-i
-9app/src/main/java/net/micode/notes/model/WorkingNote.java,8\7\876016634c6642b35109680ccac740dc8271b236
-P
- app/src/main/AndroidManifest.xml,8\c\8c55c3ccc257e5907959013f99656e4c8ec3903e
-q
-Aapp/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java,5\8\58052a8597c5f01595e1c849728bcae66c27a1a6
-b
-2app/src/main/java/net/micode/notes/model/Note.java,d\d\dd970bd8ce083850fca1d4d159647ccd110e57cb
-@
-app/build.gradle,f\4\f4a01d6a4fcb971362ec00a83903fd3902f52164
-m
-=app/src/main/java/net/micode/notes/tool/GTaskStringUtils.java,c\4\c42ad3cd6e664963fa1849c760a57d417d500ee7
->
-app/.gitignore,5\1\51e1c5d383dfaa35e0e7e5873a0a99355a86880f
-k
-;app/src/main/java/net/micode/notes/tool/ResourceParser.java,c\6\c65f5dc8218ef1da6f6bfb5d1b14aea855a54d7f
-F
-app/proguard-rules.pro,9\e\9e08934d811afe28fbc77aaa3c0d747b94348db9
-h
-8app/src/main/java/net/micode/notes/tool/BackupUtils.java,a\4\a446c87b1013132f8adaf83656b582028e8809af
-X
-(gradle/wrapper/gradle-wrapper.properties,f\b\fbe448ebfc3eb2d4e308f6b8b043666f5b57235e
-f
-6app/src/main/java/net/micode/notes/tool/DataUtils.java,3\2\32360bf24febc78f20db52498c7576b3d8650d56
-p
-@app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java,1\e\1eb2363b523dbcae43d3c6e4790c64436af61b13
-A
-gradle.properties,2\a\2afbb999f001938c88fa43fc2ef52abf0f8213e4
-j
-:app/src/main/java/net/micode/notes/data/NotesProvider.java,6\a\6a65e747031f27aef20597b4181148a9fbf963d5
-d
-4app/src/main/java/net/micode/notes/data/Contact.java,9\a\9a3a19793537958b8b1b03a81985999e22705a2f
-<
-build.gradle,f\0\f07866736216be0ee2aba49e392191aeae700a35
-b
-2app/src/main/java/net/micode/notes/data/Notes.java,a\7\a7641cfac724321d508c2a284223a711011a93f5
-;
-gradlew.bat,2\a\2a45a911a8f1836b0b6c5b758962572012d8f8c3
-h
-8app/src/main/java/net/micode/notes/ui/NotesListItem.java,5\d\5dfe6902d8ec740690f88d644e74362c3be08fad
-?
-settings.gradle,0\5\05efc8b1657769a27696d478ded1e95f38737233
-r
-Bapp/src/main/java/net/micode/notes/ui/NotesPreferenceActivity.java,d\a\da57ce446af85bbd9aefee65e969869f0cff78b0
-:
-
-.gitignore,a\5\a5cc2925ca8258af241be7e5b0381edf30266302
\ No newline at end of file
+
+d
+4app/src/main/java/net/micode/notes/data/Contact.java,9\a\9a3a19793537958b8b1b03a81985999e22705a2f
+w
+G.idea/sonarlint/issuestore/f/b/fbe448ebfc3eb2d4e308f6b8b043666f5b57235e,5\2\52114fdaa426e9b83a3c5df4e11c4f0ebbcd814b
+�
+Q.idea/sonarlint/securityhotspotstore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302,3\0\30205a209c6ce77c4cfc19a09e6f57c588b7fb88
+�
+Q.idea/sonarlint/securityhotspotstore/a/4/a446c87b1013132f8adaf83656b582028e8809af,8\8\88f0307f3e34df46b303b903f89e17b0ba65871a
+�
+Q.idea/sonarlint/securityhotspotstore/a/b/ab153b0256bc5f6c194e188cec0b8e327e347a90,7\5\75ce1cae3474f98e6eb69cff56d7723c52135b16
+�
+Q.idea/sonarlint/securityhotspotstore/a/7/a7641cfac724321d508c2a284223a711011a93f5,3\c\3c57ca1f674d66c28f8a29d80dda94c90ddb5986
+�
+Q.idea/sonarlint/securityhotspotstore/a/d/ad72331a1bed265bb9c0fe838faa74dbf69fce32,3\c\3cf3c9fa2ebe32077392afa7dc47b1afdfee5625
+�
+Q.idea/sonarlint/securityhotspotstore/c/1/c182d0c9c237ea8a46a92ccaae9bb5c751923a88,a\9\a93b2b893fe4b13c52f790c725f069f49bd09d6b
+�
+Q.idea/sonarlint/securityhotspotstore/c/6/c65f5dc8218ef1da6f6bfb5d1b14aea855a54d7f,0\0\00efb74c8b9b2b2ec854d51e17db3a5de6b7a5a9
+�
+Q.idea/sonarlint/securityhotspotstore/c/4/c42ad3cd6e664963fa1849c760a57d417d500ee7,4\8\485848e6d1cccafd7d1fa19b9a6527501d1c3ee5
+�
+Q.idea/sonarlint/securityhotspotstore/c/b/cb1a06a8717813ec7c510788635a593f17fbd0e5,b\2\b264fe12862423c88be07440bbbc977182c0dbef
+�
+Q.idea/sonarlint/securityhotspotstore/d/1/d1cc822fa9d783a8d4563bf6e139b7ae10de2fb1,c\9\c9d96fd284b4def0f14b0dbffddf090d64e820bb
+�
+Q.idea/sonarlint/securityhotspotstore/d/1/d187f1271655c3d91661a39fe6de395b6a9f290a,0\6\06792f383cb0a56c88f5a0c57cb94ecc6879b693
+�
+Q.idea/sonarlint/securityhotspotstore/d/d/dd970bd8ce083850fca1d4d159647ccd110e57cb,2\1\21e2570e7742328baf120f6f82ae64076b5e901a
+�
+Q.idea/sonarlint/securityhotspotstore/d/a/da57ce446af85bbd9aefee65e969869f0cff78b0,c\c\cca5710f41f6ab358473f436554c70b157c76a00
+�
+Q.idea/sonarlint/securityhotspotstore/e/0/e094aec5c3e1b6f44539adff3114f5a1ad603ddc,6\8\689162fb3aed781a3857eadca2fb67690fc04891
+w
+G.idea/sonarlint/issuestore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302,e\d\ed67eb178d523a4b3f117dcbe0eda5196367ceec
+�
+Q.idea/sonarlint/securityhotspotstore/f/0/f07866736216be0ee2aba49e392191aeae700a35,2\5\25f6469773b9f3ebb994178c1114a60412389f58
+�
+Q.idea/sonarlint/securityhotspotstore/f/1/f1226eeacd46c914d51f3d1a6d6f27377490d2a4,2\6\269c12c6e185b5eec138deaf4e081548ab21a845
+�
+Q.idea/sonarlint/securityhotspotstore/f/0/f087b1ba1b9c91b7293fea0fb071eaed62a42137,3\1\318b6871093794acf416fc91f62e30a08720b9b5
+�
+Q.idea/sonarlint/securityhotspotstore/f/9/f9f49497f95afd327db7a7a512612aa1089003d4,f\3\f356b117ad1cc23b6ae3957c0903107e47c89efc
+�
+Q.idea/sonarlint/securityhotspotstore/1/e/1eb2363b523dbcae43d3c6e4790c64436af61b13,8\a\8a8e691ee152de38c321aabbf3f6bc381bc2dcc6
+�
+Q.idea/sonarlint/securityhotspotstore/f/4/f4a01d6a4fcb971362ec00a83903fd3902f52164,9\b\9b9af03329b517cdd460b1ee115f2bb0ec341883
+�
+Q.idea/sonarlint/securityhotspotstore/1/7/175d8fa829f0a7ced6aa11970f112de6ad144628,d\a\da18decabb6c0b6084c44558623b91fb432925a6
+w
+G.idea/sonarlint/issuestore/c/b/cb1a06a8717813ec7c510788635a593f17fbd0e5,d\7\d79667d6266e57bad37e9e687ee15fd3ccfc782c
+�
+Q.idea/sonarlint/securityhotspotstore/f/b/fbe448ebfc3eb2d4e308f6b8b043666f5b57235e,2\a\2a357145b04aeee0545d8bc616c6d89a975ff771
+�
+Q.idea/sonarlint/securityhotspotstore/2/8/283f16cc23da56ca65616082bc810304d3511d0a,8\4\847fb8517650935505cbc86f158aaae0a1c75258
+w
+G.idea/sonarlint/issuestore/0/2/0268ec648e2fc0139b30ed13396174b7392c1ae2,8\a\8ab9b1f96b506a5a5cb174f02fc62408216398ad
+�
+Q.idea/sonarlint/securityhotspotstore/2/2/2206dceaaf1c3cd3bc394c5e3e2918227831f5e8,f\4\f428aca5076bde88ded80e03643e8b873d173431
+�
+Q.idea/sonarlint/securityhotspotstore/0/2/023468cfdd0b71d4098903b9070e364658e2fbcf,8\2\822afb35bb7b02f71833027f5662034dd0fcc3d4
+�
+Q.idea/sonarlint/securityhotspotstore/2/a/2a45a911a8f1836b0b6c5b758962572012d8f8c3,1\0\1017d171139053a6ceaff055b7159ba14e80dc44
+�
+Q.idea/sonarlint/securityhotspotstore/0/5/05efc8b1657769a27696d478ded1e95f38737233,2\5\2534b7ffebad46793fc4d77da07aca83b23dd835
+�
+Q.idea/sonarlint/securityhotspotstore/2/a/2afbb999f001938c88fa43fc2ef52abf0f8213e4,a\8\a8a52112049d840217cfa586a3a399d9502f9b94
+�
+Q.idea/sonarlint/securityhotspotstore/2/b/2bfc771e07e87c37d3a76a2c815bc8fb30649798,5\0\50b3f2ed855d3633238a771c3ee2897c36b942ac
+�
+Q.idea/sonarlint/securityhotspotstore/0/2/0268ec648e2fc0139b30ed13396174b7392c1ae2,f\6\f64a667773afd069aada7e2f9ebb2e5cbf23461f
+�
+Q.idea/sonarlint/securityhotspotstore/0/f/0f0f0549145d0e2bfb972ba1ed2e2c38bfd6d1b1,5\6\562e664f9d59704b465c5334c179b2d55b3a2250
+�
+Q.idea/sonarlint/securityhotspotstore/2/b/2b687ab930681e3885683578d43df600a0a20982,f\2\f2d076c6ad2809e200bcececb583e53e00594728
+�
+Q.idea/sonarlint/securityhotspotstore/3/2/32360bf24febc78f20db52498c7576b3d8650d56,5\e\5e37502f37506acdd5f87b171e77f1bb3a5e15eb
+w
+G.idea/sonarlint/issuestore/0/5/05efc8b1657769a27696d478ded1e95f38737233,3\c\3c8c56407c35e5f5ebbd6c7250a79af8128a13a6
+�
+Q.idea/sonarlint/securityhotspotstore/3/e/3e688be40dc69cfd1062f41d0fc27fe261a26710,0\8\087e83a732c1e61cff05e21282814030a89217cb
+�
+Q.idea/sonarlint/securityhotspotstore/3/a/3aac5305cb73bfbdeb8078cd264d04323fa80e92,6\9\69e2be27857a4fc9ea4ee026d00fef865535346e
+�
+Q.idea/sonarlint/securityhotspotstore/0/8/08c35f02f11c35ae9ebf8db0a482054dfa1cf493,6\b\6b0a1bc15be7d7beba0228ddb7f4ea7ae8ed873b
+w
+G.idea/sonarlint/issuestore/0/f/0f0f0549145d0e2bfb972ba1ed2e2c38bfd6d1b1,a\e\ae9326ffb75a11914f00e64d664eca64db917b5a
+]
+-.idea/sonarlint/securityhotspotstore/index.pb,8\8\88a9255124c95bdc913197c120a8d560edc59c8e
+�
+Q.idea/sonarlint/securityhotspotstore/4/5/4529b3a97b0f3b19b895aa06f23bed63ff38a312,3\5\35a431b03c3f6010902c4047034ab63121441a31
+S
+#.idea/sonarlint/issuestore/index.pb,9\f\9fe84ebb15faf917b7def6236dba604453cc61e0
+�
+Q.idea/sonarlint/securityhotspotstore/5/0/503adcf2a0be1ecdb94a15efba4433b6589877b9,1\8\189da6af10dd84356b69645b80a659f149fca7d5
+�
+Q.idea/sonarlint/securityhotspotstore/5/7/577f30d26378ec8a2bd2e4a43f3c79b3f04c402c,4\b\4beb7a152b5563adb76dbad90d681eea8457c22d
+w
+G.idea/sonarlint/issuestore/2/2/2206dceaaf1c3cd3bc394c5e3e2918227831f5e8,a\e\ae4cddd6775c5a857e5512befb551e40da03e755
+�
+Q.idea/sonarlint/securityhotspotstore/5/1/51e1c5d383dfaa35e0e7e5873a0a99355a86880f,9\8\98b276e680f6f42cc2f1876ddde0c3e304d47f13
+w
+G.idea/sonarlint/issuestore/2/a/2afbb999f001938c88fa43fc2ef52abf0f8213e4,5\1\516e730a14e71f02fa73f3acd6dc7cea9a9fe002
+�
+Q.idea/sonarlint/securityhotspotstore/5/8/58052a8597c5f01595e1c849728bcae66c27a1a6,3\9\399dbcd65e120b45730e4c2147032a2c34b9d78c
+�
+Q.idea/sonarlint/securityhotspotstore/5/8/5836a695995df8fadacfa6409fe8d21d88946842,0\c\0c7cee9d3beba8740ba5532607af82758655e34e
+w
+G.idea/sonarlint/issuestore/2/a/2a45a911a8f1836b0b6c5b758962572012d8f8c3,9\a\9aed88f31eac276604c6355c1adcc0bce1f80fd6
+�
+Q.idea/sonarlint/securityhotspotstore/5/d/5dfe6902d8ec740690f88d644e74362c3be08fad,c\2\c284b0141178686da7da83261f5a301532ae66ee
+�
+Q.idea/sonarlint/securityhotspotstore/5/b/5bbfa66edb4db3c7c33c5181f43510990d3307f9,1\e\1e45613b6060de813dc92caeb118e08a2124bc35
+�
+Q.idea/sonarlint/securityhotspotstore/5/f/5f6162ca79fcea353b280c5dc84973a9c37d2c74,b\d\bd7d6a1d05cc4deaf0b353312877995ce53ac8d5
+�
+Q.idea/sonarlint/securityhotspotstore/6/a/6a65e747031f27aef20597b4181148a9fbf963d5,f\7\f73d5486a3e9d94d53a71ccb8796734eb31db47f
+�
+Q.idea/sonarlint/securityhotspotstore/6/c/6cbf8bd9aa98eff862b1dc067330ba66ba4493aa,5\3\53217992143a39b0f5a2069c1e7de404a66f3f0e
+�
+Q.idea/sonarlint/securityhotspotstore/8/7/876016634c6642b35109680ccac740dc8271b236,2\5\253fc2aafc5abbcf0ce4de6bfe5ac42b16aa05ac
+w
+G.idea/sonarlint/issuestore/5/1/51e1c5d383dfaa35e0e7e5873a0a99355a86880f,3\1\31c4cd19c36ab63325379c8a050c1688b5493ffd
+�
+Q.idea/sonarlint/securityhotspotstore/8/c/8c55c3ccc257e5907959013f99656e4c8ec3903e,1\f\1fe398aa86b382486ed27d0a69bf92f68bd5edaa
+w
+G.idea/sonarlint/issuestore/5/b/5bbfa66edb4db3c7c33c5181f43510990d3307f9,f\7\f7819ea138c33fec28e7e536cb2de34db38fc121
+�
+Q.idea/sonarlint/securityhotspotstore/9/a/9a3a19793537958b8b1b03a81985999e22705a2f,7\1\71865899a0dbe0a6d01c54eaae321fdb79886b33
+�
+Q.idea/sonarlint/securityhotspotstore/9/3/934a4e2abf19d28a53f6aeb1dcd99248c44b6892,0\b\0b62b6f7992deb71c9e8ebf98fee7d1940075e41
+w
+G.idea/sonarlint/issuestore/5/8/5836a695995df8fadacfa6409fe8d21d88946842,1\7\17d15be76bedbc6f57be9eb6a0e732345c853676
+w
+G.idea/sonarlint/issuestore/5/f/5f6162ca79fcea353b280c5dc84973a9c37d2c74,f\3\f3076fbf223a2888341d4e4dc93ed73e2646f717
+�
+Q.idea/sonarlint/securityhotspotstore/9/e/9e08934d811afe28fbc77aaa3c0d747b94348db9,8\3\8363137acd658af1ae43ae51d794bf293d58aa7c
+w
+G.idea/sonarlint/issuestore/f/0/f07866736216be0ee2aba49e392191aeae700a35,b\f\bfb9453d49af9bc40f5f7a5f034be3c7ef8fa6bf
+w
+G.idea/sonarlint/issuestore/f/4/f4a01d6a4fcb971362ec00a83903fd3902f52164,3\1\31073cf3a12b082ef2fe0f9403916a4db3811c89
+w
+G.idea/sonarlint/issuestore/9/e/9e08934d811afe28fbc77aaa3c0d747b94348db9,0\1\0105d5a774c76db833eb83cbebde54a8abef1599
\ No newline at end of file
diff --git a/app/src/main/java/net/micode/notes/data/Contact.java b/app/src/main/java/net/micode/notes/data/Contact.java
index d97ac5d..bbf69fb 100644
--- a/app/src/main/java/net/micode/notes/data/Contact.java
+++ b/app/src/main/java/net/micode/notes/data/Contact.java
@@ -29,6 +29,8 @@ public class Contact {
     private static HashMap<String, String> sContactCache;
     private static final String TAG = "Contact";
 
+
+    // CALLER_ID_SELECTION 是一个包含查询条件的常量字符串，用于过滤出与给定电话号码匹配的联系人。
     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 "
@@ -37,16 +39,22 @@ public class Contact {
             + " WHERE min_match = '+')";
 
     public static String getContact(Context context, String phoneNumber) {
+        //getContact() 方法接收一个上下文对象和一个电话号码作为参数，并返回与电话号码匹配的联系人姓名。
         if(sContactCache == null) {
             sContactCache = new HashMap<String, String>();
         }
 
         if(sContactCache.containsKey(phoneNumber)) {
+            //如果缓存中不存在该电话号码，则构建一个查询语句 selection，
+            // 用于在联系人数据表中搜索匹配的联系人信息。
             return sContactCache.get(phoneNumber);
         }
 
         String selection = CALLER_ID_SELECTION.replace("+",
                 PhoneNumberUtils.toCallerIDMinMatch(phoneNumber));
+        //执行查询，传入查询所需的参数：查询的URI（Data.CONTENT_URI）、
+        // 要返回的列（Phone.DISPLAY_NAME）、查询条件（selection）、
+        // 查询条件参数（phoneNumber）以及排序参数（null）。
         Cursor cursor = context.getContentResolver().query(
                 Data.CONTENT_URI,
                 new String [] { Phone.DISPLAY_NAME },
@@ -55,6 +63,9 @@ public class Contact {
                 null);
 
         if (cursor != null && cursor.moveToFirst()) {
+            //如果查询返回一个非空的 Cursor 对象且移动到了第一个结果，
+            // 则从 Cursor 中获取联系人姓名并将其存入缓存中。
+            // 最后关闭 Cursor 并返回联系人姓名。
             try {
                 String name = cursor.getString(0);
                 sContactCache.put(phoneNumber, name);
diff --git a/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java b/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java
index ffe5d57..0f7b463 100644
--- a/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java
+++ b/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java
@@ -211,6 +211,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
     }
 
     public void createNoteTable(SQLiteDatabase db) {
+        //创建笔记表
         db.execSQL(CREATE_NOTE_TABLE_SQL);
         reCreateNoteTableTriggers(db);
         createSystemFolder(db);
@@ -271,6 +272,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
     }
 
     public void createDataTable(SQLiteDatabase db) {
+        //创建数据表
         db.execSQL(CREATE_DATA_TABLE_SQL);
         reCreateDataTableTriggers(db);
         db.execSQL(CREATE_DATA_NOTE_ID_INDEX_SQL);
