From 222205895c03a3fd5a930e630a15b10e01c54a5e Mon Sep 17 00:00:00 2001 From: zcx <1078327420@qq.com> Date: Tue, 19 Dec 2023 11:47:56 +0800 Subject: [PATCH] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit ed719ab579ef93898cd1a9ff1bc37f41735f589e Author: zcx <1078327420@qq.com> Date: Tue Dec 19 11:47:13 2023 +0800 最近标注 commit 48849a21d69ff6eb274357fe281c169f6127d1bb Merge: c7b8dfe d23da33 Author: zcx <1078327420@qq.com> Date: Tue Dec 19 07:38:32 2023 +0800 Merge branch 'main' of https://bdgit.educoder.net/pq3fnjual/Minotes into 曾晨曦_branch # Conflicts: # doc/实践模板-开源软件泛读、标注和维护报告文档.docx commit c7b8dfe14aeb23ea444f6602f976f445dd33daeb Author: zcx <1078327420@qq.com> Date: Tue Dec 19 07:27:37 2023 +0800 1 commit 781d628f8fdf9aade07728a2f2a0abb4f011e4f6 Author: zcx <1078327420@qq.com> Date: Sat Dec 16 08:03:54 2023 +0800 标注 commit fe88fa870697ae46b181cf323742ac1d9116e4fc Merge: 40a106a 50cfb15 Author: zcx <1078327420@qq.com> Date: Sat Dec 16 08:02:00 2023 +0800 Merge branch 'main' of https://bdgit.educoder.net/pq3fnjual/Minotes into 曾晨曦_branch commit 40a106ab72efcc2e041837d6cf9d88866a3c7d10 Author: zcx <1078327420@qq.com> Date: Thu Dec 14 18:50:49 2023 +0800 1 commit a6bf1d5701a0968cc9120efe48e7fe5c2f2bcbb8 Author: zcx <1078327420@qq.com> Date: Thu Dec 14 18:36:19 2023 +0800 UI包一部分 commit a99095dbf958cb855d36fbfb2d0a55833c624fa1 Author: zcx <1078327420@qq.com> Date: Thu Dec 14 18:25:02 2023 +0800 data包 commit b7353d6c78d87569f08313df8fd5ec7341d232e0 Merge: b5f43d0 0b1994e Author: zcx <1078327420@qq.com> Date: Thu Dec 14 18:22:15 2023 +0800 Merge branch 'main' of https://bdgit.educoder.net/pq3fnjual/Minotes into 曾晨曦_branch # Conflicts: # .gitignore # doc/实践模板-开源软件泛读、标注和维护报告文档.docx commit b5f43d07211990d77bd2858abbe5d0509aac389d Author: zcx <1078327420@qq.com> Date: Sun Dec 10 10:38:18 2023 +0800 1 commit a8c79ccdc54d8bafb9a3036f8d759924879e2a11 Author: zcx <1078327420@qq.com> Date: Mon Dec 4 21:09:41 2023 +0800 。 --- .gitignore | 1 + ...泛读、标注和维护报告文档.docx | Bin 557099 -> 562354 bytes .../src/net/micode/notes/data/Contact.java | 23 ++- .../src/net/micode/notes/data/Notes.java | 103 +++++----- .../notes/data/NotesDatabaseHelper.java | 33 +-- .../net/micode/notes/data/NotesProvider.java | 16 +- .../net/micode/notes/tool/BackupUtils.java | 43 ++-- .../src/net/micode/notes/tool/DataUtils.java | 17 +- .../micode/notes/tool/GTaskStringUtils.java | 188 +++++++++--------- .../net/micode/notes/tool/ResourceParser.java | 26 ++- 10 files changed, 233 insertions(+), 217 deletions(-) diff --git a/.gitignore b/.gitignore index ca9fa84..8774462 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /doc/实践模板-开源软件泛读、标注和维护报告文档.docx.REMOTE.docx +/doc/实践模板-开源软件泛读、标注和维护报告文档.docx.LOCAL.docx diff --git a/doc/实践模板-开源软件泛读、标注和维护报告文档.docx b/doc/实践模板-开源软件泛读、标注和维护报告文档.docx index a5b199b1adf2075983202ddb84885d6789bbdef0..b5612f29446da039cc760998423bcfdfdbcc2d84 100644 GIT binary patch delta 40890 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

