diff --git a/doc/1_小米便签代码质量分析报告 - 吴子吉-方群天.docx b/doc/1_小米便签代码质量分析报告 - 吴子吉-方群天.docx
deleted file mode 100644
index c367c6c..0000000
Binary files a/doc/1_小米便签代码质量分析报告 - 吴子吉-方群天.docx and /dev/null differ
diff --git a/src/.gradle/5.4.1/executionHistory/executionHistory.bin b/src/.gradle/5.4.1/executionHistory/executionHistory.bin
index 52511c4..73d93dd 100644
Binary files a/src/.gradle/5.4.1/executionHistory/executionHistory.bin and b/src/.gradle/5.4.1/executionHistory/executionHistory.bin differ
diff --git a/src/.gradle/5.4.1/executionHistory/executionHistory.lock b/src/.gradle/5.4.1/executionHistory/executionHistory.lock
index 106d136..0a249ac 100644
Binary files a/src/.gradle/5.4.1/executionHistory/executionHistory.lock and b/src/.gradle/5.4.1/executionHistory/executionHistory.lock differ
diff --git a/src/.gradle/5.4.1/fileHashes/fileHashes.bin b/src/.gradle/5.4.1/fileHashes/fileHashes.bin
index 07d06e7..b6625f2 100644
Binary files a/src/.gradle/5.4.1/fileHashes/fileHashes.bin and b/src/.gradle/5.4.1/fileHashes/fileHashes.bin differ
diff --git a/src/.gradle/5.4.1/fileHashes/fileHashes.lock b/src/.gradle/5.4.1/fileHashes/fileHashes.lock
index fd0ca7d..fa80030 100644
Binary files a/src/.gradle/5.4.1/fileHashes/fileHashes.lock and b/src/.gradle/5.4.1/fileHashes/fileHashes.lock differ
diff --git a/src/.gradle/5.4.1/fileHashes/resourceHashesCache.bin b/src/.gradle/5.4.1/fileHashes/resourceHashesCache.bin
index d1c01fc..3b40360 100644
Binary files a/src/.gradle/5.4.1/fileHashes/resourceHashesCache.bin and b/src/.gradle/5.4.1/fileHashes/resourceHashesCache.bin differ
diff --git a/src/.gradle/5.4.1/javaCompile/classAnalysis.bin b/src/.gradle/5.4.1/javaCompile/classAnalysis.bin
new file mode 100644
index 0000000..f005418
Binary files /dev/null and b/src/.gradle/5.4.1/javaCompile/classAnalysis.bin differ
diff --git a/src/.gradle/5.4.1/javaCompile/javaCompile.lock b/src/.gradle/5.4.1/javaCompile/javaCompile.lock
index ec44a8a..99ff969 100644
Binary files a/src/.gradle/5.4.1/javaCompile/javaCompile.lock and b/src/.gradle/5.4.1/javaCompile/javaCompile.lock differ
diff --git a/src/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/src/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 215b698..50764ea 100644
Binary files a/src/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/src/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/src/.gradle/buildOutputCleanup/outputFiles.bin b/src/.gradle/buildOutputCleanup/outputFiles.bin
index 1baf61a..bb41783 100644
Binary files a/src/.gradle/buildOutputCleanup/outputFiles.bin and b/src/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/src/.idea/caches/build_file_checksums.ser b/src/.idea/caches/build_file_checksums.ser
index b56af0d..aebe61d 100644
Binary files a/src/.idea/caches/build_file_checksums.ser and b/src/.idea/caches/build_file_checksums.ser differ
diff --git a/src/.idea/caches/gradle_models.ser b/src/.idea/caches/gradle_models.ser
index a22af00..7e452f8 100644
Binary files a/src/.idea/caches/gradle_models.ser and b/src/.idea/caches/gradle_models.ser differ
diff --git a/src/.idea/libraries/Gradle__org_apache_http_legacy_android_23.xml b/src/.idea/libraries/Gradle__org_apache_http_legacy_android_23.xml
new file mode 100644
index 0000000..a243f51
--- /dev/null
+++ b/src/.idea/libraries/Gradle__org_apache_http_legacy_android_23.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/0/1/0141ed096ee7cdbb52dc6a8b0e8eae49847eb64a b/src/.idea/sonarlint/issuestore/0/1/0141ed096ee7cdbb52dc6a8b0e8eae49847eb64a
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/0/2/023468cfdd0b71d4098903b9070e364658e2fbcf b/src/.idea/sonarlint/issuestore/0/2/023468cfdd0b71d4098903b9070e364658e2fbcf
new file mode 100644
index 0000000..36e517d
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/0/2/023468cfdd0b71d4098903b9070e364658e2fbcf
@@ -0,0 +1,8 @@
+
+gsquid:CommentedOutCodeLine"").(
+Qsquid:S1118":Add a private constructor to hide the implicit public one.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/1/e/1eb2363b523dbcae43d3c6e4790c64436af61b13 b/src/.idea/sonarlint/issuestore/1/e/1eb2363b523dbcae43d3c6e4790c64436af61b13
index c69800b..7b917f0 100644
--- a/src/.idea/sonarlint/issuestore/1/e/1eb2363b523dbcae43d3c6e4790c64436af61b13
+++ b/src/.idea/sonarlint/issuestore/1/e/1eb2363b523dbcae43d3c6e4790c64436af61b13
@@ -1,13 +1,13 @@
-fsquid:S1192"RDefine a constant instead of duplicating this literal " AFTER DELETE ON " 3 times.(B
-usquid:S1192"[Define a constant instead of duplicating this literal " TEXT NOT NULL DEFAULT ''," 5 times.(
-7squid:S1214""Move constants to a class or enum.(
-_squid:S1192"JDefine a constant instead of duplicating this literal " UPDATE " 8 times.(
-bsquid:S1192"HDefine a constant instead of duplicating this literal " SET " 8 times.(˓
-[squid:S1192"FDefine a constant instead of duplicating this literal "=new." 6 times.(랰
-^squid:S1192"IDefine a constant instead of duplicating this literal " WHERE " 8 times.(랰
-asquid:S1192"GDefine a constant instead of duplicating this literal " BEGIN" 6 times.(
-ssquid:S1192"^Define a constant instead of duplicating this literal " INTEGER NOT NULL DEFAULT 0," 11 times.(
-`squid:S1192"FDefine a constant instead of duplicating this literal "=old." 6 times.(
-squid:S1192"yDefine a constant instead of duplicating this literal " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," 4 times.(
-bsquid:S1192"HDefine a constant instead of duplicating this literal " BEGIN " 4 times.(
\ No newline at end of file
+`squid:S1192e"IDefine a constant instead of duplicating this literal " WHERE " 8 times.(랰
+]squid:S1192e"FDefine a constant instead of duplicating this literal "=new." 6 times.(랰
+asquid:S1192c"JDefine a constant instead of duplicating this literal " UPDATE " 8 times.(
+isquid:S1192"RDefine a constant instead of duplicating this literal " AFTER DELETE ON " 3 times.(B
+dsquid:S1192b"HDefine a constant instead of duplicating this literal " BEGIN " 4 times.(
+usquid:S11927"^Define a constant instead of duplicating this literal " INTEGER NOT NULL DEFAULT 0," 11 times.(
+9squid:S1214)""Move constants to a class or enum.(
+squid:S1192:"yDefine a constant instead of duplicating this literal " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," 4 times.(
+dsquid:S1192"GDefine a constant instead of duplicating this literal " BEGIN" 6 times.(
+dsquid:S1192d"HDefine a constant instead of duplicating this literal " SET " 8 times.(˓
+wsquid:S1192>"[Define a constant instead of duplicating this literal " TEXT NOT NULL DEFAULT ''," 5 times.(
+bsquid:S1192r"FDefine a constant instead of duplicating this literal "=old." 6 times.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/1/f/1f37b3287e9e1f293b5edaa624e3963f9b0959e3 b/src/.idea/sonarlint/issuestore/1/f/1f37b3287e9e1f293b5edaa624e3963f9b0959e3
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/2/3/23d845ae48d9f7933da477888d2ec1ecab7d087d b/src/.idea/sonarlint/issuestore/2/3/23d845ae48d9f7933da477888d2ec1ecab7d087d
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/2/8/283f16cc23da56ca65616082bc810304d3511d0a b/src/.idea/sonarlint/issuestore/2/8/283f16cc23da56ca65616082bc810304d3511d0a
new file mode 100644
index 0000000..31f35d3
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/2/8/283f16cc23da56ca65616082bc810304d3511d0a
@@ -0,0 +1,17 @@
+
+Ksquid:S1066e"/Merge this if statement with the enclosing one.(ڧ
+Dsquid:S1125o"(Remove the literal "true" boolean value.(ɯ
+psquid:S2293}"YReplace the type specification in this constructor call with the diamond operator ("<>").(Ȫ
+Fsquid:S5411o"*Use the primitive boolean expression here.(ɯ
+"squid:ClassVariableVisibilityCheck+"TMake widgetId a static final constant or non-public and provide accessors if needed.(ǎ
+Ksquid:S2864n"4Iterate over the "entrySet" instead of the "keySet".(
+Dsquid:S1125"(Remove the literal "true" boolean value.(ɯ
+Esquid:S1125"(Remove the literal "true" boolean value.(
+Ksquid:EmptyStatementUsageCheck-"Remove this empty statement.(
+Ksquid:S2864~"4Iterate over the "entrySet" instead of the "keySet".(
+"squid:ClassVariableVisibilityCheck,"VMake widgetType a static final constant or non-public and provide accessors if needed.(漬
+Fsquid:S5411"*Use the primitive boolean expression here.(ɯ
+Gsquid:S5411"*Use the primitive boolean expression here.(
+usquid:S22931"YReplace the type specification in this constructor call with the diamond operator ("<>").(ə
+Csquid:S1168"+Return an empty collection instead of null.(
+psquid:S2293m"YReplace the type specification in this constructor call with the diamond operator ("<>").(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/2/a/2a45a911a8f1836b0b6c5b758962572012d8f8c3 b/src/.idea/sonarlint/issuestore/2/a/2a45a911a8f1836b0b6c5b758962572012d8f8c3
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/2/b/2bfc771e07e87c37d3a76a2c815bc8fb30649798 b/src/.idea/sonarlint/issuestore/2/b/2bfc771e07e87c37d3a76a2c815bc8fb30649798
new file mode 100644
index 0000000..770f357
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/2/b/2bfc771e07e87c37d3a76a2c815bc8fb30649798
@@ -0,0 +1,4 @@
+
+}squid:UselessImportCheck"TRemove this unnecessary import: same package classes are always implicitly imported.(
+ksquid:S00100("NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+ysquid:S3923P"]This conditional operation returns the same value whether the condition is "true" or "false".(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/2/f/2fc83eb034b5fa51bad850007b7397e9d8725925 b/src/.idea/sonarlint/issuestore/2/f/2fc83eb034b5fa51bad850007b7397e9d8725925
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/3/1/3187a48b72709826e298c008a0076f24e6739bb9 b/src/.idea/sonarlint/issuestore/3/1/3187a48b72709826e298c008a0076f24e6739bb9
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/3/2/32360bf24febc78f20db52498c7576b3d8650d56 b/src/.idea/sonarlint/issuestore/3/2/32360bf24febc78f20db52498c7576b3d8650d56
new file mode 100644
index 0000000..b45a5c9
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/3/2/32360bf24febc78f20db52498c7576b3d8650d56
@@ -0,0 +1,18 @@
+
+Ksquid:S1066~"/Merge this if statement with the enclosing one.(䲜
+\squid:S2147l"ECombine this catch with the one at line 106, which has the same body.(暩
+dsquid:S1192x"HDefine a constant instead of duplicating this literal "=? AND " 4 times.(
+csquid:S1192D"GDefine a constant instead of duplicating this literal "%s: %s" 4 times.(
+lsquid:S3252"OUse static access with "net.micode.notes.data.Notes$DataColumns" for "NOTE_ID".(
+Vsquid:S1118&":Add a private constructor to hide the implicit public one.(
+usquid:S22932"YReplace the type specification in this constructor call with the diamond operator ("<>").(л
+squid:S1319("kThe type of the "ids" object should be an interface such as "Set" rather than the implementation "HashSet".(
+squid:S1319"mThe return type of this method should be an interface such as "Set" rather than the implementation "HashSet".(
+squid:S1319S"kThe type of the "ids" object should be an interface such as "Set" rather than the implementation "HashSet".(
+nsquid:S3252"QUse static access with "net.micode.notes.data.Notes$DataColumns" for "MIME_TYPE".(
+nsquid:S3252"QUse static access with "net.micode.notes.data.Notes$DataColumns" for "MIME_TYPE".(
+usquid:S2293Z"YReplace the type specification in this constructor call with the diamond operator ("<>").(л
+vsquid:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(ª
+Usquid:S1155-">Use isEmpty() to check whether the collection is empty or not.(
+[squid:S2147E"DCombine this catch with the one at line 67, which has the same body.(暩
+gsquid:S3252"OUse static access with "net.micode.notes.data.Notes$DataColumns" for "NOTE_ID".(ʹ
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/3/3/332c6f3d75926e4702a2bec3dcc4f101b096d5a2 b/src/.idea/sonarlint/issuestore/3/3/332c6f3d75926e4702a2bec3dcc4f101b096d5a2
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/3/5/35a9534af99716b62a1b2f926cda2640ed66437c b/src/.idea/sonarlint/issuestore/3/5/35a9534af99716b62a1b2f926cda2640ed66437c
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/3/9/39e32a57f516329b1ca2e070da4867a089f39253 b/src/.idea/sonarlint/issuestore/3/9/39e32a57f516329b1ca2e070da4867a089f39253
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/3/a/3aac5305cb73bfbdeb8078cd264d04323fa80e92 b/src/.idea/sonarlint/issuestore/3/a/3aac5305cb73bfbdeb8078cd264d04323fa80e92
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/3/d/3d0874cd378575c7e6e0973b184f167b3941748f b/src/.idea/sonarlint/issuestore/3/d/3d0874cd378575c7e6e0973b184f167b3941748f
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/3/e/3e688be40dc69cfd1062f41d0fc27fe261a26710 b/src/.idea/sonarlint/issuestore/3/e/3e688be40dc69cfd1062f41d0fc27fe261a26710
index 0b9f7f7..9492e39 100644
--- a/src/.idea/sonarlint/issuestore/3/e/3e688be40dc69cfd1062f41d0fc27fe261a26710
+++ b/src/.idea/sonarlint/issuestore/3/e/3e688be40dc69cfd1062f41d0fc27fe261a26710
@@ -1,14 +1,14 @@
-Lsquid:S1135"2Complete the task associated to this TODO comment.(̐
-=squid:S1148"#Use a logger to log this exception.(ԅ
-_squid:S2147"ECombine this catch with the one at line 117, which has the same body.(
-=squid:S1148"#Use a logger to log this exception.(ԅ
-=squid:S1148"#Use a logger to log this exception.(ԅ
-Lsquid:S1135"2Complete the task associated to this TODO comment.(̐
-Lsquid:S1135"2Complete the task associated to this TODO comment.(̐
-=squid:S1148"#Use a logger to log this exception.(ԅ
-esquid:S1301"KReplace this "switch" statement by "if" statements to increase readability.(۫
-Zsquid:S2147"ECombine this catch with the one at line 117, which has the same body.(ﭣ
-Zsquid:S2147"ECombine this catch with the one at line 117, which has the same body.(
-Lsquid:S1135"2Complete the task associated to this TODO comment.(̐
-=squid:S1148"#Use a logger to log this exception.(ԅ
\ No newline at end of file
+?squid:S1148Q"#Use a logger to log this exception.(ԅ
+@squid:S1148"#Use a logger to log this exception.(ԅ
+?squid:S1148w"#Use a logger to log this exception.(ԅ
+asquid:S2147x"ECombine this catch with the one at line 117, which has the same body.(
+?squid:S1148z"#Use a logger to log this exception.(ԅ
+\squid:S2147~"ECombine this catch with the one at line 117, which has the same body.(ﭣ
+Nsquid:S1135|"2Complete the task associated to this TODO comment.(̐
+Nsquid:S1135v"2Complete the task associated to this TODO comment.(̐
+Nsquid:S1135"2Complete the task associated to this TODO comment.(̐
+?squid:S1148}"#Use a logger to log this exception.(ԅ
+\squid:S2147{"ECombine this catch with the one at line 117, which has the same body.(
+Nsquid:S1135y"2Complete the task associated to this TODO comment.(̐
+hsquid:S1301"KReplace this "switch" statement by "if" statements to increase readability.(۫
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/3/e/3ebb3135b0165eef74d1bcb669cc218bd59ce7b0 b/src/.idea/sonarlint/issuestore/3/e/3ebb3135b0165eef74d1bcb669cc218bd59ce7b0
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/3/f/3f52e8daf4bdfa7bee6741acd1bf90ffe7709f9a b/src/.idea/sonarlint/issuestore/3/f/3f52e8daf4bdfa7bee6741acd1bf90ffe7709f9a
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/3/f/3fa1ed8f1b4e1b9c233b6023870998c667d79f5c b/src/.idea/sonarlint/issuestore/3/f/3fa1ed8f1b4e1b9c233b6023870998c667d79f5c
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/3/f/3fb851c1aba9738e4f3a9ffcd2f412cb00104955 b/src/.idea/sonarlint/issuestore/3/f/3fb851c1aba9738e4f3a9ffcd2f412cb00104955
new file mode 100644
index 0000000..c06e320
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/3/f/3fb851c1aba9738e4f3a9ffcd2f412cb00104955
@@ -0,0 +1,13 @@
+
+hsquid:S1192"RDefine a constant instead of duplicating this literal " AFTER DELETE ON " 3 times.(B
+usquid:S11920"^Define a constant instead of duplicating this literal " INTEGER NOT NULL DEFAULT 0," 11 times.(
+dsquid:S1192]"HDefine a constant instead of duplicating this literal " SET " 8 times.(˓
+`squid:S1192^"IDefine a constant instead of duplicating this literal " WHERE " 8 times.(랰
+dsquid:S1192["HDefine a constant instead of duplicating this literal " BEGIN " 4 times.(
+]squid:S1192^"FDefine a constant instead of duplicating this literal "=new." 6 times.(랰
+asquid:S1192\"JDefine a constant instead of duplicating this literal " UPDATE " 8 times.(
+wsquid:S11927"[Define a constant instead of duplicating this literal " TEXT NOT NULL DEFAULT ''," 5 times.(
+squid:S11923"yDefine a constant instead of duplicating this literal " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," 4 times.(
+dsquid:S1192"GDefine a constant instead of duplicating this literal " BEGIN" 6 times.(
+bsquid:S1192j"FDefine a constant instead of duplicating this literal "=old." 6 times.(
+9squid:S1214#""Move constants to a class or enum.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/4/3/4382a5e52a040a8135b4c0fc2653f95c42c8766b b/src/.idea/sonarlint/issuestore/4/3/4382a5e52a040a8135b4c0fc2653f95c42c8766b
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/4/5/4529b3a97b0f3b19b895aa06f23bed63ff38a312 b/src/.idea/sonarlint/issuestore/4/5/4529b3a97b0f3b19b895aa06f23bed63ff38a312
new file mode 100644
index 0000000..141cc75
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/4/5/4529b3a97b0f3b19b895aa06f23bed63ff38a312
@@ -0,0 +1,40 @@
+
+bsquid:S2184s"FCast one of the operands of this multiplication operation to a "long".(⣛
+@squid:S1148"#Use a logger to log this exception.(ԅ
+@squid:S1148"#Use a logger to log this exception.(ԅ
+@squid:S1148"#Use a logger to log this exception.(ԅ
+@squid:S1148"#Use a logger to log this exception.(ԅ
+@squid:S1148"#Use a logger to log this exception.(ԅ
+fsquid:CallToDeprecatedMethodK"9Remove this use of "DefaultHttpClient"; it is deprecated.(믥
+Zsquid:CallToDeprecatedMethod"2Remove this use of "HttpParams"; it is deprecated.(ŋE
+_squid:CallToDeprecatedMethod"7Remove this use of "BasicHttpParams"; it is deprecated.(ŋE
+jsquid:CallToDeprecatedMethod"").(各
+hsquid:CallToDeprecatedMethod":Remove this use of "BasicNameValuePair"; it is deprecated.(各
+esquid:CallToDeprecatedMethod"").(
+Nsquid:S1135c"2Complete the task associated to this TODO comment.(
+U"squid:SwitchLastCaseIsDefaultCheckh""Add a default case to this switch.(
+_squid:S1126"BReplace this if-then-else statement by a single method invocation.(忥
+Qsquid:S2864"4Iterate over the "entrySet" instead of the "keySet".(Κ
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/5/7/577f30d26378ec8a2bd2e4a43f3c79b3f04c402c b/src/.idea/sonarlint/issuestore/5/7/577f30d26378ec8a2bd2e4a43f3c79b3f04c402c
index 72685eb..7f0bab9 100644
--- a/src/.idea/sonarlint/issuestore/5/7/577f30d26378ec8a2bd2e4a43f3c79b3f04c402c
+++ b/src/.idea/sonarlint/issuestore/5/7/577f30d26378ec8a2bd2e4a43f3c79b3f04c402c
@@ -1,17 +1,17 @@
-Vsquid:S1126"AReplace this if-then-else statement by a single return statement.(
-nsquid:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
-"squid:ClassVariableVisibilityCheck"WMake tvAlertDate a static final constant or non-public and provide accessors if needed.(
-Isquid:EmptyStatementUsageCheck"Remove this empty statement.(
-"squid:ClassVariableVisibilityCheck"WMake ivAlertIcon a static final constant or non-public and provide accessors if needed.(න
-"squid:ClassVariableVisibilityCheck"XMake ibSetBgColor a static final constant or non-public and provide accessors if needed.(
-lsquid:S1450"WRemove the "mPattern" field and declare it as a local variable in the relevant methods.(
-lsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 26 to the 15 allowed.(ݨ
-ssquid:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
-ssquid:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
-Isquid:S2864"4Iterate over the "entrySet" instead of the "keySet".(ԇ
-ssquid:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(ӏ
-Isquid:EmptyStatementUsageCheck"Remove this empty statement.(
-qsquid:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(艥
-Lsquid:S1135"2Complete the task associated to this TODO comment.(
-"squid:ClassVariableVisibilityCheck"VMake tvModified a static final constant or non-public and provide accessors if needed.(ԣ
\ No newline at end of file
+usquid:S2293["YReplace the type specification in this constructor call with the diamond operator ("<>").(ӏ
+usquid:S2293d"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+Ysquid:S1126"AReplace this if-then-else statement by a single return statement.(
+qsquid:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(艥
+Lsquid:EmptyStatementUsageCheck"Remove this empty statement.(
+osquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 26 to the 15 allowed.(ݨ
+"squid:ClassVariableVisibilityCheckW"XMake ibSetBgColor a static final constant or non-public and provide accessors if needed.(
+"squid:ClassVariableVisibilityCheckU"WMake tvAlertDate a static final constant or non-public and provide accessors if needed.(
+"squid:ClassVariableVisibilityCheckS"WMake ivAlertIcon a static final constant or non-public and provide accessors if needed.(න
+Osquid:S1135"2Complete the task associated to this TODO comment.(
+"squid:ClassVariableVisibilityCheckQ"VMake tvModified a static final constant or non-public and provide accessors if needed.(ԣ
+osquid:S1450"WRemove the "mPattern" field and declare it as a local variable in the relevant methods.(
+usquid:S2293m"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+psquid:S2293u"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+Lsquid:S2864"4Iterate over the "entrySet" instead of the "keySet".(ԇ
+Lsquid:EmptyStatementUsageCheck"Remove this empty statement.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/5/7/57841fcdeac392dad109dba1ff222218c7027aec b/src/.idea/sonarlint/issuestore/5/7/57841fcdeac392dad109dba1ff222218c7027aec
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/5/8/58052a8597c5f01595e1c849728bcae66c27a1a6 b/src/.idea/sonarlint/issuestore/5/8/58052a8597c5f01595e1c849728bcae66c27a1a6
new file mode 100644
index 0000000..7cad84c
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/5/8/58052a8597c5f01595e1c849728bcae66c27a1a6
@@ -0,0 +1,3 @@
+
+isquid:S3776H"RRefactor this method to reduce its Cognitive Complexity from 19 to the 15 allowed.(ʃ
+4squid:S2386$"Make this member "protected".(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/5/8/5836a695995df8fadacfa6409fe8d21d88946842 b/src/.idea/sonarlint/issuestore/5/8/5836a695995df8fadacfa6409fe8d21d88946842
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/5/a/5aebddc3c9cc74c6e31586a68451a0163a81f69c b/src/.idea/sonarlint/issuestore/5/a/5aebddc3c9cc74c6e31586a68451a0163a81f69c
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/5/b/5b5ea9e282b6b4d24438f217e6084a02a5631461 b/src/.idea/sonarlint/issuestore/5/b/5b5ea9e282b6b4d24438f217e6084a02a5631461
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/5/b/5bbfa66edb4db3c7c33c5181f43510990d3307f9 b/src/.idea/sonarlint/issuestore/5/b/5bbfa66edb4db3c7c33c5181f43510990d3307f9
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/5/c/5c2f117333afbd4065459c01f89cf5ca97b0b83e b/src/.idea/sonarlint/issuestore/5/c/5c2f117333afbd4065459c01f89cf5ca97b0b83e
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/5/c/5c5b5eab7e2212ceb1df9a9df360f7b74086f035 b/src/.idea/sonarlint/issuestore/5/c/5c5b5eab7e2212ceb1df9a9df360f7b74086f035
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/5/d/5dfe6902d8ec740690f88d644e74362c3be08fad b/src/.idea/sonarlint/issuestore/5/d/5dfe6902d8ec740690f88d644e74362c3be08fad
new file mode 100644
index 0000000..61cd1c8
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/5/d/5dfe6902d8ec740690f88d644e74362c3be08fad
@@ -0,0 +1,2 @@
+
+nsquid:S37763"RRefactor this method to reduce its Cognitive Complexity from 16 to the 15 allowed.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/5/f/5f6162ca79fcea353b280c5dc84973a9c37d2c74 b/src/.idea/sonarlint/issuestore/5/f/5f6162ca79fcea353b280c5dc84973a9c37d2c74
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/6/a/6a65e747031f27aef20597b4181148a9fbf963d5 b/src/.idea/sonarlint/issuestore/6/a/6a65e747031f27aef20597b4181148a9fbf963d5
index 973143b..d482ce6 100644
--- a/src/.idea/sonarlint/issuestore/6/a/6a65e747031f27aef20597b4181148a9fbf963d5
+++ b/src/.idea/sonarlint/issuestore/6/a/6a65e747031f27aef20597b4181148a9fbf963d5
@@ -1,8 +1,8 @@
-Vsquid:S1135"2Complete the task associated to this TODO comment.(8-
-nsquid:S1192"MDefine a constant instead of duplicating this literal "Unknown URI " 4 times.(8-
-Ysquid:S2130"8Use "Long.parseLong" for this string-to-long conversion.(8-
-Esquid:S1659"$Declare "noteId" on a separate line.(ؘ8-
-Isquid:S1659"(Declare "insertedId" on a separate line.(ؘ8-
-Usquid:S1153"1Directly append the argument of String.valueOf().(ߦ8-
-squid:S3008"eRename this field "NOTES_SNIPPET_SEARCH_QUERY" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(8ϵ-
\ No newline at end of file
+squid:S3008V"eRename this field "NOTES_SNIPPET_SEARCH_QUERY" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(8ϵ-
+Usquid:S1153"1Directly append the argument of String.valueOf().(ߦ8-
+qsquid:S1192"MDefine a constant instead of duplicating this literal "Unknown URI " 4 times.(8-
+Hsquid:S1659"$Declare "noteId" on a separate line.(ؘ8-
+\squid:S2130"8Use "Long.parseLong" for this string-to-long conversion.(8-
+Lsquid:S1659"(Declare "insertedId" on a separate line.(ؘ8-
+Vsquid:S1135"2Complete the task associated to this TODO comment.(8-
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/6/a/6aadc386c9aeedff05e095fce689b4f6caf6507c b/src/.idea/sonarlint/issuestore/6/a/6aadc386c9aeedff05e095fce689b4f6caf6507c
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/6/c/6cbf8bd9aa98eff862b1dc067330ba66ba4493aa b/src/.idea/sonarlint/issuestore/6/c/6cbf8bd9aa98eff862b1dc067330ba66ba4493aa
new file mode 100644
index 0000000..b1312f2
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/6/c/6cbf8bd9aa98eff862b1dc067330ba66ba4493aa
@@ -0,0 +1,2 @@
+
+Wsquid:S3398"?Move this method into the anonymous class declared at line 118.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/6/d/6ddcb085768c932a738db492683008cbdb890323 b/src/.idea/sonarlint/issuestore/6/d/6ddcb085768c932a738db492683008cbdb890323
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/6/e/6ecd6000a7b6f4a2884412ff19f74193ed089648 b/src/.idea/sonarlint/issuestore/6/e/6ecd6000a7b6f4a2884412ff19f74193ed089648
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/7/0/700e4459c63e2830b9a320228ffce6d8df5ae957 b/src/.idea/sonarlint/issuestore/7/0/700e4459c63e2830b9a320228ffce6d8df5ae957
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/7/0/7059c65f3257d02ee0f08c0a78ef4b5bb9b06d5d b/src/.idea/sonarlint/issuestore/7/0/7059c65f3257d02ee0f08c0a78ef4b5bb9b06d5d
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/7/0/70bffb4d9a8407a27eeec025a3846760e20c60ab b/src/.idea/sonarlint/issuestore/7/0/70bffb4d9a8407a27eeec025a3846760e20c60ab
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/7/2/72e5ca9aca346d92c3e625b4e39ab84ff76fa9ff b/src/.idea/sonarlint/issuestore/7/2/72e5ca9aca346d92c3e625b4e39ab84ff76fa9ff
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/7/8/78b400021a4b67de1cb9c996b2d32e042fc1fec3 b/src/.idea/sonarlint/issuestore/7/8/78b400021a4b67de1cb9c996b2d32e042fc1fec3
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/7/9/79a71cda40168c9c50cff0fe7fb0fe4d7277eab3 b/src/.idea/sonarlint/issuestore/7/9/79a71cda40168c9c50cff0fe7fb0fe4d7277eab3
new file mode 100644
index 0000000..3e50e56
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/7/9/79a71cda40168c9c50cff0fe7fb0fe4d7277eab3
@@ -0,0 +1,8 @@
+
+jsquid:S1192"MDefine a constant instead of duplicating this literal "Unknown URI " 4 times.(
+Nsquid:S1153"1Directly append the argument of String.valueOf().(ߦ
+squid:S3008L"eRename this field "NOTES_SNIPPET_SEARCH_QUERY" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
+Asquid:S1659"$Declare "noteId" on a separate line.(ؘ
+Esquid:S1659"(Declare "insertedId" on a separate line.(ؘ
+Usquid:S2130"8Use "Long.parseLong" for this string-to-long conversion.(
+Osquid:S1135"2Complete the task associated to this TODO comment.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/7/c/7c1d2a1927c01fa75a9b4c74ea8addcc06b327ae b/src/.idea/sonarlint/issuestore/7/c/7c1d2a1927c01fa75a9b4c74ea8addcc06b327ae
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/7/c/7cca4a2d94815c47d6a1ce79d4f7ac1c41c7b766 b/src/.idea/sonarlint/issuestore/7/c/7cca4a2d94815c47d6a1ce79d4f7ac1c41c7b766
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/7/d/7df057fc3f5f489fe93eddec831bb8dc1b2d10cc b/src/.idea/sonarlint/issuestore/7/d/7df057fc3f5f489fe93eddec831bb8dc1b2d10cc
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/7/e/7e6c62cbf2db3592d39ae44d7f78b9e37151187e b/src/.idea/sonarlint/issuestore/7/e/7e6c62cbf2db3592d39ae44d7f78b9e37151187e
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/8/0/80d1549307e9bf8a8f43274589e81738beb6ca63 b/src/.idea/sonarlint/issuestore/8/0/80d1549307e9bf8a8f43274589e81738beb6ca63
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/8/7/876016634c6642b35109680ccac740dc8271b236 b/src/.idea/sonarlint/issuestore/8/7/876016634c6642b35109680ccac740dc8271b236
new file mode 100644
index 0000000..6f4dbaa
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/8/7/876016634c6642b35109680ccac740dc8271b236
@@ -0,0 +1,6 @@
+
+4squid:S2386F"Make this member "protected".(
+@squid:S1125"(Remove the literal "true" boolean value.(
+9squid:S2386P"Make this member "protected".(㳎
+Ysquid:S1126"AReplace this if-then-else statement by a single return statement.(
+Gsquid:S1066"/Merge this if statement with the enclosing one.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/8/c/8c55c3ccc257e5907959013f99656e4c8ec3903e b/src/.idea/sonarlint/issuestore/8/c/8c55c3ccc257e5907959013f99656e4c8ec3903e
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/8/c/8ccff78d0b5f6e2c2b5ae03eaa6292c9713ee7d6 b/src/.idea/sonarlint/issuestore/8/c/8ccff78d0b5f6e2c2b5ae03eaa6292c9713ee7d6
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/8/e/8e5d73046ba0fbe73fe62b66bc9c3ef8dc5ba0c1 b/src/.idea/sonarlint/issuestore/8/e/8e5d73046ba0fbe73fe62b66bc9c3ef8dc5ba0c1
new file mode 100644
index 0000000..49b81ed
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/8/e/8e5d73046ba0fbe73fe62b66bc9c3ef8dc5ba0c1
@@ -0,0 +1,7 @@
+
+ksquid:S1192?"ODefine a constant instead of duplicating this literal "Wrong note id:" 3 times.(
+Vsquid:S1155">Use isEmpty() to check whether the collection is empty or not.(
+]squid:S1126}"AReplace this if-then-else statement by a single return statement.(Ʒ
+jsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 23 to the 15 allowed.(
+vsquid:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(л
+]squid:S2147"ECombine this catch with the one at line 242, which has the same body.(暩
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/8/f/8f8807ac10d92d4d1f8b8fb48618c4994f48d7d8 b/src/.idea/sonarlint/issuestore/8/f/8f8807ac10d92d4d1f8b8fb48618c4994f48d7d8
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/9/3/934a4e2abf19d28a53f6aeb1dcd99248c44b6892 b/src/.idea/sonarlint/issuestore/9/3/934a4e2abf19d28a53f6aeb1dcd99248c44b6892
new file mode 100644
index 0000000..562cbb1
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/9/3/934a4e2abf19d28a53f6aeb1dcd99248c44b6892
@@ -0,0 +1,3 @@
+
+3squid:S2386+"Make this member "protected".(X
+osquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 16 to the 15 allowed.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/9/4/94101de9a3a6b468e7f153a7cc9134edaa3ba5d8 b/src/.idea/sonarlint/issuestore/9/4/94101de9a3a6b468e7f153a7cc9134edaa3ba5d8
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/9/4/941b86057337340eb9cbb286fc989594240b4dd8 b/src/.idea/sonarlint/issuestore/9/4/941b86057337340eb9cbb286fc989594240b4dd8
new file mode 100644
index 0000000..a960767
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/9/4/941b86057337340eb9cbb286fc989594240b4dd8
@@ -0,0 +1,2 @@
+
+Vsquid:S1118":Add a private constructor to hide the implicit public one.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/9/5/9583c0dee6cea177586df5509079386d9173f23b b/src/.idea/sonarlint/issuestore/9/5/9583c0dee6cea177586df5509079386d9173f23b
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/9/6/969faa2a5d9f5e8390e958d2c07f2cfd54676e6b b/src/.idea/sonarlint/issuestore/9/6/969faa2a5d9f5e8390e958d2c07f2cfd54676e6b
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/9/7/97872a23506db5ffaa04e04bd96b003493352c30 b/src/.idea/sonarlint/issuestore/9/7/97872a23506db5ffaa04e04bd96b003493352c30
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/9/a/9a3a19793537958b8b1b03a81985999e22705a2f b/src/.idea/sonarlint/issuestore/9/a/9a3a19793537958b8b1b03a81985999e22705a2f
new file mode 100644
index 0000000..0b0844f
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/9/a/9a3a19793537958b8b1b03a81985999e22705a2f
@@ -0,0 +1,3 @@
+
+Qsquid:S1118":Add a private constructor to hide the implicit public one.(
+usquid:S22931"YReplace the type specification in this constructor call with the diamond operator ("<>").(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/9/b/9b09a4d37e3aec64adadab801bb8fec4165ad88f b/src/.idea/sonarlint/issuestore/9/b/9b09a4d37e3aec64adadab801bb8fec4165ad88f
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/9/b/9bff80af6e3e79adb83d5133a046b17b4df93efe b/src/.idea/sonarlint/issuestore/9/b/9bff80af6e3e79adb83d5133a046b17b4df93efe
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/9/c/9c7a2c0e0424eed0bf59aa964c7ca6b7faa24332 b/src/.idea/sonarlint/issuestore/9/c/9c7a2c0e0424eed0bf59aa964c7ca6b7faa24332
new file mode 100644
index 0000000..b1312f2
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/9/c/9c7a2c0e0424eed0bf59aa964c7ca6b7faa24332
@@ -0,0 +1,2 @@
+
+Wsquid:S3398"?Move this method into the anonymous class declared at line 118.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/9/d/9d3f688bcd8166493a0cc97a200f519d2f20537c b/src/.idea/sonarlint/issuestore/9/d/9d3f688bcd8166493a0cc97a200f519d2f20537c
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/9/d/9da41e1d7af63a2656ca1986fccef53a3cf9e397 b/src/.idea/sonarlint/issuestore/9/d/9da41e1d7af63a2656ca1986fccef53a3cf9e397
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/9/d/9dbe73b411fb77d236219bae9da8525f142f9b73 b/src/.idea/sonarlint/issuestore/9/d/9dbe73b411fb77d236219bae9da8525f142f9b73
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/a/4/a446c87b1013132f8adaf83656b582028e8809af b/src/.idea/sonarlint/issuestore/a/4/a446c87b1013132f8adaf83656b582028e8809af
new file mode 100644
index 0000000..0a1ddf3
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/a/4/a446c87b1013132f8adaf83656b582028e8809af
@@ -0,0 +1,14 @@
+
+Gsquid:S1148"#Use a logger to log this exception.(ԅ8-
+Gsquid:S1148"#Use a logger to log this exception.(ԅ8-
+isquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 23 to the 15 allowed.(
+^
+squid:S899"BDo something with the "boolean" value returned by "createNewFile".(А
+:squid:S3398H"#Move this method into "TextExport".(
+dsquid:S2147"ECombine this catch with the one at line 301, which has the same body.(ߝȴ8-
+Gsquid:S1148"#Use a logger to log this exception.(ԅ8-
+]squid:S2147"ECombine this catch with the one at line 334, which has the same body.(ﭣ
+nsquid:S00116w"VRename this field "TEXT_FORMAT" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ћ
+Gsquid:S1148"#Use a logger to log this exception.(ԅ8-
+jsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 27 to the 15 allowed.(
+fsquid:S2095"NUse try-with-resources or close this "FileOutputStream" in a "finally" clause.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/a/5/a5deab8a7a2cdb1cdc00e34cf882d28fd0f00c28 b/src/.idea/sonarlint/issuestore/a/5/a5deab8a7a2cdb1cdc00e34cf882d28fd0f00c28
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/a/7/a7641cfac724321d508c2a284223a711011a93f5 b/src/.idea/sonarlint/issuestore/a/7/a7641cfac724321d508c2a284223a711011a93f5
index 5daa792..3faf19d 100644
--- a/src/.idea/sonarlint/issuestore/a/7/a7641cfac724321d508c2a284223a711011a93f5
+++ b/src/.idea/sonarlint/issuestore/a/7/a7641cfac724321d508c2a284223a711011a93f5
@@ -1,8 +1,8 @@
-esquid:S1192"KDefine a constant instead of duplicating this literal "content://" 4 times.(
-:squid:S1214""Move constants to a class or enum.(
-Wsquid:S1118":Add a private constructor to hide the implicit public one.(
-Qsquid:S1135"2Complete the task associated to this TODO comment.(8-
-Tsquid:S1118":Add a private constructor to hide the implicit public one.(͓
>squid:S1214E""Move constants to a class or enum.(⸫
-Rsquid:S1118":Add a private constructor to hide the implicit public one.(߀
\ No newline at end of file
+Rsquid:S1118":Add a private constructor to hide the implicit public one.(߀
+Qsquid:S1135"2Complete the task associated to this TODO comment.(8-
+gsquid:S1192<"KDefine a constant instead of duplicating this literal "content://" 4 times.(
+Wsquid:S1118":Add a private constructor to hide the implicit public one.(
+:squid:S1214""Move constants to a class or enum.(
+Vsquid:S11185":Add a private constructor to hide the implicit public one.(͓
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/a/7/a776bfcfd1e96d15feaf2298b0b92948bb96533f b/src/.idea/sonarlint/issuestore/a/7/a776bfcfd1e96d15feaf2298b0b92948bb96533f
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/a/b/ab153b0256bc5f6c194e188cec0b8e327e347a90 b/src/.idea/sonarlint/issuestore/a/b/ab153b0256bc5f6c194e188cec0b8e327e347a90
new file mode 100644
index 0000000..1709e5e
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/a/b/ab153b0256bc5f6c194e188cec0b8e327e347a90
@@ -0,0 +1,21 @@
+
+^squid:S1192"FDefine a constant instead of duplicating this literal " DESC" 3 times.(Ա
+Lsquid:S1066"/Merge this if statement with the enclosing one.(
+Lsquid:S1066"/Merge this if statement with the enclosing one.(˼֓
+Tsquid:S2589"7Remove this expression which always evaluates to "true"(락
+@squid:S1148"#Use a logger to log this exception.(ԅ
+psquid:S2293]"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+usquid:S2293^"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+usquid:S2293_"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+psquid:S2293a"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+usquid:S2293b"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+usquid:S2293c"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+jsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 29 to the 15 allowed.(þ
+jsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 28 to the 15 allowed.(
+osquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 41 to the 15 allowed.(˰
+osquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 34 to the 15 allowed.(ɸ
+6squid:S2129"Remove this "Long" constructor(ϭ
+osquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 20 to the 15 allowed.(ƶؠ
+Hsquid:S1172"+Remove this unused method parameter "node".(ƶؠ
+Dsquid:S1905"'Remove this unnecessary cast to "Node".(
+?squid:S1905"'Remove this unnecessary cast to "Node".(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/a/c/ac5e313f29cb4f0fad090fd0ffb56da5b70cb36a b/src/.idea/sonarlint/issuestore/a/c/ac5e313f29cb4f0fad090fd0ffb56da5b70cb36a
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/a/d/ad72331a1bed265bb9c0fe838faa74dbf69fce32 b/src/.idea/sonarlint/issuestore/a/d/ad72331a1bed265bb9c0fe838faa74dbf69fce32
index 93c7167..c684cc5 100644
--- a/src/.idea/sonarlint/issuestore/a/d/ad72331a1bed265bb9c0fe838faa74dbf69fce32
+++ b/src/.idea/sonarlint/issuestore/a/d/ad72331a1bed265bb9c0fe838faa74dbf69fce32
@@ -1,36 +1,36 @@
-Nsquid:S1199"-Extract this nested code block into a method.(̀8ٮ-
-Fsquid:S3398"%Move this method into "ModeCallback".(8ٮ-
-csquid:S1126"BReplace this if-then-else statement by a single method invocation.(玒8Ą-
-Lsquid:S3398"0Move this method into "OnListItemClickListener".(8ѣ-
-nsquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(Ѿk8-
-usquid:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(艥8ѣ-
-Ssquid:S1135"2Complete the task associated to this TODO comment.(8-
-Fsquid:S00108")Either remove or fill this block of code.(ʥ8ѣ-
-Ssquid:S1135"2Complete the task associated to this TODO comment.(8Ą-
-tsquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(8-
-Nsquid:S1199"-Extract this nested code block into a method.(ڿ8Ą-
-7squid:S3626"Remove this redundant jump.(݅8-
-7squid:S3626"Remove this redundant jump.(݅8-
-Ssquid:S1135"2Complete the task associated to this TODO comment.(8-
-msquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 18 to the 15 allowed.(b8ٮ-
-Ssquid:S1135"2Complete the task associated to this TODO comment.(̐8-
-7squid:S3626"Remove this redundant jump.(݅8-
-Ssquid:S1135"2Complete the task associated to this TODO comment.(8Ą-
-Nsquid:S1199"-Extract this nested code block into a method.(8-
-tsquid:S1450"XRemove the "mMoveMenu" field and declare it as a local variable in the relevant methods.(8-
-lsquid:S1301"KReplace this "switch" statement by "if" statements to increase readability.(ד8ѣ-
-Nsquid:S1199"-Extract this nested code block into a method.(8ٮ-
-Dsquid:S1148"#Use a logger to log this exception.(ԅ8-
-Nsquid:S1199"-Extract this nested code block into a method.(8-
-Dsquid:S1148"#Use a logger to log this exception.(ԅ8-
-nsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 20 to the 15 allowed.(8ѣ-
-Psquid:EmptyStatementUsageCheck"Remove this empty statement.(8-
-Ksquid:S2093"*Change this "try" to a try-with-resources.(8-
-Asquid:S3398"%Move this method into "ModeCallback".(8ѣ-
-Isquid:S1199"-Extract this nested code block into a method.(8ٮ-
-msquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 17 to the 15 allowed.(#8Ą-
-Nsquid:S1199"-Extract this nested code block into a method.(Η8-
-ssquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 17 to the 15 allowed.(8-
-Isquid:S1199"-Extract this nested code block into a method.(ȓ8Ą-
-Isquid:EmptyStatementUsageCheck"Remove this empty statement.(
\ No newline at end of file
+Qsquid:S1199"-Extract this nested code block into a method.(8ٮ-
+Qsquid:S1199"-Extract this nested code block into a method.(8-
+Gsquid:S1148"#Use a logger to log this exception.(ԅ8-
+:squid:S3626"Remove this redundant jump.(݅8-
+Vsquid:S1135"2Complete the task associated to this TODO comment.(8Ą-
+Osquid:S3398"0Move this method into "OnListItemClickListener".(8ѣ-
+qsquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(Ѿk8-
+Lsquid:S1199"-Extract this nested code block into a method.(ȓ8Ą-
+:squid:S3626"Remove this redundant jump.(݅8-
+Qsquid:S1199"-Extract this nested code block into a method.(8-
+:squid:S3626"Remove this redundant jump.(݅8-
+wsquid:S1450"XRemove the "mMoveMenu" field and declare it as a local variable in the relevant methods.(8-
+xsquid:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(艥8ѣ-
+Gsquid:S1148"#Use a logger to log this exception.(ԅ8-
+Ksquid:EmptyStatementUsageCheckg"Remove this empty statement.(
+Ssquid:EmptyStatementUsageCheck"Remove this empty statement.(8-
+Vsquid:S1135"2Complete the task associated to this TODO comment.(̐8-
+qsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 20 to the 15 allowed.(8ѣ-
+psquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 17 to the 15 allowed.(#8Ą-
+Lsquid:S1199"-Extract this nested code block into a method.(8ٮ-
+Vsquid:S1135"2Complete the task associated to this TODO comment.(8-
+psquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 18 to the 15 allowed.(b8ٮ-
+Vsquid:S1135"2Complete the task associated to this TODO comment.(8Ą-
+Isquid:S00108")Either remove or fill this block of code.(ʥ8ѣ-
+Vsquid:S1135"2Complete the task associated to this TODO comment.(8-
+fsquid:S1126"BReplace this if-then-else statement by a single method invocation.(玒8Ą-
+wsquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(8-
+vsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 17 to the 15 allowed.(8-
+Qsquid:S1199"-Extract this nested code block into a method.(ڿ8Ą-
+osquid:S1301"KReplace this "switch" statement by "if" statements to increase readability.(ד8ѣ-
+Qsquid:S1199"-Extract this nested code block into a method.(̀8ٮ-
+Isquid:S3398"%Move this method into "ModeCallback".(8ٮ-
+Dsquid:S3398"%Move this method into "ModeCallback".(8ѣ-
+Nsquid:S2093"*Change this "try" to a try-with-resources.(8-
+Qsquid:S1199"-Extract this nested code block into a method.(Η8-
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/b/9/b97ec49041e7d949c26293070e8a636dba8c7b33 b/src/.idea/sonarlint/issuestore/b/9/b97ec49041e7d949c26293070e8a636dba8c7b33
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/c/1/c182d0c9c237ea8a46a92ccaae9bb5c751923a88 b/src/.idea/sonarlint/issuestore/c/1/c182d0c9c237ea8a46a92ccaae9bb5c751923a88
new file mode 100644
index 0000000..e62647d
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/c/1/c182d0c9c237ea8a46a92ccaae9bb5c751923a88
@@ -0,0 +1,2 @@
+
+jsquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/c/3/c3c1811dec2dbad2deeafb9aad505ca9631da740 b/src/.idea/sonarlint/issuestore/c/3/c3c1811dec2dbad2deeafb9aad505ca9631da740
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/c/4/c42ad3cd6e664963fa1849c760a57d417d500ee7 b/src/.idea/sonarlint/issuestore/c/4/c42ad3cd6e664963fa1849c760a57d417d500ee7
new file mode 100644
index 0000000..194a8b2
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/c/4/c42ad3cd6e664963fa1849c760a57d417d500ee7
@@ -0,0 +1,48 @@
+
+jsquid:ModifiersOrderCheck3"EReorder the modifiers to comply with the Java Language Specification.(̥
+osquid:ModifiersOrderCheck!"EReorder the modifiers to comply with the Java Language Specification.(
+osquid:ModifiersOrderCheckO"EReorder the modifiers to comply with the Java Language Specification.(
+osquid:ModifiersOrderChecko"EReorder the modifiers to comply with the Java Language Specification.(
+jsquid:ModifiersOrderCheckC"EReorder the modifiers to comply with the Java Language Specification.(
+jsquid:ModifiersOrderCheck/"EReorder the modifiers to comply with the Java Language Specification.(Ӎ
+osquid:ModifiersOrderCheck9"EReorder the modifiers to comply with the Java Language Specification.(
+jsquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(㘱
+jsquid:ModifiersOrderCheckS"EReorder the modifiers to comply with the Java Language Specification.(
+osquid:ModifiersOrderChecki"EReorder the modifiers to comply with the Java Language Specification.(
+osquid:ModifiersOrderCheckE"EReorder the modifiers to comply with the Java Language Specification.(
+osquid:ModifiersOrderCheck+"EReorder the modifiers to comply with the Java Language Specification.(
+jsquid:ModifiersOrderCheck1"EReorder the modifiers to comply with the Java Language Specification.(
+jsquid:ModifiersOrderCheck_"EReorder the modifiers to comply with the Java Language Specification.(
+jsquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(
+jsquid:ModifiersOrderCheck5"EReorder the modifiers to comply with the Java Language Specification.(Ƒ
+jsquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(
+jsquid:ModifiersOrderCheck-"EReorder the modifiers to comply with the Java Language Specification.(
+jsquid:ModifiersOrderCheckG"EReorder the modifiers to comply with the Java Language Specification.(
+osquid:ModifiersOrderCheckQ"EReorder the modifiers to comply with the Java Language Specification.(
+jsquid:ModifiersOrderCheckY"EReorder the modifiers to comply with the Java Language Specification.(
+osquid:ModifiersOrderCheckK"EReorder the modifiers to comply with the Java Language Specification.(
+jsquid:ModifiersOrderCheckI"EReorder the modifiers to comply with the Java Language Specification.(
+osquid:ModifiersOrderCheck%"EReorder the modifiers to comply with the Java Language Specification.(
+osquid:ModifiersOrderCheck["EReorder the modifiers to comply with the Java Language Specification.(Ō
+jsquid:ModifiersOrderChecka"EReorder the modifiers to comply with the Java Language Specification.(̀
+osquid:ModifiersOrderCheck="EReorder the modifiers to comply with the Java Language Specification.(
+osquid:ModifiersOrderChecke"EReorder the modifiers to comply with the Java Language Specification.(
+osquid:ModifiersOrderCheck]"EReorder the modifiers to comply with the Java Language Specification.(Ȩ
+osquid:ModifiersOrderCheck)"EReorder the modifiers to comply with the Java Language Specification.(۲
+isquid:ModifiersOrderCheck7"EReorder the modifiers to comply with the Java Language Specification.(
+jsquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(ρ
+osquid:ModifiersOrderCheck'"EReorder the modifiers to comply with the Java Language Specification.(
+isquid:ModifiersOrderCheck;"EReorder the modifiers to comply with the Java Language Specification.(K
+osquid:ModifiersOrderCheckc"EReorder the modifiers to comply with the Java Language Specification.(â
+jsquid:ModifiersOrderCheck?"EReorder the modifiers to comply with the Java Language Specification.(֫
+osquid:ModifiersOrderCheckW"EReorder the modifiers to comply with the Java Language Specification.(ԣ
+jsquid:ModifiersOrderCheckM"EReorder the modifiers to comply with the Java Language Specification.(
+Qsquid:S1118":Add a private constructor to hide the implicit public one.(
+jsquid:ModifiersOrderCheckU"EReorder the modifiers to comply with the Java Language Specification.(ʹ
+jsquid:ModifiersOrderCheck#"EReorder the modifiers to comply with the Java Language Specification.(
+isquid:ModifiersOrderCheckA"EReorder the modifiers to comply with the Java Language Specification.($
+osquid:ModifiersOrderCheckk"EReorder the modifiers to comply with the Java Language Specification.(
+osquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(
+isquid:ModifiersOrderCheckm"EReorder the modifiers to comply with the Java Language Specification.(-
+osquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(Ɖ
+jsquid:ModifiersOrderCheckg"EReorder the modifiers to comply with the Java Language Specification.(ƒ
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/c/6/c65f5dc8218ef1da6f6bfb5d1b14aea855a54d7f b/src/.idea/sonarlint/issuestore/c/6/c65f5dc8218ef1da6f6bfb5d1b14aea855a54d7f
new file mode 100644
index 0000000..34630d5
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/c/6/c65f5dc8218ef1da6f6bfb5d1b14aea855a54d7f
@@ -0,0 +1,16 @@
+
+osquid:ModifiersOrderCheckN"EReorder the modifiers to comply with the Java Language Specification.(
+Rsquid:S1118":Add a private constructor to hide the implicit public one.(ֹ
+psquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(
+osquid:ModifiersOrderCheckV"EReorder the modifiers to comply with the Java Language Specification.(
+jsquid:ModifiersOrderCheckf"EReorder the modifiers to comply with the Java Language Specification.(ɜ
+ksquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(
+osquid:ModifiersOrderCheck^"EReorder the modifiers to comply with the Java Language Specification.(
+Vsquid:S1118M":Add a private constructor to hide the implicit public one.(Ū
+jsquid:ModifiersOrderCheck+"EReorder the modifiers to comply with the Java Language Specification.(Ɠ
+osquid:ModifiersOrderCheck3"EReorder the modifiers to comply with the Java Language Specification.(
+Esquid:S2140G")Use "java.util.Random.nextInt()" instead.(
+psquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(
+Qsquid:S1118*":Add a private constructor to hide the implicit public one.(
+Wsquid:S1118":Add a private constructor to hide the implicit public one.(
+Qsquid:S1118":Add a private constructor to hide the implicit public one.(ڦ
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/c/6/c6c54580a9d6902d8031bec4ac521a2c273e54c2 b/src/.idea/sonarlint/issuestore/c/6/c6c54580a9d6902d8031bec4ac521a2c273e54c2
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/c/7/c7a7e9a177263e2e6b3cb299c3f322fdb07f1069 b/src/.idea/sonarlint/issuestore/c/7/c7a7e9a177263e2e6b3cb299c3f322fdb07f1069
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/c/b/cbb9789871b962d17154fb6e10d5d57c0386bae5 b/src/.idea/sonarlint/issuestore/c/b/cbb9789871b962d17154fb6e10d5d57c0386bae5
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/c/e/ce223cd8ed0964eade85551d6f28295a0d0826cc b/src/.idea/sonarlint/issuestore/c/e/ce223cd8ed0964eade85551d6f28295a0d0826cc
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/c/f/cf72a3860e31e7948ebd76cc8ccf42b8f8ef48e9 b/src/.idea/sonarlint/issuestore/c/f/cf72a3860e31e7948ebd76cc8ccf42b8f8ef48e9
new file mode 100644
index 0000000..d838522
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/c/f/cf72a3860e31e7948ebd76cc8ccf42b8f8ef48e9
@@ -0,0 +1,14 @@
+
+Nsquid:S1135~"2Complete the task associated to this TODO comment.(̐
+Nsquid:S1135{"2Complete the task associated to this TODO comment.(̐
+hsquid:S1301"KReplace this "switch" statement by "if" statements to increase readability.(۫
+Osquid:S1135"2Complete the task associated to this TODO comment.(̐
+?squid:S1148N"#Use a logger to log this exception.(ԅ
+]squid:S2147"ECombine this catch with the one at line 119, which has the same body.(ﭣ
+?squid:S1148|"#Use a logger to log this exception.(ԅ
+?squid:S1148y"#Use a logger to log this exception.(ԅ
+asquid:S2147z"ECombine this catch with the one at line 119, which has the same body.(
+\squid:S2147}"ECombine this catch with the one at line 119, which has the same body.(
+Nsquid:S1135x"2Complete the task associated to this TODO comment.(̐
+?squid:S1148"#Use a logger to log this exception.(ԅ
+@squid:S1148"#Use a logger to log this exception.(ԅ
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/d/1/d187f1271655c3d91661a39fe6de395b6a9f290a b/src/.idea/sonarlint/issuestore/d/1/d187f1271655c3d91661a39fe6de395b6a9f290a
new file mode 100644
index 0000000..7b2bfc3
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/d/1/d187f1271655c3d91661a39fe6de395b6a9f290a
@@ -0,0 +1,4 @@
+
+]squid:S2259"@A "NullPointerException" could be thrown; "js" is nullable here.(
+@squid:S1148"#Use a logger to log this exception.(ԅ
+jsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 16 to the 15 allowed.(ǎ
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/d/1/d1cc822fa9d783a8d4563bf6e139b7ae10de2fb1 b/src/.idea/sonarlint/issuestore/d/1/d1cc822fa9d783a8d4563bf6e139b7ae10de2fb1
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/d/1/d1d5c2a21bcee2c42fb71e493be5fa068951f155 b/src/.idea/sonarlint/issuestore/d/1/d1d5c2a21bcee2c42fb71e493be5fa068951f155
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/d/2/d2281fbb3027de2722081a53408dd77628bf080e b/src/.idea/sonarlint/issuestore/d/2/d2281fbb3027de2722081a53408dd77628bf080e
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/d/5/d523c5f9a544775535a62275862e5be71ba0775f b/src/.idea/sonarlint/issuestore/d/5/d523c5f9a544775535a62275862e5be71ba0775f
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/d/6/d6094f02d3b882a8697c1462f3a5861b9b883946 b/src/.idea/sonarlint/issuestore/d/6/d6094f02d3b882a8697c1462f3a5861b9b883946
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/d/8/d817b9340a5ced71d122f66b8d29cf7d6dfa79ab b/src/.idea/sonarlint/issuestore/d/8/d817b9340a5ced71d122f66b8d29cf7d6dfa79ab
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/d/a/da57ce446af85bbd9aefee65e969869f0cff78b0 b/src/.idea/sonarlint/issuestore/d/a/da57ce446af85bbd9aefee65e969869f0cff78b0
new file mode 100644
index 0000000..5781b2a
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/d/a/da57ce446af85bbd9aefee65e969869f0cff78b0
@@ -0,0 +1,5 @@
+
+isquid:S3776\"RRefactor this method to reduce its Cognitive Complexity from 20 to the 15 allowed.(٫
+hsquid:S1301"KReplace this "switch" statement by "if" statements to increase readability.(崡
+Vsquid:UselessImportCheck"2Remove this unused import 'android.app.ActionBar'.(
+Rsquid:UselessImportCheck&".Remove this unused import 'android.view.Menu'.(҅
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/d/c/dc0499ba6d8c194845d468f2e205b9c9dc4dfb86 b/src/.idea/sonarlint/issuestore/d/c/dc0499ba6d8c194845d468f2e205b9c9dc4dfb86
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/d/c/dc081dfaea13c3593514d7b02b10bdf101b77bb6 b/src/.idea/sonarlint/issuestore/d/c/dc081dfaea13c3593514d7b02b10bdf101b77bb6
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/d/c/dcbf3204de74b48a299a1133f01f78857e115ba2 b/src/.idea/sonarlint/issuestore/d/c/dcbf3204de74b48a299a1133f01f78857e115ba2
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/d/d/dd970bd8ce083850fca1d4d159647ccd110e57cb b/src/.idea/sonarlint/issuestore/d/d/dd970bd8ce083850fca1d4d159647ccd110e57cb
index a07a689..4863061 100644
--- a/src/.idea/sonarlint/issuestore/d/d/dd970bd8ce083850fca1d4d159647ccd110e57cb
+++ b/src/.idea/sonarlint/issuestore/d/d/dd970bd8ce083850fca1d4d159647ccd110e57cb
@@ -1,3 +1,3 @@
-qsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 21 to the 15 allowed.(8-
-bsquid:S1126"AReplace this if-then-else statement by a single return statement.(8-
\ No newline at end of file
+esquid:S1126"AReplace this if-then-else statement by a single return statement.(8-
+qsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 21 to the 15 allowed.(8-
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/d/e/de9bd32c86ad3a18c044f9da0ae3a85c009232b0 b/src/.idea/sonarlint/issuestore/d/e/de9bd32c86ad3a18c044f9da0ae3a85c009232b0
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/e/0/e094aec5c3e1b6f44539adff3114f5a1ad603ddc b/src/.idea/sonarlint/issuestore/e/0/e094aec5c3e1b6f44539adff3114f5a1ad603ddc
new file mode 100644
index 0000000..66a7a08
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/e/0/e094aec5c3e1b6f44539adff3114f5a1ad603ddc
@@ -0,0 +1,6 @@
+
+squid:S1319"pThe return type of this method should be an interface such as "List" rather than the implementation "ArrayList".(ﷺ
+]squid:S2259"@A "NullPointerException" could be thrown; "js" is nullable here.(
+@squid:S1148"#Use a logger to log this exception.(ԅ
+usquid:S2293*"YReplace the type specification in this constructor call with the diamond operator ("<>").(ʩ
+ssquid:S3923"[Remove this conditional structure or edit its code blocks so that they're not all the same.(ԡ
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/e/1/e197d158af52f2eb300d9ee112ffda1dcfdb106a b/src/.idea/sonarlint/issuestore/e/1/e197d158af52f2eb300d9ee112ffda1dcfdb106a
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/e/2/e27e68b616d13c6aef8921df8c2e189a4eb1096d b/src/.idea/sonarlint/issuestore/e/2/e27e68b616d13c6aef8921df8c2e189a4eb1096d
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/e/4/e4a661e5de29d26ae56c43e59869580039c078be b/src/.idea/sonarlint/issuestore/e/4/e4a661e5de29d26ae56c43e59869580039c078be
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/e/6/e6d3a1299f717b6fb613d6338bc6a7c50cf1d6e8 b/src/.idea/sonarlint/issuestore/e/6/e6d3a1299f717b6fb613d6338bc6a7c50cf1d6e8
new file mode 100644
index 0000000..4d539d3
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/e/6/e6d3a1299f717b6fb613d6338bc6a7c50cf1d6e8
@@ -0,0 +1,7 @@
+
+Wsquid:S1118":Add a private constructor to hide the implicit public one.(
+:squid:S1214""Move constants to a class or enum.(
+Vsquid:S11181":Add a private constructor to hide the implicit public one.(͓
+gsquid:S11929"KDefine a constant instead of duplicating this literal "content://" 4 times.(
+Rsquid:S1118":Add a private constructor to hide the implicit public one.(߀
+>squid:S1214@""Move constants to a class or enum.(⸫
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/e/9/e907f1b0661a3a860dfe8ddef9cec38c909aede6 b/src/.idea/sonarlint/issuestore/e/9/e907f1b0661a3a860dfe8ddef9cec38c909aede6
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/e/e/ee461eb54c56e32f5d63c27ad970d47fe842672a b/src/.idea/sonarlint/issuestore/e/e/ee461eb54c56e32f5d63c27ad970d47fe842672a
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/f/0/f087b1ba1b9c91b7293fea0fb071eaed62a42137 b/src/.idea/sonarlint/issuestore/f/0/f087b1ba1b9c91b7293fea0fb071eaed62a42137
new file mode 100644
index 0000000..6a1eb0a
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/f/0/f087b1ba1b9c91b7293fea0fb071eaed62a42137
@@ -0,0 +1,12 @@
+
+osquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(֖
+osquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(Ų
+osquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(ز
+osquid:ModifiersOrderCheck!"EReorder the modifiers to comply with the Java Language Specification.(
+jsquid:ModifiersOrderCheck#"EReorder the modifiers to comply with the Java Language Specification.(ճ
+jsquid:ModifiersOrderCheck%"EReorder the modifiers to comply with the Java Language Specification.(ߪ
+jsquid:ModifiersOrderCheck'"EReorder the modifiers to comply with the Java Language Specification.(
+Msquid:S2696/"6Make the enclosing method "static" or remove this set.(ю
+Msquid:S26961"6Make the enclosing method "static" or remove this set.(
+Msquid:S2696C"6Make the enclosing method "static" or remove this set.(
+Lsquid:S2696e"6Make the enclosing method "static" or remove this set.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/f/0/f0ce9208a20ebd9d1f763074c5870c3f31ef115a b/src/.idea/sonarlint/issuestore/f/0/f0ce9208a20ebd9d1f763074c5870c3f31ef115a
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/f/1/f1226eeacd46c914d51f3d1a6d6f27377490d2a4 b/src/.idea/sonarlint/issuestore/f/1/f1226eeacd46c914d51f3d1a6d6f27377490d2a4
new file mode 100644
index 0000000..672d354
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/f/1/f1226eeacd46c914d51f3d1a6d6f27377490d2a4
@@ -0,0 +1,7 @@
+
+3squid:S2386."Make this member "protected".(u
+vsquid:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+vsquid:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+vsquid:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(
+osquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 91 to the 15 allowed.(
+isquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 32 to the 15 allowed.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/f/1/f14340b1cdc7033b88ff3f931e5d407f2121d97d b/src/.idea/sonarlint/issuestore/f/1/f14340b1cdc7033b88ff3f931e5d407f2121d97d
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/f/4/f4a01d6a4fcb971362ec00a83903fd3902f52164 b/src/.idea/sonarlint/issuestore/f/4/f4a01d6a4fcb971362ec00a83903fd3902f52164
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/f/7/f79cc2688e29fcbc286fda14ae07b27c9e83690f b/src/.idea/sonarlint/issuestore/f/7/f79cc2688e29fcbc286fda14ae07b27c9e83690f
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/f/8/f880b4c44bb5d5a1db0a68dac9a41bede6b8374c b/src/.idea/sonarlint/issuestore/f/8/f880b4c44bb5d5a1db0a68dac9a41bede6b8374c
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/f/9/f9043974b7ed98b4c594d040bbdb95d5a331bd06 b/src/.idea/sonarlint/issuestore/f/9/f9043974b7ed98b4c594d040bbdb95d5a331bd06
new file mode 100644
index 0000000..94ff1a6
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/f/9/f9043974b7ed98b4c594d040bbdb95d5a331bd06
@@ -0,0 +1,14 @@
+
+fsquid:S2095"NUse try-with-resources or close this "FileOutputStream" in a "finally" clause.(
+@squid:S1148"#Use a logger to log this exception.(ԅ
+@squid:S1148"#Use a logger to log this exception.(ԅ
+@squid:S1148"#Use a logger to log this exception.(ԅ
+@squid:S1148"#Use a logger to log this exception.(ԅ
+nsquid:S00116w"VRename this field "TEXT_FORMAT" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ћ
+jsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 27 to the 15 allowed.(
+isquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 23 to the 15 allowed.(
+]squid:S2147"ECombine this catch with the one at line 301, which has the same body.(ߝȴ
+]squid:S2147"ECombine this catch with the one at line 334, which has the same body.(ﭣ
+^
+squid:S899"BDo something with the "boolean" value returned by "createNewFile".(А
+:squid:S3398H"#Move this method into "TextExport".(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/f/9/f9357c93c5b5b86ae4f3363d3fe76860a1007f91 b/src/.idea/sonarlint/issuestore/f/9/f9357c93c5b5b86ae4f3363d3fe76860a1007f91
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/f/9/f9cd22f58771331a300b93dea7aed95bd0d9e16d b/src/.idea/sonarlint/issuestore/f/9/f9cd22f58771331a300b93dea7aed95bd0d9e16d
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/f/9/f9f49497f95afd327db7a7a512612aa1089003d4 b/src/.idea/sonarlint/issuestore/f/9/f9f49497f95afd327db7a7a512612aa1089003d4
new file mode 100644
index 0000000..4593dd0
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/f/9/f9f49497f95afd327db7a7a512612aa1089003d4
@@ -0,0 +1,3 @@
+
+4squid:S2386!"Make this member "protected".(Ꙗ
+Nsquid:S1135+"2Complete the task associated to this TODO comment.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/f/a/faa5b9114b67165e5e7467e0adf7a86b9d4335af b/src/.idea/sonarlint/issuestore/f/a/faa5b9114b67165e5e7467e0adf7a86b9d4335af
new file mode 100644
index 0000000..9508c8e
--- /dev/null
+++ b/src/.idea/sonarlint/issuestore/f/a/faa5b9114b67165e5e7467e0adf7a86b9d4335af
@@ -0,0 +1,310 @@
+
+rsquid:S00115H"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115b"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115s"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+Qsquid:S1118":Add a private constructor to hide the implicit public one.(
+ksquid:S00101"MRename this class name to match the regular expression '^[A-Z][a-zA-Z0-9]*$'.(
+wsquid:S00115-"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ס
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115F"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+Wsquid:S1118":Add a private constructor to hide the implicit public one.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S001156"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ύ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(͗
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S001157"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ܦ
+Wsquid:S1118":Add a private constructor to hide the implicit public one.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ӥ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(˨
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Г
+wsquid:S00115)"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ksquid:S00101"MRename this class name to match the regular expression '^[A-Z][a-zA-Z0-9]*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(&
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ˑ
+rsquid:S00115`"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ޙ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ɠ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+Wsquid:S1118":Add a private constructor to hide the implicit public one.(
+wsquid:S00115c"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ү
+rsquid:S00115l"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115Y"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ԉ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ˬ
+wsquid:S00115+"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(磆
+wsquid:S00115;"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S001151"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ֺ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ƌ
+jsquid:S00101"MRename this class name to match the regular expression '^[A-Z][a-zA-Z0-9]*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115
"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ķ=
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ǩ
+rsquid:S00115r"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115R"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115n"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115|"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ˁ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ʻ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ġ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+Qsquid:S1118_":Add a private constructor to hide the implicit public one.(
+wsquid:S00115P"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ώ
+rsquid:S00115o"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ӽ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115&"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ŝ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(欢
+Wsquid:S1118":Add a private constructor to hide the implicit public one.(
+wsquid:S00115w"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ksquid:S00101"MRename this class name to match the regular expression '^[A-Z][a-zA-Z0-9]*$'.(
+wsquid:S00115E"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Έ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115e"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(縒
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ց
+rsquid:S00115q"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ɐ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ۊտ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ͷ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ƣ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(̥
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115h"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115?"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(眑
+wsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115/"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+qsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(3
+wsquid:S00115D"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(㍘
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Κ
+wsquid:S00115>"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(쯡
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ϊ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ל
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+qsquid:S00115("ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(U
+rsquid:S00115L"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ħ
+ksquid:S00101"MRename this class name to match the regular expression '^[A-Z][a-zA-Z0-9]*$'.(
+Rsquid:S1118":Add a private constructor to hide the implicit public one.(
+wsquid:S00115z"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115j"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(¥
+fsquid:S00101"MRename this class name to match the regular expression '^[A-Z][a-zA-Z0-9]*$'.(
+wsquid:S00115V"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ӌ
+rsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(`
+rsquid:S00115I"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ﰯ
+rsquid:S00115i"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+Vsquid:S1118":Add a private constructor to hide the implicit public one.(
+qsquid:S00115B"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+Vsquid:S1118":Add a private constructor to hide the implicit public one.(ı
+wsquid:S00115d"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+qsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ݰ)
+rsquid:S00115N"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ҹ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ɋ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ʁ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115O"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S001150"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115["ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115{"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ڟ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(э
+rsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115v"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ksquid:S00101"MRename this class name to match the regular expression '^[A-Z][a-zA-Z0-9]*$'.(
+wsquid:S00115="ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115J"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115g"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Дڰ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115A"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+jsquid:S00101"MRename this class name to match the regular expression '^[A-Z][a-zA-Z0-9]*$'.(ı
+ksquid:S00101"MRename this class name to match the regular expression '^[A-Z][a-zA-Z0-9]*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Q
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115]"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115!"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(˯
+wsquid:S00115#"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115<"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S001159"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ˑ
+wsquid:S00115%"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ڢ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(舛
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S001152"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S001155"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115C"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115T"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115k"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ҹ
+wsquid:S00115*"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+Qsquid:S1118
+":Add a private constructor to hide the implicit public one.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ê
+Wsquid:S1118":Add a private constructor to hide the implicit public one.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ή
+rsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(y
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Բ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ܔ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(˛
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ȴ
+wsquid:S00115W"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ڀ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S001153"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Б
+rsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(;
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+esquid:S00101"MRename this class name to match the regular expression '^[A-Z][a-zA-Z0-9]*$'.(
+wsquid:S00115y"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115""ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115Z"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115K"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ȭ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+jsquid:S00101"MRename this class name to match the regular expression '^[A-Z][a-zA-Z0-9]*$'.(
+rsquid:S00115a"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(͙
+rsquid:S00115:"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ŋ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ȋ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115M"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+Wsquid:S1118":Add a private constructor to hide the implicit public one.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ݭ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ԩ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115'"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115X"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115u"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ǡ
+rsquid:S001158"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115,"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(R
+rsquid:S00115S"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(õ
+wsquid:S00115m"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115t"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+qsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(V
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115@"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ϟ
+wsquid:S00115$"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115 "ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ݩ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ܓ
+wsquid:S001154"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115p"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ī
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ԑ
+wsquid:S00115~"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ș
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ռ
+esquid:S00101_"MRename this class name to match the regular expression '^[A-Z][a-zA-Z0-9]*$'.(
+rsquid:S00115\"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115f"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Å
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ƙ
+Vsquid:S1118":Add a private constructor to hide the implicit public one.(
+rsquid:S00115}"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115x"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115Q"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(}
+rsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+wsquid:S00115G"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ˀ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ϊ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(䖵
+rsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ŗ
+xsquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(ȉ
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+ssquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(Ձ
+rsquid:S00115."ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
+rsquid:S00115U"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(
\ No newline at end of file
diff --git a/src/.idea/sonarlint/issuestore/f/b/fbe173ef2694d586a7b41b5ac2a215ec059cfd9d b/src/.idea/sonarlint/issuestore/f/b/fbe173ef2694d586a7b41b5ac2a215ec059cfd9d
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/f/d/fd84d34ddb4562626a9a4fce352ee3d6bf227f36 b/src/.idea/sonarlint/issuestore/f/d/fd84d34ddb4562626a9a4fce352ee3d6bf227f36
new file mode 100644
index 0000000..e69de29
diff --git a/src/.idea/sonarlint/issuestore/index.pb b/src/.idea/sonarlint/issuestore/index.pb
index 78760b9..9cfa8dd 100644
--- a/src/.idea/sonarlint/issuestore/index.pb
+++ b/src/.idea/sonarlint/issuestore/index.pb
@@ -39,12 +39,6 @@ o
?app/build/intermediates/incremental/mergeDebugAssets/merger.xml,f\d\fd84d34ddb4562626a9a4fce352ee3d6bf227f36
v
Fapp/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml,1\9\195457f80fe77aee82c7981245960ace9897844d
-
-Tapp/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml,1\5\15262b14287453dfdd568b53c679c96489ff712a
-
-bapp/build/intermediates/incremental/mergeDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml,e\d\ed4114a5fbd5eab92fa34bb16a764c3c403713c3
-
-bapp/build/intermediates/incremental/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml,d\d\ddf7e485f1a6e18292ba6c834604ece6f235c136
Sapp/build/intermediates/incremental/mergeDebugResources/compile-file-map.properties,b\9\b97ec49041e7d949c26293070e8a636dba8c7b33
r
@@ -227,8 +221,6 @@ L
.idea/codeStyles/Project.xml,6\e\6ecd6000a7b6f4a2884412ff19f74193ed089648
m
=.idea/libraries/Gradle__org_apache_http_legacy_android_28.xml,2\3\23d845ae48d9f7933da477888d2ec1ecab7d087d
-S
-#.idea/sonarlint/issuestore/index.pb,9\f\9fe84ebb15faf917b7def6236dba604453cc61e0
7
gradlew,5\b\5bbfa66edb4db3c7c33c5181f43510990d3307f9
;
@@ -292,4 +284,6 @@ F
E
res/values/colors.xml,0\7\076d9a9f50d958ed4240ead8b0a881a0a611d93b
E
-res/values/arrays.xml,f\1\f14340b1cdc7033b88ff3f931e5d407f2121d97d
\ No newline at end of file
+res/values/arrays.xml,f\1\f14340b1cdc7033b88ff3f931e5d407f2121d97d
+m
+=.idea/libraries/Gradle__org_apache_http_legacy_android_23.xml,4\8\4854f8281cef9fc5f37d09fbdefd985de87829bc
\ No newline at end of file
diff --git a/src/.idea/workspace.xml b/src/.idea/workspace.xml
index d732034..00cd361 100644
--- a/src/.idea/workspace.xml
+++ b/src/.idea/workspace.xml
@@ -5,11 +5,141 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -20,37 +150,99 @@
+
+
+
+
+
+
+
+
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -61,21 +253,79 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -87,13 +337,16 @@
WrongNoteIDe.printStackTrace();TextNote
- finishLog.esetNoteValueTAGincrease_folder_count_on_updatecreateNoteTable
- getInstance
+ finish
+ /*
+ getread
+ mHelper
+ //WRONGNOTEID
@@ -117,21 +370,28 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
@@ -147,12 +407,12 @@
-
+
-
-
+
+
@@ -300,7 +560,17 @@
-
+
+
+
+
+
+
+
+
+
+
+
@@ -353,6 +623,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -363,6 +654,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +674,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -381,16 +745,22 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -554,20 +927,132 @@
1568887009467
- 1568942719673
+ 1570153335161
- 1568942719673
+ 1570153335161
-
- 1568943282822
+
+ 1570153543453
- 1568943282823
+ 1570153543453
-
+
+ 1570155219556
+
+
+
+ 1570155219556
+
+
+ 1570156330002
+
+
+
+ 1570156330002
+
+
+ 1570157121300
+
+
+
+ 1570157121300
+
+
+ 1570157220802
+
+
+
+ 1570157220802
+
+
+ 1570349930109
+
+
+
+ 1570349930109
+
+
+ 1570415309983
+
+
+
+ 1570415309983
+
+
+ 1570415320408
+
+
+
+ 1570415320408
+
+
+ 1570526658806
+
+
+
+ 1570526658806
+
+
+ 1570527314775
+
+
+
+ 1570527314775
+
+
+ 1570527902675
+
+
+
+ 1570527902675
+
+
+ 1570673666384
+
+
+
+ 1570673666384
+
+
+ 1570707769289
+
+
+
+ 1570707769289
+
+
+ 1570708781459
+
+
+
+ 1570708781459
+
+
+ 1570711767343
+
+
+
+ 1570711767343
+
+
+ 1570713580258
+
+
+
+ 1570713580258
+
+
+ 1570755488920
+
+
+
+ 1570755488920
+
+
@@ -582,33 +1067,34 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
+
+
@@ -622,30 +1108,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
+
-
-
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -707,202 +1174,89 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -913,77 +1267,226 @@
-
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
diff --git a/src/app/app.iml b/src/app/app.iml
index fc75edd..917ced9 100644
--- a/src/app/app.iml
+++ b/src/app/app.iml
@@ -87,7 +87,8 @@
-
+
+
\ No newline at end of file
diff --git a/src/app/build.gradle b/src/app/build.gradle
index aee5e89..e5a9b07 100644
--- a/src/app/build.gradle
+++ b/src/app/build.gradle
@@ -1,9 +1,9 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 21
+ compileSdkVersion 23
buildToolsVersion "29.0.2"
- //useLibrary 'org.apache.http.legacy'
+ useLibrary 'org.apache.http.legacy'
defaultConfig {
applicationId "net.micode.notes"
diff --git a/src/app/build/intermediates/dex/debug/mergeDexDebug/out/classes.dex b/src/app/build/intermediates/dex/debug/mergeDexDebug/out/classes.dex
index dcb13a2..292beb5 100644
Binary files a/src/app/build/intermediates/dex/debug/mergeDexDebug/out/classes.dex and b/src/app/build/intermediates/dex/debug/mergeDexDebug/out/classes.dex differ
diff --git a/src/app/build/intermediates/incremental/mergeDebugResources/compile-file-map.properties b/src/app/build/intermediates/incremental/mergeDebugResources/compile-file-map.properties
index b623d26..1096fdc 100644
--- a/src/app/build/intermediates/incremental/mergeDebugResources/compile-file-map.properties
+++ b/src/app/build/intermediates/incremental/mergeDebugResources/compile-file-map.properties
@@ -1,4 +1,4 @@
-#Wed Sep 18 09:58:01 CST 2019
+#Thu Oct 10 21:13:48 CST 2019
C\:\\Project\\minote\\src\\app\\src\\main\\res\\layout\\note_list_dropdown_menu.xml=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\layout_note_list_dropdown_menu.xml.flat
C\:\\Project\\minote\\src\\app\\src\\main\\res\\layout\\add_account_text.xml=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\layout_add_account_text.xml.flat
C\:\\Project\\minote\\src\\app\\src\\main\\res\\drawable-hdpi\\icon_app.png=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi_icon_app.png.flat
@@ -73,16 +73,16 @@ C\:\\Project\\minote\\src\\app\\src\\main\\res\\drawable-hdpi\\title_alert.png=C
C\:\\Project\\minote\\src\\app\\src\\main\\res\\drawable-hdpi\\bg_btn_set_color.png=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi_bg_btn_set_color.png.flat
C\:\\Project\\minote\\src\\app\\src\\main\\res\\drawable-hdpi\\edit_title_blue.9.png=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi_edit_title_blue.9.png.flat
C\:\\Project\\minote\\src\\app\\src\\main\\res\\drawable-hdpi\\list_yellow_up.9.png=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi_list_yellow_up.9.png.flat
-C\:\\Project\\minote\\src\\app\\src\\main\\res\\drawable-hdpi\\menu_delete.png=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi_menu_delete.png.flat
C\:\\Project\\minote\\src\\app\\src\\main\\res\\drawable-hdpi\\list_red_up.9.png=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi_list_red_up.9.png.flat
-C\:\\Project\\minote\\src\\app\\src\\main\\res\\raw-zh-rCN\\introduction=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\raw-zh-rCN_introduction.flat
+C\:\\Project\\minote\\src\\app\\src\\main\\res\\drawable-hdpi\\menu_delete.png=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi_menu_delete.png.flat
C\:\\Project\\minote\\src\\app\\src\\main\\res\\drawable-hdpi\\list_yellow_middle.9.png=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi_list_yellow_middle.9.png.flat
+C\:\\Project\\minote\\src\\app\\src\\main\\res\\raw-zh-rCN\\introduction=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\raw-zh-rCN_introduction.flat
C\:\\Project\\minote\\src\\app\\src\\main\\res\\layout\\note_edit.xml=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\layout_note_edit.xml.flat
C\:\\Project\\minote\\src\\app\\src\\main\\res\\drawable-hdpi\\list_red_middle.9.png=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi_list_red_middle.9.png.flat
C\:\\Project\\minote\\src\\app\\src\\main\\res\\drawable-hdpi\\edit_green.9.png=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi_edit_green.9.png.flat
C\:\\Project\\minote\\src\\app\\src\\main\\res\\layout\\settings_header.xml=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\layout_settings_header.xml.flat
-C\:\\Project\\minote\\src\\app\\src\\main\\res\\menu\\sub_folder.xml=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\menu_sub_folder.xml.flat
C\:\\Project\\minote\\src\\app\\src\\main\\res\\drawable-hdpi\\list_yellow_down.9.png=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi_list_yellow_down.9.png.flat
+C\:\\Project\\minote\\src\\app\\src\\main\\res\\menu\\sub_folder.xml=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\menu_sub_folder.xml.flat
C\:\\Project\\minote\\src\\app\\src\\main\\res\\layout\\note_list.xml=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\layout_note_list.xml.flat
C\:\\Project\\minote\\src\\app\\src\\main\\res\\drawable-hdpi\\title_bar_bg.9.png=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi_title_bar_bg.9.png.flat
C\:\\Project\\minote\\src\\app\\src\\main\\res\\drawable-hdpi\\widget_2x_white.png=C\:\\Project\\minote\\src\\app\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi_widget_2x_white.png.flat
diff --git a/src/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml b/src/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml
deleted file mode 100644
index d65e0cc..0000000
--- a/src/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
- 短信
- 邮件
-
-
- %1$s 条符合“%2$s”的搜索结果
-
- 确认删除文件夹及所包含的便签吗?
- 确认要删除该条便签吗?
- 确认要删除所选的 %d 条便签吗?
- 删除
- 便签
- 便签2x2
- 便签4x4
- 删除
- 通话便签
- 取消
- 设置
- 成功删除提醒
- 不能为空便签设置闹钟提醒
- 不能将空便签发送到桌面
- 要查看的便签不存在
- 导出文本时发生错误,请检查SD卡
- SD卡被占用,不能操作
- 同步已取消
- 同步失败,发生内部错误
- 同步失败,请检查网络和帐号设置
- 导出失败
- 文件夹 %1$s 已存在,请重新命名
- yyyyMMdd
- MM月dd日 kk:mm
- 已将文本文件(%1$s)输出至SD卡(%2$s)目录
- 已将所选 %1$d 条便签移到 %2$s 文件夹
- 请输入名称
- 已添加到桌面
- 提醒我
- 新建文件夹
- 删除
- 取消全选
- 导出文本
- 修改文件夹名称
- 刪除文件夹
- 查看文件夹
- 大
- 正常
- 文字大小
- 小
- 超大
- 进入清单模式
- 移动到文件夹
- 上一级文件夹
- 退出清单模式
- 删除提醒
- 搜索
- 全选
- 没有选中项,操作无效
- 选中了 %d 项
- 发送到桌面
- 设置
- 分享
- 同步
- 取消同步
- 选择文件夹
- 已过期
- 发送邮件
- 打开地图
- 呼叫电话
- 浏览网页
- 查看
- 知道了
- 新建便签
- ...
- 与google task同步便签记录
- 同步账号
- 添加账号
- 新建便签背景颜色随机
- 取消同步
- 立即同步
- 当前帐号 %1$s
- 如更换同步帐号,过去的帐号同步信息将被清空,再次切换的同时可能会造成数据重复
- 请选择google帐号,便签将与该帐号的google task内容同步。
- 同步便签
- 上次同步于 %1$s
- 取消
- 更换账号
- 删除账号
- 设置
- 正在同步中,不能修改同步帐号
- 同步帐号已设置为%1$s
- 便签
- 搜索便签
- 正在搜索便签
- 便签中的文字
- 创建提醒
- 导出成功
- 与%1$s同步成功
- 正在获取服务器便签列表...
- 登录%1$s...
- 正在同步本地便签...
- 同步已取消
- 同步失败
- 同步成功
- 同步便签...
- 没有关联内容,点击新建便签。
- 访客模式下,便签内容不可见
-
\ No newline at end of file
diff --git a/src/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml b/src/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml
deleted file mode 100644
index 226b5bc..0000000
--- a/src/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
- 短信
- 郵件
-
-
- %1$s 條符合”%2$s“的搜尋結果
-
- 確認刪除檔夾及所包含的便簽嗎?
- 确认要删除該條便籤嗎?
- 确认要刪除所選的 %d 條便籤嗎?
- 刪除
- 便簽
- 便簽2x2
- 便簽4x4
- 刪除
- 通話便籤
- 取消
- 設置
- 成功刪除提醒
- 不能爲空便籤設置鬧鐘提醒
- 不能將空便籤發送到桌面
- 要查看的便籤不存在
- 導出TXT時發生錯誤,請檢查SD卡
- SD卡被佔用,不能操作
- 同步已取消
- 同步失敗,發生內部錯誤
- 同步失敗,請檢查網絡和帳號設置
- 導出失敗
- 文件夾 %1$s 已存在,請重新命名
- yyyyMMdd
- MM月dd日 kk:mm
- 已將文本文件(%1$s)導出至SD(%2$s)目錄
- 已將所選 %1$d 便籤移到 %2$s 文件夾
- 請輸入名稱
- 已添加到桌面
- 提醒我
- 新建文件夾
- 刪除
- 取消全選
- 導出文本
- 修改文件夾名稱
- 刪除文件夾
- 查看文件夾
- 大
- 正常
- 文字大小
- 小
- 超大
- 進入清單模式
- 移動到文件夾
- 上一級文件夾
- 退出清單模式
- 刪除提醒
- 搜尋
- 全選
- 沒有選中項,操作無效
- 選中了 %d 項
- 發送到桌面
- 設置
- 分享
- 同步
- 取消同步
- 選擇文件夾
- 已過期
- 發送郵件
- 打開地圖
- 呼叫電話
- 浏覽網頁
- 查看
- 知道了
- 新建便簽
- ...
- 与google task同步便簽記錄
- 同步賬號
- 添加賬號
- 新建便籤背景顏色隨機
- 取消同步
- 立即同步
- 當前帳號 %1$s
- 如更換同步帳號,過去的帳號同步信息將被清空,再次切換的同時可能會造成數據重復
- 請選擇google帳號,便簽將與該帳號的google task內容同步。
- 同步便簽
- 上次同步于 %1$s
- 取消
- 更換賬號
- 刪除賬號
- 設置
- 正在同步中,不能修改同步帳號
- 同步帳號已設置為%1$s
- 便籤
- 搜索便籤
- 正在搜索便籤
- 便籤中的文字
- 創建提醒
- 導出成功
- 與%1$s同步成功
- 正在獲取服務器便籤列表...
- 登陸%1$s...
- 正在同步本地便籤...
- 同步已取消
- 同步失敗
- 同步成功
- 同步便簽...
- 沒有關聯內容,點擊新建便簽。
- 訪客模式下,便籤內容不可見
-
\ No newline at end of file
diff --git a/src/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml b/src/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml
deleted file mode 100644
index dfa7135..0000000
--- a/src/app/build/intermediates/incremental/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/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt b/src/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt
index 7b9181a..e4cecd1 100644
--- a/src/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt
+++ b/src/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt
@@ -1,4 +1,4 @@
-#Fri Sep 20 21:07:44 CST 2019
+#Thu Oct 10 21:13:54 CST 2019
base.0=C\:\\Project\\minote\\src\\app\\build\\intermediates\\dex\\debug\\mergeDexDebug\\out\\classes.dex
path.0=classes.dex
renamed.0=classes.dex
diff --git a/src/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/dPcwR9oS2EmiImbvDZ1Qg_iwk3M= b/src/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/dPcwR9oS2EmiImbvDZ1Qg_iwk3M=
index 707cd6c..65acdc7 100644
Binary files a/src/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/dPcwR9oS2EmiImbvDZ1Qg_iwk3M= and b/src/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/dPcwR9oS2EmiImbvDZ1Qg_iwk3M= differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper.class
index 8cab7ce..e29e029 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class
index 632751a..bddd5bd 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class
index c7a4cec..3b744a9 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class
index 95fa8a5..93827f8 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmReceiver.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmReceiver.class
index b29a318..ce49ab1 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmReceiver.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmReceiver.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class
index ba8f5f9..0fc67fe 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class
index 7284dbf..06467d8 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class
index 700be7e..0944119 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class
index 5bd5d69..ebfea90 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class
index bf1f325..973482e 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class
index d7d0fc9..622a07c 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class
index 7e01406..c21a589 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class
index f3d88ce..6aae154 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class
index 6ffb6ee..2da1fdf 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class
index 045dd2a..510c16a 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class
index 664dcbb..95971e4 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class
index 5d985f6..eca34ca 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class
index 39ffb21..fc6532d 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class
index 6e98dbb..d9093e1 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class
index 250f431..ec4c8a2 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class
index 88a92d9..80a10fc 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class
index a9bdef5..311ffbd 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class
index 7a20028..b622fad 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class
index 0930bf9..1d54799 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class
index 8d35c85..eaf03dd 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class
index de885be..5028811 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class
index c677232..9cb9364 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class
index 48e3ed4..9b250c5 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class differ
diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class
index c161d09..f9cce1d 100644
Binary files a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class differ
diff --git a/src/app/build/intermediates/processed_res/debug/processDebugResources/out/resources-debug.ap_ b/src/app/build/intermediates/processed_res/debug/processDebugResources/out/resources-debug.ap_
index bf79472..ebce16c 100644
Binary files a/src/app/build/intermediates/processed_res/debug/processDebugResources/out/resources-debug.ap_ and b/src/app/build/intermediates/processed_res/debug/processDebugResources/out/resources-debug.ap_ differ
diff --git a/src/app/build/intermediates/res/merged/debug/raw-zh-rCN_introduction.flat b/src/app/build/intermediates/res/merged/debug/raw-zh-rCN_introduction.flat
index 6fc43d0..71a8498 100644
Binary files a/src/app/build/intermediates/res/merged/debug/raw-zh-rCN_introduction.flat and b/src/app/build/intermediates/res/merged/debug/raw-zh-rCN_introduction.flat differ
diff --git a/src/app/build/intermediates/res/merged/debug/raw_introduction.flat b/src/app/build/intermediates/res/merged/debug/raw_introduction.flat
index 26985f0..49ef2cb 100644
Binary files a/src/app/build/intermediates/res/merged/debug/raw_introduction.flat and b/src/app/build/intermediates/res/merged/debug/raw_introduction.flat differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/data/NotesDatabaseHelper.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/data/NotesDatabaseHelper.dex
index 7708f89..e967871 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/data/NotesDatabaseHelper.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/data/NotesDatabaseHelper.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/data/NotesProvider.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/data/NotesProvider.dex
index 5af93e6..a645207 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/data/NotesProvider.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/data/NotesProvider.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/model/WorkingNote.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/model/WorkingNote.dex
index 61f74ee..472acc8 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/model/WorkingNote.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/model/WorkingNote.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/AlarmAlertActivity.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/AlarmAlertActivity.dex
index d380f44..9e60dd7 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/AlarmAlertActivity.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/AlarmAlertActivity.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/AlarmReceiver.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/AlarmReceiver.dex
index e9e16ab..390be47 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/AlarmReceiver.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/AlarmReceiver.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity$1.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity$1.dex
index 19e2b78..f84c3c5 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity$1.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity$1.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity$2.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity$2.dex
index a329ef3..3b60872 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity$2.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity$2.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity$3.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity$3.dex
index 3edc60b..affa22f 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity$3.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity$3.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex
index 2be27a8..c7b2b05 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity.dex
index 66ff66e..35e57c6 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NoteEditActivity.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$1.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$1.dex
index 1ca5c95..0f3b72c 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$1.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$1.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$2.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$2.dex
index 177afcb..029b1ec 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$2.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$2.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$3.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$3.dex
index c0bad0c..142c1f5 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$3.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$3.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$4.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$4.dex
index 1172983..23579a4 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$4.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$4.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$5.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$5.dex
index 716d4f4..1c1c175 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$5.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$5.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$6.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$6.dex
index 0fe5fd0..29f4acb 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$6.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$6.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$7.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$7.dex
index 6e6c7ab..e218877 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$7.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$7.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$8.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$8.dex
index 28e3ec0..d0780c1 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$8.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$8.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$9.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$9.dex
index dbb01b2..1de3fd5 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$9.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$9.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex
index 4acfa8b..61e13a4 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$ListEditState.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$ListEditState.dex
index d80075b..f013473 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$ListEditState.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$ListEditState.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex
index 9f450e8..9b2dd51 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex
index d335a0c..cf1659d 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$ModeCallback.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$ModeCallback.dex
index b53c525..98cec69 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$ModeCallback.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$ModeCallback.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex
index a9a486a..83e641e 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex
index f093433..93b2cc8 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity.dex
index 612b400..4862235 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListActivity.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.dex
index f5ba12e..9c9633b 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.dex differ
diff --git a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListAdapter.dex b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListAdapter.dex
index ac6b452..cff6853 100644
Binary files a/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListAdapter.dex and b/src/app/build/intermediates/transforms/dexBuilder/debug/0/net/micode/notes/ui/NotesListAdapter.dex differ
diff --git a/src/app/build/outputs/apk/debug/app-debug.apk b/src/app/build/outputs/apk/debug/app-debug.apk
index 76e709b..21966d9 100644
Binary files a/src/app/build/outputs/apk/debug/app-debug.apk and b/src/app/build/outputs/apk/debug/app-debug.apk differ
diff --git a/src/app/src/main/java/net/micode/notes/data/Notes.java b/src/app/src/main/java/net/micode/notes/data/Notes.java
index 02e8541..49569c5 100644
--- a/src/app/src/main/java/net/micode/notes/data/Notes.java
+++ b/src/app/src/main/java/net/micode/notes/data/Notes.java
@@ -19,9 +19,13 @@ package net.micode.notes.data;
import android.net.Uri;
public class 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;
/**
@@ -51,15 +55,11 @@ public class Notes {
public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE;
}
- /**
- * Uri to query all notes and folders
- */
+
//获取便签表的URI,用于查找
public static final Uri CONTENT_NOTE_URI = Uri.parse("content://" + AUTHORITY + "/note");
- /**
- * Uri to query data
- */
+
//获取数据表的URI,用于查找数据
public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + AUTHORITY + "/data");
diff --git a/src/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java b/src/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java
index 10e2f8f..d547fc3 100644
--- a/src/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java
+++ b/src/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java
@@ -29,13 +29,15 @@ import net.micode.notes.data.Notes.NoteColumns;
/**
* 该类继承了SQLiteOpenHelper类,对SQLlite数据库进行操作
- *
*/
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";
@@ -53,16 +55,16 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
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.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.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.SYNC_ID + " INTEGER NOT NULL DEFAULT 0," +//同步id
+ 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" +
@@ -72,9 +74,9 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
"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.NOTE_ID + " INTEGER NOT NULL DEFAULT 0," +//便签id
+ 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," +
@@ -101,6 +103,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
/**
* 当从文件夹中移除便签时,减少便签数量
+ * SQL语句,对数据库进行操作
*/
private static final String NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER =
"CREATE TRIGGER decrease_folder_count_on_update " +
@@ -243,15 +246,25 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
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();
@@ -268,10 +281,11 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
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);
@@ -292,9 +306,12 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
* @ db SQL数据库
* */
public void createDataTable(SQLiteDatabase db) {
+ //在数据库中创建数据表项
db.execSQL(CREATE_DATA_TABLE_SQL);
+ //如果发生更改,重建数据库
reCreateDataTableTriggers(db);
db.execSQL(CREATE_DATA_NOTE_ID_INDEX_SQL);
+ //如果数据表已经被创建,向日志中加入调试信息
Log.d(TAG, "data table has been created");
}
@@ -307,8 +324,10 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_update");
db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_delete");
+ //更新数据库当便签内容改变时
db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER);
db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER);
+ //删除便签内容
db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER);
}
@@ -394,7 +413,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
// add a column for gtask id
db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.GTASK_ID
+ " TEXT NOT NULL DEFAULT ''");
- // add a trash system folder
+ // 添加垃圾文件夹(系统)
ContentValues values = new ContentValues();
values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER);
values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM);
diff --git a/src/app/src/main/java/net/micode/notes/data/NotesProvider.java b/src/app/src/main/java/net/micode/notes/data/NotesProvider.java
index f98db79..27d17be 100644
--- a/src/app/src/main/java/net/micode/notes/data/NotesProvider.java
+++ b/src/app/src/main/java/net/micode/notes/data/NotesProvider.java
@@ -35,27 +35,33 @@ import net.micode.notes.data.Notes.NoteColumns;
import net.micode.notes.data.NotesDatabaseHelper.TABLE;
/**
- *
+ *定义便签提供者类
*/
public class NotesProvider extends ContentProvider {
private static final UriMatcher mMatcher;
+ //数据库操作
private NotesDatabaseHelper mHelper;
+ //日志标识
private static final String TAG = "NotesProvider";
+ //便签类uri标识
private static final int URI_NOTE = 1;
+ //便签项类uri标识
private static final int URI_NOTE_ITEM = 2;
+ //数据类uri标识
private static final int URI_DATA = 3;
+ //数据项类uri标识
private static final int URI_DATA_ITEM = 4;
+ //用于查询的uri标识
private static final int URI_SEARCH = 5;
private static final int URI_SEARCH_SUGGEST = 6;
static {
- //初始化UriMatcher对象,初始不匹配任何东西
mMatcher = new UriMatcher(UriMatcher.NO_MATCH);
- //注册uri,# - 通配符
+ //向数据库中添加一系列uri,用于存放便签、数据
mMatcher.addURI(Notes.AUTHORITY, "note", URI_NOTE);
mMatcher.addURI(Notes.AUTHORITY, "note/#", URI_NOTE_ITEM);
mMatcher.addURI(Notes.AUTHORITY, "data", URI_DATA);
@@ -83,51 +89,64 @@ public class NotesProvider extends ContentProvider {
+ " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER
+ " AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE;
+ //重写onCreate方法,实例化类时调用
+ //获取便签数据库
@Override
public boolean onCreate() {
+ //实例化NotesDatabaseHelper,实现对数据库的使用
mHelper = NotesDatabaseHelper.getInstance(getContext());
+ //成功,返回true,否则异常
return true;
}
- /**
- * 该方法重写了query方法,用于在数据库中查找notes或者data
- */
+ //重写查询方法
+ //@ selection 查询条件,之前的字符串常量
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
String sortOrder) {
+ //游标置空
Cursor c = null;
- //创建可读数据库
+ //以可读方式打开数据库
SQLiteDatabase db = mHelper.getReadableDatabase();
String id = null;
- //根据uri匹配的返回码,查找不同的数据表
+ //选择判断uri
switch (mMatcher.match(uri)) {
+ //如果是便签类uri
case URI_NOTE:
+ //在数据库中执行查询操作
c = db.query(TABLE.NOTE, projection, selection, selectionArgs, null, null,
sortOrder);
break;
+ //如果是便签项类uri
case URI_NOTE_ITEM:
id = uri.getPathSegments().get(1);
c = db.query(TABLE.NOTE, projection, NoteColumns.ID + "=" + id
+ parseSelection(selection), selectionArgs, null, null, sortOrder);
break;
+ //如果是数据类uri
case URI_DATA:
c = db.query(TABLE.DATA, projection, selection, selectionArgs, null, null,
sortOrder);
break;
+ //如果是数据项类uri
case URI_DATA_ITEM:
id = uri.getPathSegments().get(1);
c = db.query(TABLE.DATA, projection, DataColumns.ID + "=" + id
+ parseSelection(selection), selectionArgs, null, null, sortOrder);
break;
+ //如果是查询类uri或者条件查询类uri
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);
}
@@ -135,21 +154,23 @@ public class NotesProvider extends ContentProvider {
searchString = uri.getQueryParameter("pattern");
}
+ //如果内容为空,返回null
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:
- //抛出异常,uri未知
+ //uri错误时抛出异常
throw new IllegalArgumentException("Unknown URI " + uri);
}
if (c != null) {
@@ -158,39 +179,42 @@ public class NotesProvider extends ContentProvider {
return c;
}
- /**
- * 该方法重写了insert方法,用于在数据表中插入notes或者data
- */
+ //该方法实现了向特定uri地址插入内容
@Override
public Uri insert(Uri uri, ContentValues values) {
- //创建可读写数据库
+ //以写入方式打开数据库
SQLiteDatabase db = mHelper.getWritableDatabase();
+ //定义时间、便签、插入的id标识
long dataId = 0, noteId = 0, insertedId = 0;
- //根据uri匹配的返回码,将数据插入不同的数据表
switch (mMatcher.match(uri)) {
+ //如果是便签类
case URI_NOTE:
- //@ values 待插入的元素
+ //向数据库中插入
insertedId = noteId = db.insert(TABLE.NOTE, null, values);
break;
+ //如果是数据类
case URI_DATA:
+ //判断是否存在该便签的id
if (values.containsKey(DataColumns.NOTE_ID)) {
noteId = values.getAsLong(DataColumns.NOTE_ID);
} else {
- //将调试信息写入日志,没有id的错误数据格式
+ //如果不存在,报错
+ //将调试信息写入日志
Log.d(TAG, "Wrong data format without note id:" + values.toString());
}
insertedId = dataId = db.insert(TABLE.DATA, null, values);
break;
default:
+ //uri无效,抛出异常
throw new IllegalArgumentException("Unknown URI " + uri);
}
- // Notify the note uri
+ // 通知便签uri
if (noteId > 0) {
getContext().getContentResolver().notifyChange(
ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), null);
}
- // Notify the data uri
+ // 告知数据uri
if (dataId > 0) {
getContext().getContentResolver().notifyChange(
ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId), null);
@@ -199,24 +223,27 @@ public class NotesProvider extends ContentProvider {
return ContentUris.withAppendedId(uri, insertedId);
}
+ //重写删除方法,根据选择条件删除指定内容
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int count = 0;
String id = null;
+ //以可读方式打开数据库
SQLiteDatabase db = mHelper.getWritableDatabase();
+ //创建是否删除标识
boolean deleteData = false;
switch (mMatcher.match(uri)) {
case URI_NOTE:
+ //选择条件
selection = "(" + selection + ") AND " + NoteColumns.ID + ">0 ";
+ //count - 删除的便签数量
count = db.delete(TABLE.NOTE, selection, selectionArgs);
break;
case URI_NOTE_ITEM:
id = uri.getPathSegments().get(1);
- /**
- * ID that smaller than 0 is system folder which is not allowed to
- * trash
- */
+
long noteId = Long.valueOf(id);
+ //小于0为系统文件夹,不可删除
if (noteId <= 0) {
break;
}
@@ -224,7 +251,9 @@ public class NotesProvider extends ContentProvider {
NoteColumns.ID + "=" + id + parseSelection(selection), selectionArgs);
break;
case URI_DATA:
+ //直接删除
count = db.delete(TABLE.DATA, selection, selectionArgs);
+ //将已删除标记置为true
deleteData = true;
break;
case URI_DATA_ITEM:
@@ -234,10 +263,13 @@ public class NotesProvider extends ContentProvider {
deleteData = true;
break;
default:
+ //uri无效时抛出异常
throw new IllegalArgumentException("Unknown URI " + uri);
}
+ //已经删除
if (count > 0) {
if (deleteData) {
+ //通知发生更改,其他方法收到后执行相应操作
getContext().getContentResolver().notifyChange(Notes.CONTENT_NOTE_URI, null);
}
getContext().getContentResolver().notifyChange(uri, null);
@@ -245,39 +277,51 @@ public class NotesProvider extends ContentProvider {
return count;
}
+ //重写更新方法,更新数据库中的内容
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
int count = 0;
String id = null;
SQLiteDatabase db = mHelper.getWritableDatabase();
+ //创建是否更新标识
+ //false - 未更新
boolean updateData = false;
switch (mMatcher.match(uri)) {
case URI_NOTE:
increaseNoteVersion(-1, selection, selectionArgs);
+ //更新数据库
+ //count - 发生改动的数量
count = db.update(TABLE.NOTE, values, selection, selectionArgs);
break;
case URI_NOTE_ITEM:
id = uri.getPathSegments().get(1);
increaseNoteVersion(Long.valueOf(id), selection, selectionArgs);
+ //更新便签项
count = db.update(TABLE.NOTE, values, NoteColumns.ID + "=" + id
+ parseSelection(selection), selectionArgs);
break;
case URI_DATA:
+ //更新数据
count = db.update(TABLE.DATA, values, selection, selectionArgs);
updateData = true;
break;
case URI_DATA_ITEM:
+ //更新数据项
id = uri.getPathSegments().get(1);
count = db.update(TABLE.DATA, values, DataColumns.ID + "=" + id
+ parseSelection(selection), selectionArgs);
+ //将标识设置为已更新
updateData = true;
break;
default:
+ //uri错误时抛出异常
throw new IllegalArgumentException("Unknown URI " + uri);
}
+ //如果更新时发生改变
if (count > 0) {
if (updateData) {
+ //通知改动,用于其他方法执行相应操作
getContext().getContentResolver().notifyChange(Notes.CONTENT_NOTE_URI, null);
}
getContext().getContentResolver().notifyChange(uri, null);
@@ -289,6 +333,7 @@ public class NotesProvider extends ContentProvider {
return (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : "");
}
+ //私有方法,更新便签版本
private void increaseNoteVersion(long id, String selection, String[] selectionArgs) {
StringBuilder sql = new StringBuilder(120);
sql.append("UPDATE ");
@@ -297,6 +342,8 @@ public class NotesProvider extends ContentProvider {
sql.append(NoteColumns.VERSION);
sql.append("=" + NoteColumns.VERSION + "+1 ");
+ //id > 0 判断是否为系统文件夹
+ //id < 0 系统文件夹
if (id > 0 || !TextUtils.isEmpty(selection)) {
sql.append(" WHERE ");
}
diff --git a/src/app/src/main/java/net/micode/notes/model/Note.java b/src/app/src/main/java/net/micode/notes/model/Note.java
index 1617f91..d79a353 100644
--- a/src/app/src/main/java/net/micode/notes/model/Note.java
+++ b/src/app/src/main/java/net/micode/notes/model/Note.java
@@ -33,9 +33,13 @@ 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 static final String WRONGNOTEID = "Wrong note id:";
@@ -44,20 +48,25 @@ public class Note {
* 返回值为新建的note的Id
*/
public static synchronized long getNewNoteId(Context context, long folderId) {
- // Create a new note in the database
+ // 在数据库中创建新便签
ContentValues values = new ContentValues();
long createdTime = System.currentTimeMillis();
+ //创建时间
values.put(NoteColumns.CREATED_DATE, createdTime);
- values.put(NoteColumns.MODIFIED_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 {
+ //在数据库中为该便签分配id
noteId = Long.valueOf(uri.getPathSegments().get(1));
} catch (NumberFormatException e) {
+ //分配失败,将错误信息记入日志
Log.e(TAG, "Get note id error :" + e.toString());
noteId = 0;
}
@@ -65,21 +74,27 @@ public class Note {
//抛出异常,非法状态,noteId无效
throw new IllegalStateException(WRONGNOTEID + noteId);
}
+ //分配成功,返回便签id
return noteId;
}
+ //构造函数
public Note() {
+ //为mNoteDiffValues与mNoteData初始化
mNoteDiffValues = new ContentValues();
mNoteData = new NoteData();
}
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);
}
@@ -92,6 +107,7 @@ public class Note {
}
public void setCallDataId(long id) {
+ //插入通话记录id
mNoteData.setCallDataId(id);
}
@@ -99,15 +115,19 @@ public class Note {
mNoteData.setCallData(key, value);
}
+ //判断是否在本地修改
public boolean isLocalModified() {
return mNoteDiffValues.size() > 0 || mNoteData.isLocalModified();
}
+ //同步便签的方法
public boolean syncNote(Context context, long noteId) {
if (noteId <= 0) {
+ //note的id小于0时,无效
throw new IllegalArgumentException(WRONGNOTEID + noteId);
}
+ //如果不是本地修改,已经同步,不用再操作,直接返回true
if (!isLocalModified()) {
return true;
}
@@ -117,24 +137,31 @@ public class Note {
* {@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();
+ //当便签修改过但是传入Resolver出错时,无法同步
if (mNoteData.isLocalModified() && (mNoteData.pushIntoContentResolver(context, noteId) == null)) {
+ //同步失败
return false;
}
return true;
}
+ //记录便签内部数据
private class NoteData {
+ //文本内容id
private long mTextDataId;
+ //改动的文本内容
private ContentValues mTextDataValues;
private long mCallDataId;
@@ -143,6 +170,7 @@ public class Note {
private static final String TAG = "NoteData";
+ //构造函数,初始化变量
public NoteData() {
mTextDataValues = new ContentValues();
mCallDataValues = new ContentValues();
@@ -150,24 +178,29 @@ public class Note {
mCallDataId = 0;
}
+ //判断是否为本地修改
boolean isLocalModified() {
return mTextDataValues.size() > 0 || mCallDataValues.size() > 0;
}
+ //设置文本数据id的fangfa
void setTextDataId(long id) {
if(id <= 0) {
+ //id <= 0 不合法的id,抛出异常
throw new IllegalArgumentException("Text data id should larger than 0");
}
mTextDataId = id;
}
void setCallDataId(long id) {
+ //判断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);
diff --git a/src/app/src/main/java/net/micode/notes/model/WorkingNote.java b/src/app/src/main/java/net/micode/notes/model/WorkingNote.java
index c2528ee..51a7e90 100644
--- a/src/app/src/main/java/net/micode/notes/model/WorkingNote.java
+++ b/src/app/src/main/java/net/micode/notes/model/WorkingNote.java
@@ -42,14 +42,19 @@ public class WorkingNote {
// Note mode
private int mMode;
+ //记录闹铃时间
private long mAlertDate;
+ //记录最近更改时间
private long mModifiedDate;
+ //记录背景色ID
private int mBgColorId;
+ //记录Widget Id
private int mWidgetId;
+ //记录Widget类型
private int mWidgetType;
private long mFolderId;
@@ -102,6 +107,7 @@ public class WorkingNote {
private static final int NOTE_MODIFIED_DATE_COLUMN = 5;
// New note construct
+ //构造函数,实例化时调用,创建新便签
private WorkingNote(Context context, long folderId) {
mContext = context;
mAlertDate = 0;
@@ -114,7 +120,7 @@ public class WorkingNote {
mWidgetType = Notes.TYPE_WIDGET_INVALIDE;
}
- // Existing note construct
+ // 已有便签结构
private WorkingNote(Context context, long noteId, long folderId) {
mContext = context;
mNoteId = noteId;
@@ -124,6 +130,7 @@ public class WorkingNote {
loadNote();
}
+ //根据ID加载便签的方法
private void loadNote() {
Cursor cursor = mContext.getContentResolver().query(
ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, mNoteId), NOTE_PROJECTION, null,
@@ -228,6 +235,7 @@ public class WorkingNote {
mNoteSettingStatusListener = l;
}
+ //设置闹铃时间的方法
public void setAlertDate(long date, boolean set) {
if (date != mAlertDate) {
mAlertDate = date;
@@ -238,6 +246,7 @@ public class WorkingNote {
}
}
+ //将便签标记为已删除
public void markDeleted(boolean mark) {
mIsDeleted = mark;
if (mWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID
@@ -246,6 +255,7 @@ public class WorkingNote {
}
}
+ //设置背景色ID
public void setBgColorId(int id) {
if (id != mBgColorId) {
mBgColorId = id;
@@ -256,6 +266,7 @@ public class WorkingNote {
}
}
+ //设置列表模式的方法
public void setCheckListMode(int mode) {
if (mMode != mode) {
if (mNoteSettingStatusListener != null) {
@@ -266,6 +277,7 @@ public class WorkingNote {
}
}
+ //设置Widget类型的方法
public void setWidgetType(int type) {
if (type != mWidgetType) {
mWidgetType = type;
@@ -301,10 +313,12 @@ public class WorkingNote {
return mContent;
}
+ //共有方法,获取闹铃时间
public long getAlertDate() {
return mAlertDate;
}
+ //共有方法,获取最近修改时间
public long getModifiedDate() {
return mModifiedDate;
}
@@ -313,6 +327,7 @@ public class WorkingNote {
return NoteBgResources.getNoteBgResource(mBgColorId);
}
+ //共有方法,获取背景色ID
public int getBgColorId() {
return mBgColorId;
}
@@ -341,6 +356,7 @@ public class WorkingNote {
return mWidgetType;
}
+ //接口,定义了一系列便签设置更改的监听器
public interface NoteSettingChangedListener {
/**
* Called when the background color of current note has just changed
diff --git a/src/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java b/src/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java
index 85723be..a7d01bf 100644
--- a/src/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java
+++ b/src/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java
@@ -46,16 +46,23 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD
private static final int SNIPPET_PREW_MAX_LEN = 60;
MediaPlayer mPlayer;
+ /**
+ * 该方法重写了Activity类的onCreat方法,启动Activity时调用
+ * @ savedInstanceState 如果AlarmAlertActivity被系统意外destroy,取断点值;
+ * 否则为null
+ */
@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
+ 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);
@@ -70,10 +77,12 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD
SNIPPET_PREW_MAX_LEN) + getResources().getString(R.string.notelist_string_info)
: mSnippet;
} catch (IllegalArgumentException e) {
+ //捕获异常并输出
e.printStackTrace();
return;
}
+ //创建新的媒体播放器
mPlayer = new MediaPlayer();
if (DataUtils.visibleInNoteDatabase(getContentResolver(), mNoteId, Notes.TYPE_NOTE)) {
showActionDialog();
@@ -83,6 +92,7 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD
}
}
+ //私有方法,判断屏幕是否亮起
private boolean isScreenOn() {
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
return pm.isScreenOn();
@@ -145,9 +155,10 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD
public void onDismiss(DialogInterface dialog) {
stopAlarmSound();
- finish();
+ finish();//退出当前Activity
}
+ //该方法实现了停止闹钟铃声
private void stopAlarmSound() {
if (mPlayer != null) {
mPlayer.stop();
diff --git a/src/app/src/main/java/net/micode/notes/ui/AlarmReceiver.java b/src/app/src/main/java/net/micode/notes/ui/AlarmReceiver.java
index 54e503b..6988577 100644
--- a/src/app/src/main/java/net/micode/notes/ui/AlarmReceiver.java
+++ b/src/app/src/main/java/net/micode/notes/ui/AlarmReceiver.java
@@ -20,6 +20,9 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
+/*
+* 定义了广播接受类,用于接受广播消息,启动闹铃服务
+* */
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
diff --git a/src/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java b/src/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
index 8be1728..de47ddb 100644
--- a/src/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
+++ b/src/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
@@ -71,10 +71,13 @@ 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;
public ImageView ivAlertIcon;
@@ -84,6 +87,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
public ImageView ibSetBgColor;
}
+ //ResourceParser - tools\ResourceParser.java中的类,用于解析界面元素
private static final Map sBgSelectorBtnsMap = new HashMap();
static {
sBgSelectorBtnsMap.put(R.id.iv_bg_yellow, ResourceParser.YELLOW);
@@ -137,6 +141,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
private SharedPreferences mSharedPrefs;
private int mFontSizeId;
+ //记录默认字体大小
private static final String PREFERENCE_FONT_SIZE = "pref_font_size";
private static final int SHORTCUT_ICON_TITLE_MAX_LEN = 10;
@@ -144,6 +149,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
public static final String TAG_CHECKED = String.valueOf('\u221A');
public static final String TAG_UNCHECKED = String.valueOf('\u25A1');
+ //界面线性单元
private LinearLayout mEditTextList;
private String mUserQuery;
@@ -434,8 +440,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
int id = v.getId();
if (id == R.id.btn_set_bg_color) {
mNoteBgColorSelector.setVisibility(View.VISIBLE);
- findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility(
- - View.VISIBLE);
+ findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility( View.VISIBLE);
} else if (sBgSelectorBtnsMap.containsKey(id)) {
findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility(
View.GONE);
diff --git a/src/app/src/main/java/net/micode/notes/ui/NotesListActivity.java b/src/app/src/main/java/net/micode/notes/ui/NotesListActivity.java
index e843aec..d093306 100644
--- a/src/app/src/main/java/net/micode/notes/ui/NotesListActivity.java
+++ b/src/app/src/main/java/net/micode/notes/ui/NotesListActivity.java
@@ -78,6 +78,11 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashSet;
+/*
+* main activity 列表activity
+* OnClickListener 点击监听
+* OnItemLongClickListener 长按监听
+* */
public class NotesListActivity extends Activity implements OnClickListener, OnItemLongClickListener {
private static final int FOLDER_NOTE_LIST_QUERY_TOKEN = 0;
@@ -89,20 +94,26 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
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;
+ //实例化NotesListAdapter
private NotesListAdapter mNotesListAdapter;
+ //列表视图变量
private ListView mNotesListView;
+ //声明按钮变量
private Button mAddNewNote;
private boolean mDispatch;
@@ -111,22 +122,27 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
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 "
@@ -135,10 +151,16 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
private final static int REQUEST_CODE_OPEN_NODE = 102;
private final static int REQUEST_CODE_NEW_NODE = 103;
+ /*
+ * 实例化时调用
+ * @savedInstanceState activity被意外kill时,保存的断点状态
+ * 用于恢复断点状态
+ * */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.note_list);
+ //初始化资源
initResources();
/**
@@ -157,22 +179,25 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
}
+ //第一次使用时,根据raw资源中的信息设置APP信息,添加介绍
private void setAppInfoFromRawRes() {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
if (!sp.getBoolean(PREFERENCE_ADD_INTRODUCTION, false)) {
StringBuilder sb = new StringBuilder();
- InputStream in = null;
+ InputStream in = null;//待写入的字符串
try {
- in = getResources().openRawResource(R.raw.introduction);
+ in = getResources().openRawResource(R.raw.introduction);//获取资源,位于res文件夹下的introduction文件
if (in != null) {
+ //成功获取介绍内容字符串
InputStreamReader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
- char [] buf = new char[1024];
+ char [] buf = new char[1024];//设置缓区
int len = 0;
while ((len = br.read(buf)) > 0) {
sb.append(buf, 0, len);
}
} else {
+ //读取文件失败
Log.e(TAG, "Read introduction file error");
return;
}
@@ -182,7 +207,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
} finally {
if(in != null) {
try {
- in.close();
+ in.close();//关闭文件,防止泄漏
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
@@ -190,50 +215,59 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
}
+ //创建工作便签,插入刚读入的字符串
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()) {
+ //保存便签
sp.edit().putBoolean(PREFERENCE_ADD_INTRODUCTION, true).commit();
} else {
+ //保存失败,记入日志
Log.e(TAG, "Save introduction note error");
return;
}
}
}
+ //重写onStart方法,activity可见
@Override
protected void onStart() {
super.onStart();
+ //后台服务,不影响主进程
startAsyncNotesListQuery();
}
+ //初始化变量
private void initResources() {
mContentResolver = this.getContentResolver();
mBackgroundQueryHandler = new BackgroundQueryHandler(this.getContentResolver());
mCurrentFolderId = Notes.ID_ROOT_FOLDER;
- mNotesListView = (ListView) findViewById(R.id.notes_list);
+ 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);
+ mNotesListView.setOnItemLongClickListener(this);//设置长按的监听器
mNotesListAdapter = new NotesListAdapter(this);
mNotesListView.setAdapter(mNotesListAdapter);
- mAddNewNote = (Button) findViewById(R.id.btn_new_note);
- mAddNewNote.setOnClickListener(this);
+ 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);
+ mTitleBar = (TextView) findViewById(R.id.tv_title_bar);//设置标题栏
mState = ListEditState.NOTE_LIST;
mModeCallBack = new ModeCallback();
}
+ /*
+ * 该类实现了当前模式的获取,如多选模式,菜单模式
+ * */
private class ModeCallback implements ListView.MultiChoiceModeListener, OnMenuItemClickListener {
private DropdownMenu mDropDownMenu;
- private ActionMode mActionMode;
+ private ActionMode mActionMode;//设置变量,记录操作模式
private MenuItem mMoveMenu;
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
@@ -253,7 +287,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
mAddNewNote.setVisibility(View.GONE);
View customView = LayoutInflater.from(NotesListActivity.this).inflate(
- R.layout.note_list_dropdown_menu, null);
+ R.layout.note_list_dropdown_menu, null);//设置显示样式
mode.setCustomView(customView);
mDropDownMenu = new DropdownMenu(NotesListActivity.this,
(Button) customView.findViewById(R.id.selection_menu),
@@ -269,7 +303,9 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
return true;
}
+ //更新菜单栏操作的私有方法
private void updateMenu() {
+ //获取选中的便签数量
int selectedCount = mNotesListAdapter.getSelectedCount();
// Update dropdown menu
String format = getResources().getString(R.string.menu_select_title, selectedCount);
@@ -281,7 +317,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
item.setTitle(R.string.menu_deselect_all);
} else {
item.setChecked(false);
- item.setTitle(R.string.menu_select_all);
+ item.setTitle(R.string.menu_select_all);//设置标题,字符来自R文件
}
}
}
@@ -310,17 +346,20 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
boolean checked) {
mNotesListAdapter.setCheckedItem(position, checked);
updateMenu();
- }
+ }//在选中项目更改后更新
+ //对菜单点击进行响应
public boolean onMenuItemClick(MenuItem item) {
if (mNotesListAdapter.getSelectedCount() == 0) {
Toast.makeText(NotesListActivity.this, getString(R.string.menu_select_none),
- Toast.LENGTH_SHORT).show();
+ Toast.LENGTH_SHORT).show();//显示没有选中,操作无效
return true;
}
switch (item.getItemId()) {
+ //对项目进行操作
case R.id.delete:
+ //删除
AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this);
builder.setTitle(getString(R.string.alert_title_delete));
builder.setIcon(android.R.drawable.ic_dialog_alert);
@@ -337,20 +376,28 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
builder.show();
break;
case R.id.move:
+ //移动
startQueryDestinationFolders();
break;
default:
+ //返回false,操作失败
return false;
}
return true;
}
}
+ /*
+ * 该类实现点击新建便签按钮,新建便签的实现方法
+ * */
private class NewNoteOnTouchListener implements OnTouchListener {
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();
@@ -417,6 +464,9 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}, NoteColumns.TYPE + " DESC," + NoteColumns.MODIFIED_DATE + " DESC");
}
+ /*
+ * 后台查询句柄,不会阻塞核心线程
+ * */
private final class BackgroundQueryHandler extends AsyncQueryHandler {
public BackgroundQueryHandler(ContentResolver contentResolver) {
super(contentResolver);
@@ -424,14 +474,19 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
@Override
protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
+ //对token进行选择,执行不同操作
switch (token) {
+ //文件夹下列表查询
case FOLDER_NOTE_LIST_QUERY_TOKEN:
mNotesListAdapter.changeCursor(cursor);
break;
+ //文件列表查询
case FOLDER_LIST_QUERY_TOKEN:
+ //存在文件夹
if (cursor != null && cursor.getCount() > 0) {
showFolderListMenu(cursor);
} else {
+ //记入错误日志,无文件夹
Log.e(TAG, "Query folder failed");
}
break;
@@ -441,8 +496,14 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
}
+ /*
+ * 该方法实现了展示文件夹列表的功能
+ * @ cursor 游标,获取文件夹信息
+ * */
private void showFolderListMenu(Cursor cursor) {
+ //新建窗体
AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this);
+ //设置标题
builder.setTitle(R.string.menu_title_select_folder);
final FoldersListAdapter adapter = new FoldersListAdapter(this, cursor);
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
@@ -459,12 +520,18 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
mModeCallBack.finishActionMode();
}
});
+ //展示窗体
builder.show();
}
+ /*
+ * 该方法实现了创建空的新便签功能
+ * */
private void createNewNote() {
Intent intent = new Intent(this, NoteEditActivity.class);
+ //设置便签状态,插入或者编辑
intent.setAction(Intent.ACTION_INSERT_OR_EDIT);
+ //插入便签信息
intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mCurrentFolderId);
this.startActivityForResult(intent, REQUEST_CODE_NEW_NODE);
}
@@ -506,8 +573,13 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}.execute();
}
+ /*
+ * 该方法实现了删除文件夹得功能
+ * @ folderId 要删除文件夹得id
+ * */
private void deleteFolder(long folderId) {
if (folderId == Notes.ID_ROOT_FOLDER) {
+ //删除父文件夹时报错
Log.e(TAG, "Wrong folder id, should not happen " + folderId);
return;
}
@@ -517,10 +589,10 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
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) {
@@ -540,25 +612,35 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
this.startActivityForResult(intent, REQUEST_CODE_OPEN_NODE);
}
+ /*
+ * 该方法实现了打开文件夹的功能
+ * */
private void openFolder(NoteItemData data) {
+ //获取当前文件夹id
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) {
+ //对点击的id进行区分
switch (v.getId()) {
+ //如果按下“新建便签”按钮,新建便签
case R.id.btn_new_note:
createNewNote();
break;
@@ -568,42 +650,59 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
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);
}
+ /*
+ * 该方法实现了新建或者修改文件夹的方法
+ * @ create 判断是否为新建文件夹
+ * false - 修改文件夹
+ * true - 新建文件夹
+ * */
private void showCreateOrModifyFolderDialog(final boolean create) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ //声明视图,使用样式为dialog_edit_text
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));
}
+ //设置ok按钮
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() {
@@ -641,7 +740,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
positive.setEnabled(false);
}
/**
- * When the name edit text is null, disable the positive button
+ * 当未输入名称时,ok键为灰色
*/
etName.addTextChangedListener(new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -650,9 +749,12 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
+ //如果输入内容为空
if (TextUtils.isEmpty(etName.getText())) {
+ //ok键无效,置为灰色
positive.setEnabled(false);
} else {
+ //否则,ok键有效
positive.setEnabled(true);
}
}
@@ -666,13 +768,17 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
@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;
@@ -680,6 +786,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
mTitleBar.setVisibility(View.GONE);
startAsyncNotesListQuery();
break;
+ //位于便签列表下
case NOTE_LIST:
super.onBackPressed();
break;
@@ -688,6 +795,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
}
+ //更新widget的方法,根据appWidgetId设置widget形式
private void updateWidget(int appWidgetId, int appWidgetType) {
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
if (appWidgetType == Notes.TYPE_WIDGET_2X) {
@@ -703,14 +811,17 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
appWidgetId
});
+ //将intent的内容广播
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);
@@ -720,26 +831,37 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
@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;
}
+ //对item的id进行判断
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() {
@@ -747,16 +869,18 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
deleteFolder(mFocusNoteDataItem.getId());
}
});
+ //取消则不执行任何操作
builder.setNegativeButton(android.R.string.cancel, null);
builder.show();
break;
+ //如果是修改文件夹名称
case MENU_FOLDER_CHANGE_NAME:
showCreateOrModifyFolderDialog(false);
break;
default:
break;
}
-
+ //操作成功,返回true
return true;
}
@@ -765,38 +889,56 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
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) {
+ } else if (mState == ListEditState.SUB_FOLDER) {//如果位于子文件夹下
+ //菜单采用子文件夹下的形式,只有添加便签选项
getMenuInflater().inflate(R.menu.sub_folder, menu);
- } else if (mState == ListEditState.CALL_RECORD_FOLDER) {
+ } else if (mState == ListEditState.CALL_RECORD_FOLDER) {//如果位于通话记录文件夹下
+ //菜单仅仅提供搜索功能
getMenuInflater().inflate(R.menu.call_record_folder, menu);
} else {
+ //状态不合法,记入日志
Log.e(TAG, "Wrong state:" + mState);
}
+ //
return true;
}
+ /*
+ * 该方法实现了对菜单功能的实现
+ * @ item 选中的菜单项
+ * */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
+ //对选中的菜单项进行判断
switch (item.getItemId()) {
+ //如果按下的是新建文件夹按钮
case R.id.menu_new_folder: {
+ //新建文件夹,true - 新建模式
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;
@@ -866,11 +1008,13 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}.execute();
}
+ //判断是否位于同步模式的私有方法
private boolean isSyncMode() {
return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0;
}
private void startPreferenceActivity() {
+ //新建activity,如果有父activity,用父activity,否则新建
Activity from = getParent() != null ? getParent() : this;
Intent intent = new Intent(from, NotesPreferenceActivity.class);
from.startActivityIfNeeded(intent, -1);
@@ -882,6 +1026,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
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,
@@ -890,18 +1035,26 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
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);
@@ -918,10 +1071,13 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
private void startQueryDestinationFolders() {
+ //定义用于在数据库中查询的语句,对type、parent_id、ID进行判断选择
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,
@@ -935,17 +1091,26 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
NoteColumns.MODIFIED_DATE + " DESC");
}
+ /*
+ * 该方法实现了长按的操作
+ * @ view 窗口类
+ * @ id
+ * */
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) {
+ } else if (mFocusNoteDataItem.getType() == Notes.TYPE_FOLDER) {//如果为文件夹状态
+ //设置窗体内容为文件夹内容
mNotesListView.setOnCreateContextMenuListener(mFolderOnCreateContextMenuListener);
}
}
diff --git a/src/app/src/main/java/net/micode/notes/ui/NotesListAdapter.java b/src/app/src/main/java/net/micode/notes/ui/NotesListAdapter.java
index 51c9cb9..0afd8bd 100644
--- a/src/app/src/main/java/net/micode/notes/ui/NotesListAdapter.java
+++ b/src/app/src/main/java/net/micode/notes/ui/NotesListAdapter.java
@@ -34,6 +34,7 @@ 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;
@@ -50,13 +51,24 @@ public class NotesListAdapter extends CursorAdapter {
mNotesCount = 0;
}
+ /*
+ * 创建新的视图,实例化/数据增加时调用,重绘不调用
+ * @context 上下文
+ * @cursor 数据游标
+ * @parent 该视图的父视图
+ * */
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return new NotesListItem(context);
}
+ /*
+ * 实例化/数据增加/重绘调用
+ * 调用bindView时如果发现view为空就调用newView创建一个新的view
+ * */
@Override
public void bindView(View view, Context context, Cursor cursor) {
+ //instanceof 用于判断某一个对象是否为某一个类的实例,布尔类型
if (view instanceof NotesListItem) {
NoteItemData itemData = new NoteItemData(context, cursor);
((NotesListItem) view).bind(context, itemData, mChoiceMode,
@@ -66,18 +78,22 @@ public class NotesListAdapter extends CursorAdapter {
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++) {
@@ -128,6 +144,7 @@ public class NotesListAdapter extends CursorAdapter {
return itemSet;
}
+ //获取选中次数,即哈希表mSelectedIndex的长度
public int getSelectedCount() {
Collection values = mSelectedIndex.values();
if (null == values) {
@@ -143,12 +160,15 @@ public class NotesListAdapter extends CursorAdapter {
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;
}
@@ -158,6 +178,7 @@ public class NotesListAdapter extends CursorAdapter {
@Override
protected void onContentChanged() {
super.onContentChanged();
+ //计算便签数量
calcNotesCount();
}
@@ -176,6 +197,7 @@ public class NotesListAdapter extends CursorAdapter {
mNotesCount++;
}
} else {
+ //错误信息记入日志
Log.e(TAG, "Invalid cursor");
return;
}
diff --git a/src/app/src/main/res/raw-zh-rCN/introduction b/src/app/src/main/res/raw-zh-rCN/introduction
index 7188359..e04356e 100644
--- a/src/app/src/main/res/raw-zh-rCN/introduction
+++ b/src/app/src/main/res/raw-zh-rCN/introduction
@@ -1,4 +1,5 @@
-欢迎使用MIUI便签!
+欢迎使用新MIUI便签!
+新的MIUI便签由吴子吉与方群天共同维护!
无论从软件中直接添加,还是从桌面拖出widget,MIUI便签能让你快速建立和保存便签;
diff --git a/src/app/src/main/res/raw/introduction b/src/app/src/main/res/raw/introduction
index 269cf7b..083b04a 100644
--- a/src/app/src/main/res/raw/introduction
+++ b/src/app/src/main/res/raw/introduction
@@ -1 +1,2 @@
-Welcome to use MIUI notes!
\ No newline at end of file
+Welcome to use MIUI notes!
+The new MIUI notes by ziji wu and quntian fang!
\ No newline at end of file