LqK 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 diff --git a/src/Notes-master/src/net/micode/notes/data/Contact.java b/src/Notes-master/src/net/micode/notes/data/Contact.java index f2e5b72..1bf33e4 100644 --- a/src/Notes-master/src/net/micode/notes/data/Contact.java +++ b/src/Notes-master/src/net/micode/notes/data/Contact.java @@ -14,19 +14,23 @@ * limitations under the License. */ -package net.micode.notes.data; +package net.micode.notes.data;//ָλ -import android.content.Context; +import android.content.Context;//android.content.Context -import android.database.Cursor; +import android.database.Cursor;//android.database.Cursor import android.provider.ContactsContract.CommonDataKinds.Phone; +//CommonDataKinds.Phone import android.provider.ContactsContract.Data; +//android.provider.ContactsContract.Data import android.telephony.PhoneNumberUtils; -import android.util.Log; +//android.telephony.PhoneNumberUtils +import android.util.Log;//android.util.Log -import java.util.HashMap; -//change -public class Contact { //ϵ +import java.util.HashMap;//java.util.HashMap + +//ϵ +public class Contact { private static HashMap sContactCache; private static final String TAG = "Contact"; @@ -49,6 +53,7 @@ public class Contact { // // HashMapǷphoneNumberϢ if(sContactCache.containsKey(phoneNumber)) { return sContactCache.get(phoneNumber); + //phoneNumberϢ } String selection = CALLER_ID_SELECTION.replace("+", @@ -64,14 +69,15 @@ public class Contact { // // жѯ // moveToFirst()صһ if (cursor != null && cursor.moveToFirst()) { - try { // ҵϢ + try { String name = cursor.getString(0); sContactCache.put(phoneNumber, name); return name; // 쳣 } catch (IndexOutOfBoundsException e) { Log.e(TAG, " Cursor get string error " + e.toString()); + //string errorϢ return null; } finally { cursor.close(); @@ -79,6 +85,7 @@ public class Contact { // // δҵϢ } else { Log.d(TAG, "No contact matched with number:" + phoneNumber); + //No contact matchedϢ return null; } } diff --git a/src/Notes-master/src/net/micode/notes/data/Notes.java b/src/Notes-master/src/net/micode/notes/data/Notes.java index 6aad9cd..ba7b39f 100644 --- a/src/Notes-master/src/net/micode/notes/data/Notes.java +++ b/src/Notes-master/src/net/micode/notes/data/Notes.java @@ -14,12 +14,13 @@ * limitations under the License. */ -package net.micode.notes.data; +package net.micode.notes.data;//ļеλ -import android.content.ContentUris; -import android.net.Uri; +import android.content.ContentUris;//android.content.ContentUris +import android.net.Uri;//android.net.Uri // Notes ж˺ܶೣЩintͺstring public class Notes { + // public static final String AUTHORITY = "micode_notes"; public static final String TAG = "Notes"; @@ -29,10 +30,10 @@ public class Notes { public static final int TYPE_SYSTEM = 2; /** - * Following IDs are system folders' identifiers - * {@link Notes#ID_ROOT_FOLDER } is default folder - * {@link Notes#ID_TEMPARAY_FOLDER } is for notes belonging no folder - * {@link Notes#ID_CALL_RECORD_FOLDER} is to store call records + * ID ϵͳļеıʶ + * {@link Notes#ID_ROOT_FOLDER }Ĭļ + * {@link Notes#ID_TEMPARAY_FOLDER }Dzļеnotes + * {@link Notes#ID_CALL_RECORD_FOLDER}ڴ洢ͨ¼ */ public static final int ID_ROOT_FOLDER = 0; public static final int ID_TEMPARAY_FOLDER = -1; @@ -40,24 +41,25 @@ public class Notes { public static final int ID_TRASH_FOLER = -3; public static final String INTENT_EXTRA_ALERT_DATE = - + //net.micode.notes.alert_dateij "net.micode.notes.alert_date"; public static final String INTENT_EXTRA_BACKGROUND_ID = - + //net.micode.notes.background_color_idij "net.micode.notes.background_color_id"; public static final String INTENT_EXTRA_WIDGET_ID = - + //net.micode.notes.widget_idij "net.micode.notes.widget_id"; public static final String INTENT_EXTRA_WIDGET_TYPE = - + //net.micode.notes.widget_typeij "net.micode.notes.widget_type"; public static final String INTENT_EXTRA_FOLDER_ID = - + //net.micode.notes.folder_idij "net.micode.notes.folder_id"; public static final String INTENT_EXTRA_CALL_DATE = - + //net.micode.notes.call_dateij "net.micode.notes.call_date"; +//ʹwidgetҼij public static final int TYPE_WIDGET_INVALIDE = -1; public static final int TYPE_WIDGET_2X = 0; public static final int TYPE_WIDGET_4X = 1; @@ -68,16 +70,15 @@ public class Notes { } /** - * Uri to query all notes and folders + * ڲѯбļе URI */ public static final Uri CONTENT_NOTE_URI = Uri.parse("content://" + AUTHORITY + "/note");//ѯǩļеָ롣 - -// public static final Uri my_URI = ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI , 10); + public static final Uri my_URI = ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI , 10); /** - * Uri to query data + * ڲѯݵ URI */ public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + @@ -86,93 +87,92 @@ AUTHORITY + "/data");// // NoteColumnsij,ں洴ݿıͷ public interface NoteColumns { /** - * The unique ID for a row + * еΨһ ID *

Type: INTEGER (long)

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

Type: INTEGER (long)

*/ public static final String PARENT_ID = "parent_id";//Ϊʲôparent_id /** - * Created data for note or folder + * Ϊʼǻļд *

Type: INTEGER (long)

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

Type: INTEGER (long)

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

Type: INTEGER (long)

*/ public static final String ALERTED_DATE = "alert_date"; /** - * Folder's name or text content of note + * ļƻע͵ı *

Type: TEXT

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

Type: INTEGER (long)

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

Type: INTEGER (long)

*/ public static final String WIDGET_TYPE = "widget_type"; /** - * Note's background color's id + * ʼǵıɫ ID *

Type: INTEGER (long)

*/ public static final String BG_COLOR_ID = "bg_color_id"; /** - * For text note, it doesn't has attachment, for multi-media - * note, it has at least one attachment + * ıʼǣûиڶýʼǣһ *

Type: INTEGER

*/ public static final String HAS_ATTACHMENT = "has_attachment"; /** - * Folder's count of notes + * ļеıʼǼ *

Type: INTEGER (long)

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

Type: INTEGER

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

Type: INTEGER (long)

*/ public static final String SYNC_ID = "sync_id";//ͬ /** - * Sign to indicate local modified or not + * ָʾ޸ı־ *

Type: INTEGER

*/ public static final String LOCAL_MODIFIED = "local_modified"; /** - * Original parent id before moving into temporary folder + * ƶʱļ֮ǰԭʼ ID *

Type : INTEGER

*/ public static final String ORIGIN_PARENT_ID = "origin_parent_id"; @@ -193,77 +193,72 @@ AUTHORITY + "/data");// // DataColumnsij,ں洴ݿıͷ public interface DataColumns { /** - * The unique ID for a row + * еΨһ ID *

Type: INTEGER (long)

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

Type: Text

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

Type: INTEGER (long)

*/ public static final String NOTE_ID = "note_id"; /** - * Created data for note or folder + * Ϊʼǻļд *

Type: INTEGER (long)

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

Type: INTEGER (long)

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

Type: TEXT

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

Type: INTEGER

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

Type: INTEGER

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

Type: TEXT

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

Type: TEXT

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

Type: TEXT

*/ @@ -271,7 +266,7 @@ used for }//ҪǶ洢ǩݵ public static final class TextNote implements DataColumns { /** - * Mode to indicate the text in check list mode or not + * ָʾıǷں˶бģʽģʽ *

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

*/ public static final String MODE = DATA1; @@ -293,13 +288,13 @@ AUTHORITY + "/text_note"); public static final class CallNote implements DataColumns { /** - * Call date for this record + * ˼¼ĵ *

Type: INTEGER (long)

*/ public static final String CALL_DATE = DATA1; /** - * Phone number for this record + * ˼¼ĵ绰 *

Type: TEXT

*/ public static final String PHONE_NUMBER = DATA3; diff --git a/src/Notes-master/src/net/micode/notes/data/NotesDatabaseHelper.java b/src/Notes-master/src/net/micode/notes/data/NotesDatabaseHelper.java index 4e41fb6..978e900 100644 --- a/src/Notes-master/src/net/micode/notes/data/NotesDatabaseHelper.java +++ b/src/Notes-master/src/net/micode/notes/data/NotesDatabaseHelper.java @@ -38,6 +38,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { public static final String DATA = "data"; } +//ݿҪij private static final String TAG = "NotesDatabaseHelper"; private static NotesDatabaseHelper mInstance; @@ -83,7 +84,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { TABLE.DATA + "(" + DataColumns.NOTE_ID + ");";//洢ǩŵһݱ /** - * Increase folder's note count when move note to the folder + * ʼƶļʱļеıʼǼ */ private static final String NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = "CREATE TRIGGER increase_folder_count_on_update "+ @@ -95,7 +96,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " END";//ļһNote֮Ҫĵݵı /** - * Decrease folder's note count when move note from folder + * ļƶʼʱļеıʼǼ */ private static final String NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = "CREATE TRIGGER decrease_folder_count_on_update " + @@ -108,7 +109,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " END";//ļƳһNote֮Ҫĵݵı /** - * Increase folder's note count when insert new note to the folder + * ļв±ʼʱļеıʼǼ */ private static final String NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER = "CREATE TRIGGER increase_folder_count_on_insert " + @@ -120,7 +121,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " END";//ļвһNote֮Ҫĵݵı /** - * Decrease folder's note count when delete note from the folder + * ļɾʼʱļеıʼǼ */ private static final String NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER = "CREATE TRIGGER decrease_folder_count_on_delete " + @@ -133,7 +134,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " END";//ļɾһNote֮Ҫĵݵı /** - * Update note's content when insert data with type {@link DataConstants#NOTE} + * Ϊ {@link DataConstants#NOTE} ʱע͵ */ private static final String DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER = "CREATE TRIGGER update_note_content_on_insert " + @@ -146,7 +147,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " END";//ļжһNoteµ֮Ҫĵݵı /** - * Update note's content when data with {@link DataConstants#NOTE} type has changed + * {@link DataConstants#NOTE} ͵ݷʱע͵ */ private static final String DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER = "CREATE TRIGGER update_note_content_on_update " + @@ -159,7 +160,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " END";//Noteݱ޸ĺҪĵݵı /** - * Update note's content when data with {@link DataConstants#NOTE} type has deleted + * ɾ {@link DataConstants#NOTE} ͵ʱע */ private static final String DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER = "CREATE TRIGGER update_note_content_on_delete " + @@ -172,7 +173,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " END";//NoteݱɾҪĵݵı /** - * Delete datas belong to note which has been deleted + * ɾɾע */ private static final String NOTE_DELETE_DATA_ON_DELETE_TRIGGER = "CREATE TRIGGER delete_data_on_delete " + @@ -183,7 +184,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " END";//ɾɾıǩݺҪĵݵı /** - * Delete notes belong to folder which has been deleted + * ɾɾļеıǩҪĵݵı */ private static final String FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER = "CREATE TRIGGER folder_delete_notes_on_delete " + @@ -194,7 +195,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " END";//ɾɾļеıǩҪĵݵı /** - * Move notes belong to folder which has been moved to trash folder + * ԭͰбǩҪĵݵı */ private static final String FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER = "CREATE TRIGGER folder_move_notes_on_trash " + @@ -204,7 +205,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " UPDATE " + TABLE.NOTE + " SET " + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + - " END";//ԭͰбǩҪĵݵı + " END"; public NotesDatabaseHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); @@ -240,14 +241,14 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { ContentValues values = new ContentValues(); /** - * call record foler for call notes + * ͨ¼ Folerͨ¼ */ values.put(NoteColumns.ID, Notes.ID_CALL_RECORD_FOLDER); values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); db.insert(TABLE.NOTE, null, values); /** - * root folder which is default folder + * ļУĬļ */ values.clear(); values.put(NoteColumns.ID, Notes.ID_ROOT_FOLDER); @@ -255,7 +256,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { db.insert(TABLE.NOTE, null, values); /** - * temporary folder which is used for moving note + * ƶʼǵʱļ */ values.clear(); values.put(NoteColumns.ID, Notes.ID_TEMPARAY_FOLDER); @@ -263,7 +264,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { db.insert(TABLE.NOTE, null, values); /** - * create trash folder + * Ͱļ */ values.clear(); values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); @@ -310,7 +311,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { if (oldVersion == 1) { upgradeToV2(db); - skipV2 = true; // this upgrade including the upgrade from v2 to v3 + skipV2 = true; // v2 v3 oldVersion++; } diff --git a/src/Notes-master/src/net/micode/notes/data/NotesProvider.java b/src/Notes-master/src/net/micode/notes/data/NotesProvider.java index b67144b..b5a1d08 100644 --- a/src/Notes-master/src/net/micode/notes/data/NotesProvider.java +++ b/src/Notes-master/src/net/micode/notes/data/NotesProvider.java @@ -14,8 +14,9 @@ * limitations under the License. */ -package net.micode.notes.data; +package net.micode.notes.data;//λ +//Ϊõĸֹ import android.app.SearchManager; import android.content.ContentProvider; import android.content.ContentUris; @@ -69,8 +70,8 @@ public class NotesProvider extends ContentProvider { } /** - * x'0A' represents the '\n' character in sqlite. For title and content in the search result, - * we will trim '\n' and white space in order to show more information. + * x'0A' ʾ sqlite е 'n' ַеıݣ + * ȥnͿհʾϢ. */ // NOTES_SEARCH_PROJECTION private static final String NOTES_SEARCH_PROJECTION = NoteColumns.ID + "," @@ -188,14 +189,14 @@ public class NotesProvider extends ContentProvider { default: throw new IllegalArgumentException("Unknown URI " + uri); } - // Notify the note uri + // ֪ͨע uri // notifyChangeһContextResolverҸ 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); @@ -222,8 +223,7 @@ public class NotesProvider extends ContentProvider { case URI_NOTE_ITEM: id = uri.getPathSegments().get(1); /** - * ID that smaller than 0 is system folder which is not allowed to - * trash + * С 0 ID Dzյϵͳļ */ long noteId = Long.valueOf(id); if (noteId <= 0) { @@ -329,7 +329,7 @@ public class NotesProvider extends ContentProvider { @Override public String getType(Uri uri) { - // TODO Auto-generated method stub + // TODO Զɵķ return null; } diff --git a/src/Notes-master/src/net/micode/notes/tool/BackupUtils.java b/src/Notes-master/src/net/micode/notes/tool/BackupUtils.java index 740fdbb..444d9dc 100644 --- a/src/Notes-master/src/net/micode/notes/tool/BackupUtils.java +++ b/src/Notes-master/src/net/micode/notes/tool/BackupUtils.java @@ -19,7 +19,7 @@ package net.micode.notes.tool; public class BackupUtils { private static final String TAG = "BackupUtils"; // Singleton stuff - private static BackupUtils sInstance; //ΪʲôԶĶ + private static BackupUtils sInstance; //ΪʲôԶĶ public static synchronized BackupUtils getInstance(Context context) { //ynchronized ؼ֣,൱ڲһ̣߳߳A @@ -33,8 +33,7 @@ public class BackupUtils { } /** - * Following states are signs to represents backup or restore - * status + * ״̬DZʾݻԭ״̬ı־ */ // Currently, the sdcard is not mounted SDûбװֻ public static final int STATE_SD_CARD_UNMOUONTED = 0; @@ -49,11 +48,13 @@ public class BackupUtils { private TextExport mTextExport; - private BackupUtils(Context context) { //ʼ +//ʼ + private BackupUtils(Context context) { mTextExport = new TextExport(context); } - private static boolean externalStorageAvailable() { //ⲿ洢Ƿ +//ⲿ洢Ƿ + private static boolean externalStorageAvailable() { return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()); } @@ -69,6 +70,7 @@ public class BackupUtils { return mTextExport.mFileDirectory; } +//TextExport private static class TextExport { private static final String[] NOTE_PROJECTION = { NoteColumns.ID, @@ -92,6 +94,7 @@ public class BackupUtils { DataColumns.DATA4, }; +//͵ij private static final int DATA_COLUMN_CONTENT = 0; private static final int DATA_COLUMN_MIME_TYPE = 1; @@ -116,12 +119,13 @@ public class BackupUtils { mFileDirectory = ""; } - private String getFormat(int id) { //ȡıɲ +//ȡıɲ + private String getFormat(int id) { return TEXT_FORMAT[id]; } /** - * Export the folder identified by folder id to text + * ļ ID ʶļеΪı */ private void exportFolderToText(String folderId, PrintStream ps) { // Query notes belong to this folder ͨѯparent idļidnoteѡƶIDļµNote @@ -137,7 +141,7 @@ public class BackupUtils { ps.println(String.format(getFormat(FORMAT_NOTE_DATE), DateFormat.format( mContext.getString(R.string.format_datetime_mdhm), notesCursor.getLong(NOTE_COLUMN_MODIFIED_DATE)))); - // Query data belong to this note + // ѯڴ˵ String noteId = notesCursor.getString(NOTE_COLUMN_ID); exportNoteToText(noteId, ps); //ļtext } while (notesCursor.moveToNext()); @@ -147,7 +151,7 @@ public class BackupUtils { } /** - * Export note identified by id to a print stream + * id ʶע͵ӡ */ private void exportNoteToText(String noteId, PrintStream ps) { Cursor dataCursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI, @@ -169,11 +173,11 @@ public class BackupUtils { ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), phoneNumber)); } - // Print call date + // ӡͨ ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), DateFormat .format(mContext.getString(R.string.format_datetime_mdhm), callDate))); - // Print call attachment location + // ӡʹøλ if (!TextUtils.isEmpty(location)) { ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), location)); @@ -189,7 +193,7 @@ public class BackupUtils { } dataCursor.close(); } - // print a line separator between note + // ע֮ӡзָ try { ps.write(new byte[] { Character.LINE_SEPARATOR, Character.LETTER_NUMBER @@ -200,7 +204,7 @@ public class BackupUtils { } /** - * Note will be exported as text which is user readable + * עͽΪûɶı */ public int exportToText() { //ܺexportFolderexportNote if (!externalStorageAvailable()) { @@ -213,7 +217,7 @@ public class BackupUtils { Log.e(TAG, "get print stream error"); return STATE_SYSTEM_ERROR; } - // First export folder and its notes ļУǵıǩ + //ļУǵıǩ Cursor folderCursor = mContext.getContentResolver().query( Notes.CONTENT_NOTE_URI, NOTE_PROJECTION, @@ -241,7 +245,7 @@ public class BackupUtils { folderCursor.close(); } - // Export notes in root's folder Ŀ¼ıǩڲκļУ޷ͨļеʵһֱǩĵ + // Ŀ¼ıǩڲκļУ޷ͨļеʵһֱǩĵ Cursor noteCursor = mContext.getContentResolver().query( Notes.CONTENT_NOTE_URI, NOTE_PROJECTION, @@ -254,7 +258,7 @@ public class BackupUtils { ps.println(String.format(getFormat(FORMAT_NOTE_DATE), DateFormat.format( mContext.getString(R.string.format_datetime_mdhm), noteCursor.getLong(NOTE_COLUMN_MODIFIED_DATE)))); - // Query data belong to this note + // ѯڴ˵ String noteId = noteCursor.getString(NOTE_COLUMN_ID); exportNoteToText(noteId, ps); } while (noteCursor.moveToNext()); @@ -267,7 +271,7 @@ public class BackupUtils { } /** - * Get a print stream pointed to the file {@generateExportedTextFile} + * ȡָļ {@generateExportedTextFile} Ĵӡ */ private PrintStream getExportToTextPrintStream() { File file = generateFileMountedOnSDcard(mContext, R.string.file_path, @@ -281,7 +285,8 @@ public class BackupUtils { PrintStream ps = null; try { FileOutputStream fos = new FileOutputStream(file); - ps = new PrintStream(fos); //psضļĿľǵļֱ + ps = new PrintStream(fos); + //psضļĿľǵļֱ } catch (FileNotFoundException e) { e.printStackTrace(); return null; @@ -294,7 +299,7 @@ public class BackupUtils { } /** - * Generate the text file to store imported data + * ıļԴ洢 */ private static File generateFileMountedOnSDcard(Context context, int filePathResId, int fileNameFormatResId) { StringBuilder sb = new StringBuilder(); diff --git a/src/Notes-master/src/net/micode/notes/tool/DataUtils.java b/src/Notes-master/src/net/micode/notes/tool/DataUtils.java index e591b68..2886c5f 100644 --- a/src/Notes-master/src/net/micode/notes/tool/DataUtils.java +++ b/src/Notes-master/src/net/micode/notes/tool/DataUtils.java @@ -1,4 +1,4 @@ -package net.micode.notes.tool; +package net.micode.notes.tool;//λ public class DataUtils { public static final String TAG = "DataUtils"; @@ -78,7 +78,7 @@ public class DataUtils { } /** - * Get the all folder count except system folders {@link Notes#TYPE_SYSTEM}} + * ȡϵͳļ {@link Notes#TYPE_SYSTEM}} ֮ļм */ public static int getUserFolderCount(ContentResolver resolver) { Cursor cursor =resolver.query(Notes.CONTENT_NOTE_URI, @@ -94,6 +94,7 @@ public class DataUtils { count = cursor.getInt(0); } catch (IndexOutOfBoundsException e) { Log.e(TAG, "get folder count failed:" + e.toString()); +//get folder count failed } finally { cursor.close(); } @@ -119,7 +120,8 @@ public class DataUtils { return exist; } - public static boolean existInNoteDatabase(ContentResolver resolver, long noteId) { +// noteIdǷڱʼݿ + public static boolean existInNoteDatabase(ContentResolver resolver, long noteId) {// ѯʼݵUriʹContentUris.withAppendedId()noteIdӵʼUri Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), null, null, null, null); @@ -139,10 +141,10 @@ public class DataUtils { boolean exist = false; if (cursor != null) { - if (cursor.getCount() > 0) { + if (cursor.getCount() > 0) {// countݣ˵noteIdڱʼݿ exist = true; } - cursor.close(); + cursor.close();//ͷԴ } return exist; } @@ -191,7 +193,8 @@ public class DataUtils { return set; } - public static String getCallNumberByNoteId(ContentResolver resolver, long noteId) { +//ݸnoteIdӱʼݿлȡ绰 + public static String getCallNumberByNoteId(ContentResolver resolver, long noteId) {// ѯֵΪStringͣʾnoteIdȡĵ绰룬ȡʧ򷵻ؿַ Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, new String [] { CallNote.PHONE_NUMBER }, CallNote.NOTE_ID + "=? AND " + CallNote.MIME_TYPE + "=?", @@ -200,7 +203,7 @@ public class DataUtils { if (cursor != null && cursor.moveToFirst()) { try { - return cursor.getString(0); + return cursor.getString(0);// ȡһеĵ绰 } catch (IndexOutOfBoundsException e) { Log.e(TAG, "Get call number fails " + e.toString()); } finally { diff --git a/src/Notes-master/src/net/micode/notes/tool/GTaskStringUtils.java b/src/Notes-master/src/net/micode/notes/tool/GTaskStringUtils.java index dfc1ac6..5825486 100644 --- a/src/Notes-master/src/net/micode/notes/tool/GTaskStringUtils.java +++ b/src/Notes-master/src/net/micode/notes/tool/GTaskStringUtils.java @@ -14,102 +14,96 @@ * limitations under the License. */ -//飺˺ܶľַ̬ĿľΪṩjsonObjectӦַ"key"Щ̬Ķ嵥дһ棬Ƿdzõı̹淶 -package net.micode.notes.tool; - -//Ƕһstatic stringʵʾΪjsonObjectṩKeyЩȫдһ鿴һdzõıϰ -public class GTaskStringUtils { - - public final static String GTASK_JSON_ACTION_ID = "action_id"; - - public final static String GTASK_JSON_ACTION_LIST = "action_list"; - - public final static String GTASK_JSON_ACTION_TYPE = "action_type"; - - public final static String GTASK_JSON_ACTION_TYPE_CREATE = "create"; - - public final static String GTASK_JSON_ACTION_TYPE_GETALL = "get_all"; - - public final static String GTASK_JSON_ACTION_TYPE_MOVE = "move"; - - public final static String GTASK_JSON_ACTION_TYPE_UPDATE = "update"; - - public final static String GTASK_JSON_CREATOR_ID = "creator_id"; - - public final static String GTASK_JSON_CHILD_ENTITY = "child_entity"; - - public final static String GTASK_JSON_CLIENT_VERSION = "client_version"; - - public final static String GTASK_JSON_COMPLETED = "completed"; - - public final static String GTASK_JSON_CURRENT_LIST_ID = "current_list_id"; - - public final static String GTASK_JSON_DEFAULT_LIST_ID = "default_list_id"; - - public final static String GTASK_JSON_DELETED = "deleted"; - - public final static String GTASK_JSON_DEST_LIST = "dest_list"; - - public final static String GTASK_JSON_DEST_PARENT = "dest_parent"; - - public final static String GTASK_JSON_DEST_PARENT_TYPE = "dest_parent_type"; - - public final static String GTASK_JSON_ENTITY_DELTA = "entity_delta"; - - public final static String GTASK_JSON_ENTITY_TYPE = "entity_type"; - - public final static String GTASK_JSON_GET_DELETED = "get_deleted"; - - public final static String GTASK_JSON_ID = "id"; - - public final static String GTASK_JSON_INDEX = "index"; - - public final static String GTASK_JSON_LAST_MODIFIED = "last_modified"; - - public final static String GTASK_JSON_LATEST_SYNC_POINT = "latest_sync_point"; - - public final static String GTASK_JSON_LIST_ID = "list_id"; - - public final static String GTASK_JSON_LISTS = "lists"; - - public final static String GTASK_JSON_NAME = "name"; - - public final static String GTASK_JSON_NEW_ID = "new_id"; - - public final static String GTASK_JSON_NOTES = "notes"; - - public final static String GTASK_JSON_PARENT_ID = "parent_id"; - - public final static String GTASK_JSON_PRIOR_SIBLING_ID = "prior_sibling_id"; - - public final static String GTASK_JSON_RESULTS = "results"; - - public final static String GTASK_JSON_SOURCE_LIST = "source_list"; - - public final static String GTASK_JSON_TASKS = "tasks"; - - public final static String GTASK_JSON_TYPE = "type"; - - public final static String GTASK_JSON_TYPE_GROUP = "GROUP"; - - public final static String GTASK_JSON_TYPE_TASK = "TASK"; - - public final static String GTASK_JSON_USER = "user"; - - public final static String MIUI_FOLDER_PREFFIX = "[MIUI_Notes]"; - - public final static String FOLDER_DEFAULT = "Default"; - - public final static String FOLDER_CALL_NOTE = "Call_Note"; - - public final static String FOLDER_META = "METADATA"; - - public final static String META_HEAD_GTASK_ID = "meta_gid"; - - public final static String META_HEAD_NOTE = "meta_note"; - - public final static String META_HEAD_DATA = "meta_data"; - - public final static String META_NOTE_NAME = "[META INFO] DON'T UPDATE AND DELETE"; +//˺ܶľַ̬ĿľΪṩjsonObjectӦַ"key"Щ̬Ķ嵥дһ +package net.micode.notes.tool;//λ +//ඨһЩstatic stringʵʾΪjsonObjectṩKeyЩȫдһ鿴 +public class GTaskStringUtils { + +// س +public final static String GTASK_JSON_ACTION_ID = "action_id"; // ID +public final static String GTASK_JSON_ACTION_LIST = "action_list"; // б +public final static String GTASK_JSON_ACTION_TYPE = "action_type"; // +public final static String GTASK_JSON_ACTION_TYPE_CREATE = "create"; // +public final static String GTASK_JSON_ACTION_TYPE_GETALL = "get_all"; // ȡж +public final static String GTASK_JSON_ACTION_TYPE_MOVE = "move"; // ƶ +public final static String GTASK_JSON_ACTION_TYPE_UPDATE = "update"; // ¶ + +public final static String GTASK_JSON_CREATOR_ID = "creator_id"; // ID + +public final static String GTASK_JSON_CHILD_ENTITY = "child_entity"; // ʵ + +public final static String GTASK_JSON_CLIENT_VERSION = "client_version"; // ͻ˰汾 + +public final static String GTASK_JSON_COMPLETED = "completed"; // ״̬ + +public final static String GTASK_JSON_CURRENT_LIST_ID = "current_list_id"; // ǰбID + +public final static String GTASK_JSON_DEFAULT_LIST_ID = "default_list_id"; // ĬбID + +public final static String GTASK_JSON_DELETED = "deleted"; // ɾ״̬ + +public final static String GTASK_JSON_DEST_LIST = "dest_list"; // Ŀб + +public final static String GTASK_JSON_DEST_PARENT = "dest_parent"; // Ŀ길 + +public final static String GTASK_JSON_DEST_PARENT_TYPE = "dest_parent_type"; // Ŀ길 + +public final static String GTASK_JSON_ENTITY_DELTA = "entity_delta"; // ʵ + +public final static String GTASK_JSON_ENTITY_TYPE = "entity_type"; // ʵ + +public final static String GTASK_JSON_GET_DELETED = "get_deleted"; // ȡɾ + +public final static String GTASK_JSON_ID = "id"; // ID + +public final static String GTASK_JSON_INDEX = "index"; // + +public final static String GTASK_JSON_LAST_MODIFIED = "last_modified"; // ޸ʱ + +public final static String GTASK_JSON_LATEST_SYNC_POINT = "latest_sync_point"; // ͬ + +public final static String GTASK_JSON_LIST_ID = "list_id"; // бID + +public final static String GTASK_JSON_LISTS = "lists"; // б + +public final static String GTASK_JSON_NAME = "name"; // + +public final static String GTASK_JSON_NEW_ID = "new_id"; // ID + +public final static String GTASK_JSON_NOTES = "notes"; // ע + +public final static String GTASK_JSON_PARENT_ID = "parent_id"; // ID + +public final static String GTASK_JSON_PRIOR_SIBLING_ID = "prior_sibling_id"; // һֵܽڵID + +public final static String GTASK_JSON_RESULTS = "results"; // + +public final static String GTASK_JSON_SOURCE_LIST = "source_list"; // Դб + +public final static String GTASK_JSON_TASKS = "tasks"; // + +// س +public final static String GTASK_JSON_TYPE = "type"; // +public final static String GTASK_JSON_TYPE_GROUP = "GROUP"; // +public final static String GTASK_JSON_TYPE_TASK = "TASK"; // + +public final static String GTASK_JSON_USER = "user"; // û + +public final static String MIUI_FOLDER_PREFFIX = "[MIUI_Notes]"; // MIUIļǰ׺ + +public final static String FOLDER_DEFAULT = "Default"; // Ĭļ + +public final static String FOLDER_CALL_NOTE = "Call_Note"; // 绰עļ + +public final static String FOLDER_META = "METADATA"; // Ԫļ + +public final static String META_HEAD_GTASK_ID = "meta_gid"; // ԪϢID + +public final static String META_HEAD_NOTE = "meta_note"; // ԪϢע + +public final static String META_HEAD_DATA = "meta_data"; // ԪϢ + +public final static String META_NOTE_NAME = "[META INFO] DON'T UPDATE AND DELETE"; // ԪϢע + } \ No newline at end of file diff --git a/src/Notes-master/src/net/micode/notes/tool/ResourceParser.java b/src/Notes-master/src/net/micode/notes/tool/ResourceParser.java index e1846a3..f0e8b41 100644 --- a/src/Notes-master/src/net/micode/notes/tool/ResourceParser.java +++ b/src/Notes-master/src/net/micode/notes/tool/ResourceParser.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package net.micode.notes.tool; +package net.micode.notes.tool;//λ -/*飺ԴʵϾǻȡԴڳʹãɫͼƬ +/*ԴʵϾǻȡԴڳʹãɫͼƬ * ʵַҪR.java࣬а * R.id Դ * R.drawable ͼƬԴ ʹã @@ -31,6 +31,7 @@ package net.micode.notes.tool; * BG_DEFAULT_FONT_SIZE ĬıСУ */ +//Сɫ public class ResourceParser { public static final int YELLOW = 0; @@ -48,6 +49,7 @@ public class ResourceParser { public static final int BG_DEFAULT_FONT_SIZE = TEXT_MEDIUM; +//ǩɫ public static class NoteBgResources { private final static int [] BG_EDIT_RESOURCES = new int [] { R.drawable.edit_yellow, @@ -57,6 +59,7 @@ public class ResourceParser { R.drawable.edit_red }; +//ɫ private final static int [] BG_EDIT_TITLE_RESOURCES = new int [] { R.drawable.edit_title_yellow, R.drawable.edit_title_blue, @@ -73,7 +76,8 @@ public class ResourceParser { return BG_EDIT_TITLE_RESOURCES[id]; } } - //ֱӻȡĬϵıɫ̫PREFERENCE_SET_BG_COLOR_KEYǸfinal string,Ҳ˵getBoolean϶ִelseΪʲôҪôд + + //ֱӻȡĬϵıɫ public static int getDefaultBgId(Context context) { if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean( NotesPreferenceActivity.PREFERENCE_SET_BG_COLOR_KEY, false)) { @@ -82,7 +86,8 @@ public class ResourceParser { return BG_DEFAULT_COLOR; } } - + + //ڴ洢ͬͱʼǵĵһʼǵıԴID public static class NoteItemBgResources { private final static int [] BG_FIRST_RESOURCES = new int [] { R.drawable.list_yellow_up, @@ -92,6 +97,7 @@ public class ResourceParser { R.drawable.list_red_up }; +//ڴ洢ͬͱʼǵмʼǵıԴID private final static int [] BG_NORMAL_RESOURCES = new int [] { R.drawable.list_yellow_middle, R.drawable.list_blue_middle, @@ -100,6 +106,7 @@ public class ResourceParser { R.drawable.list_red_middle }; +//ڴ洢ͬͱʼǵʼǵıԴID private final static int [] BG_LAST_RESOURCES = new int [] { R.drawable.list_yellow_down, R.drawable.list_blue_down, @@ -108,6 +115,7 @@ public class ResourceParser { R.drawable.list_red_down, }; +//NoteItemBgResourcesڲеһ̬BG_SINGLE_RESOURCESڴ洢ͬͱʼֻһʼʱıԴID private final static int [] BG_SINGLE_RESOURCES = new int [] { R.drawable.list_yellow_single, R.drawable.list_blue_single, @@ -115,19 +123,23 @@ public class ResourceParser { R.drawable.list_green_single, R.drawable.list_red_single }; - + + //ڻȡضidӦĵһʼǵıԴID public static int getNoteBgFirstRes(int id) { return BG_FIRST_RESOURCES[id]; } +//ڻȡضidӦһʼǵıԴID public static int getNoteBgLastRes(int id) { return BG_LAST_RESOURCES[id]; } +//ڻȡضidӦֻһʼʱıԴID public static int getNoteBgSingleRes(int id) { return BG_SINGLE_RESOURCES[id]; } +//ڻȡضidӦмʼǵıԴID public static int getNoteBgNormalRes(int id) { return BG_NORMAL_RESOURCES[id]; } @@ -174,9 +186,7 @@ public class ResourceParser { //һݴĺֹidԴˣԶĬϵý public static int getTexAppearanceResource(int id) { /** - * HACKME: Fix bug of store the resource id in shared preference. - * The id may larger than the length of resources, in this case, - * return the {@link ResourceParser#BG_DEFAULT_FONT_SIZE} + * HACKME޸Դ ID 洢ڹѡеĴid ܴԴ ȣڱУ {@link ResourceParser#BG_DEFAULT_FONT_SIZE} */ if (id >= TEXTAPPEARANCE_RESOURCES.length) { return BG_DEFAULT_FONT_SIZE;