From 7627b24b7be2b680adec2e3c1c263423ac7d1ef9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=8D=A3=E6=B5=A9?= <1652154670@qq.com> Date: Fri, 31 Mar 2023 14:38:43 +0800 Subject: [PATCH 01/16] 111 --- 123.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 123.txt diff --git a/123.txt b/123.txt new file mode 100644 index 0000000..b49c396 --- /dev/null +++ b/123.txt @@ -0,0 +1,2 @@ +123 +aaaa \ No newline at end of file From badc9fc0c3a26a2dc53bf78f59e1e3f935596a84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=A6=B9=E6=98=95?= <2819428065@qq.com> Date: Fri, 7 Apr 2023 14:02:58 +0800 Subject: [PATCH 02/16] doc --- .../.gradle/7.5/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Notes-master/.gradle/7.5/fileHashes/fileHashes.lock b/Notes-master/.gradle/7.5/fileHashes/fileHashes.lock index 8a1325867bbfb539becf22d2e791b2953f85baf8..e0966e9e24567f2966c27ffdc103e1cc63e55644 100644 GIT binary patch literal 17 VcmZS1`(tmrQ~q{20~j#J0RS_V1a$xa literal 17 VcmZS1`(tmrQ~q{20~j#J001+S1aklY From 03fba0d9fc78bccdfe27c03ec11becfba60b5a5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=A6=B9=E6=98=95?= <2819428065@qq.com> Date: Thu, 13 Apr 2023 21:37:16 +0800 Subject: [PATCH 03/16] =?UTF-8?q?=E6=B3=9B=E8=AF=BB=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E5=88=9D=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Notes-master/.idea/deploymentTargetDropDown.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Notes-master/.idea/deploymentTargetDropDown.xml b/Notes-master/.idea/deploymentTargetDropDown.xml index 2557e4b..468a52d 100644 --- a/Notes-master/.idea/deploymentTargetDropDown.xml +++ b/Notes-master/.idea/deploymentTargetDropDown.xml @@ -7,11 +7,11 @@ - + - + \ No newline at end of file From 3a317b4998791d552915b0f939dfe2dab9d0cc3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=A6=B9=E6=98=95?= <2819428065@qq.com> Date: Fri, 14 Apr 2023 13:17:45 +0800 Subject: [PATCH 04/16] 1 --- doc/软件工程.docx | Bin 0 -> 244526 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/软件工程.docx diff --git a/doc/软件工程.docx b/doc/软件工程.docx new file mode 100644 index 0000000000000000000000000000000000000000..ad0ff7904871387748ad73b19afb60db4e1cde08 GIT binary patch literal 244526 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 literal 0 HcmV?d00001 From 385cf12527a3687f9f374e203d064f7cbd1d1be1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=A6=B9=E6=98=95?= <2819428065@qq.com> Date: Fri, 14 Apr 2023 14:26:58 +0800 Subject: [PATCH 05/16] 1 --- doc/软件工程.docx | Bin 244526 -> 277948 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/软件工程.docx b/doc/软件工程.docx index ad0ff7904871387748ad73b19afb60db4e1cde08..04969386c6d6e942d203a0783853e3da29e80ae8 100644 GIT binary patch delta 52515 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 bA=qW@P0Tk9Kz-W>0blBb+>`_Bz##tte}i@6 delta 19258 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 n94 From 27cf75b42216de83d0b129d0b4897080c199de04 Mon Sep 17 00:00:00 2001 From: pyote5ckf <2424012376@qq.com> Date: Mon, 17 Apr 2023 21:40:58 +0800 Subject: [PATCH 06/16] ADD file via upload --- e76723e5a7 | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 e76723e5a7 diff --git a/e76723e5a7 b/e76723e5a7 new file mode 100644 index 0000000..e69de29 From b4ea29e9abdbd0be7251f859850ba0e15afcb403 Mon Sep 17 00:00:00 2001 From: pyote5ckf <2424012376@qq.com> Date: Mon, 17 Apr 2023 21:46:10 +0800 Subject: [PATCH 07/16] Delete 'e76723e5a7' --- e76723e5a7 | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 e76723e5a7 diff --git a/e76723e5a7 b/e76723e5a7 deleted file mode 100644 index e69de29..0000000 From 17625e4ccd6b60de0944b5527f3c7b4f33c55325 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=8D=93=E6=9D=A8?= <2424012376@qq.com> Date: Mon, 17 Apr 2023 21:51:55 +0800 Subject: [PATCH 08/16] =?UTF-8?q?=E5=BC=A0=E5=8D=93=E6=9D=A8=E7=B2=BE?= =?UTF-8?q?=E8=AF=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tool类/BackupUtils.txt | 310 ++++++++++++++++++ doc/210340038张卓杨/tool类/DataUtils.txt | 264 +++++++++++++++ .../tool类/GTaskStringUtils.txt | 100 ++++++ .../tool类/ResourceParser.txt | 163 +++++++++ .../widget类/NoteWidgetProvider.txt | 118 +++++++ .../widget类/NoteWidgetProvider_2x.txt | 34 ++ .../widget类/NoteWidgetProvider_4x.txt | 33 ++ 7 files changed, 1022 insertions(+) create mode 100644 doc/210340038张卓杨/tool类/BackupUtils.txt create mode 100644 doc/210340038张卓杨/tool类/DataUtils.txt create mode 100644 doc/210340038张卓杨/tool类/GTaskStringUtils.txt create mode 100644 doc/210340038张卓杨/tool类/ResourceParser.txt create mode 100644 doc/210340038张卓杨/widget类/NoteWidgetProvider.txt create mode 100644 doc/210340038张卓杨/widget类/NoteWidgetProvider_2x.txt create mode 100644 doc/210340038张卓杨/widget类/NoteWidgetProvider_4x.txt diff --git a/doc/210340038张卓杨/tool类/BackupUtils.txt b/doc/210340038张卓杨/tool类/BackupUtils.txt new file mode 100644 index 0000000..7e5abe4 --- /dev/null +++ b/doc/210340038张卓杨/tool类/BackupUtils.txt @@ -0,0 +1,310 @@ +BackupUtils: + +package net.micode.notes.tool; + +public class BackupUtils { + private static final String TAG = "BackupUtils"; + // Singleton stuff + private static BackupUtils sInstance; //类里面定义自己类的对象 + + public static synchronized BackupUtils getInstance(Context context) { + //当某个线程运行时,要检查其他线程是否也在进行 + if (sInstance == null) { + sInstance = new BackupUtils(context); + } + return sInstance; + } + + /** + * Following states are signs to represents backup or restore + * status + */ + // Currently, the sdcard is not mounted 手机内没有SD卡 + public static final int STATE_SD_CARD_UNMOUONTED = 0; + // The backup file not exist 没有备份文件夹 + public static final int STATE_BACKUP_FILE_NOT_EXIST = 1; + // The data is not well formated, may be changed by other programs 数据已被破坏,也可能被修改 + public static final int STATE_DATA_DESTROIED = 2; + // Some run-time exception which causes restore or backup fails 超时异常 + public static final int STATE_SYSTEM_ERROR = 3; + // Backup or restore success 成功存储 + public static final int STATE_SUCCESS = 4; + + private TextExport mTextExport; + + private BackupUtils(Context context) { //初始化函数 + mTextExport = new TextExport(context); + } + + private static boolean externalStorageAvailable() { //外部存储功能是否正常 + return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()); + } + + public int exportToText() { + return mTextExport.exportToText(); + } + + public String getExportedTextFileName() { + return mTextExport.mFileName; + } + + public String getExportedTextFileDir() { + return mTextExport.mFileDirectory; + } + + private static class TextExport { + private static final String[] NOTE_PROJECTION = { + NoteColumns.ID, + NoteColumns.MODIFIED_DATE, + NoteColumns.SNIPPET, + NoteColumns.TYPE + }; + + private static final int NOTE_COLUMN_ID = 0; + + private static final int NOTE_COLUMN_MODIFIED_DATE = 1; + + private static final int NOTE_COLUMN_SNIPPET = 2; + + private static final String[] DATA_PROJECTION = { + DataColumns.CONTENT, + DataColumns.MIME_TYPE, + DataColumns.DATA1, + DataColumns.DATA2, + DataColumns.DATA3, + DataColumns.DATA4, + }; + + private static final int DATA_COLUMN_CONTENT = 0; + + private static final int DATA_COLUMN_MIME_TYPE = 1; + + private static final int DATA_COLUMN_CALL_DATE = 2; + + private static final int DATA_COLUMN_PHONE_NUMBER = 4; + + private final String [] TEXT_FORMAT; + private static final int FORMAT_FOLDER_NAME = 0; + private static final int FORMAT_NOTE_DATE = 1; + private static final int FORMAT_NOTE_CONTENT = 2; + + private Context mContext; + private String mFileName; + private String mFileDirectory; + + public TextExport(Context context) { + TEXT_FORMAT = context.getResources().getStringArray(R.array.format_for_exported_note); + mContext = context; + mFileName = ""; + mFileDirectory = ""; + } + + private String getFormat(int id) { //获取文本的组成部分 + return TEXT_FORMAT[id]; + } + + /** + * Export the folder identified by folder id to text + */ + private void exportFolderToText(String folderId, PrintStream ps) { + // Query notes belong to this folder 通过查询parent id来制定ID文件夹下的Note + Cursor notesCursor = mContext.getContentResolver().query(Notes.CONTENT_NOTE_URI, + NOTE_PROJECTION, NoteColumns.PARENT_ID + "=?", new String[] { + folderId + }, null); + + if (notesCursor != null) { + if (notesCursor.moveToFirst()) { + do { + // Print note's last modified date ps里面保存有这份note的日期 + 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()); + } + notesCursor.close(); + } + } + + /** + * Export note identified by id to a print stream + */ + private void exportNoteToText(String noteId, PrintStream ps) { + Cursor dataCursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI, + DATA_PROJECTION, DataColumns.NOTE_ID + "=?", new String[] { + noteId + }, null); + + if (dataCursor != null) { //利用光标来扫描内容,看是callnote或者note二者中的哪一个,靠ps.printline输出 + if (dataCursor.moveToFirst()) { + do { + String mimeType = dataCursor.getString(DATA_COLUMN_MIME_TYPE); + if (DataConstants.CALL_NOTE.equals(mimeType)) { + // Print phone number 输出电话号 + String phoneNumber = dataCursor.getString(DATA_COLUMN_PHONE_NUMBER); + long callDate = dataCursor.getLong(DATA_COLUMN_CALL_DATE); + String location = dataCursor.getString(DATA_COLUMN_CONTENT); + + if (!TextUtils.isEmpty(phoneNumber)) { //判断是否为空字符 + ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), + phoneNumber)); + } + // Print call date + ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), DateFormat + .format(mContext.getString(R.string.format_datetime_mdhm), + callDate))); + // Print call attachment location 打印调用附件位置 + if (!TextUtils.isEmpty(location)) { + ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), + location)); + } + } else if (DataConstants.NOTE.equals(mimeType)) { + String content = dataCursor.getString(DATA_COLUMN_CONTENT); + if (!TextUtils.isEmpty(content)) { + ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), + content)); + } + } + } while (dataCursor.moveToNext()); + } + dataCursor.close(); + } + // print a line separator between note 在注释间打印分隔符 + try { + ps.write(new byte[] { + Character.LINE_SEPARATOR, Character.LETTER_NUMBER + }); + } catch (IOException e) { + Log.e(TAG, e.toString()); + } + } + + /** + * Note will be exported as text which is user readable + */ + public int exportToText() { //总函数,调用上面的exportFolder和exportNote + if (!externalStorageAvailable()) { + Log.d(TAG, "Media was not mounted"); + return STATE_SD_CARD_UNMOUONTED; + } + + PrintStream ps = getExportToTextPrintStream(); + if (ps == null) { + Log.e(TAG, "get print stream error"); + return STATE_SYSTEM_ERROR; + } + // First export folder and its notes 导出文件夹里面包含的便签 + Cursor folderCursor = mContext.getContentResolver().query( + Notes.CONTENT_NOTE_URI, + NOTE_PROJECTION, + "(" + NoteColumns.TYPE + "=" + Notes.TYPE_FOLDER + " AND " + + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER + ") OR " + + NoteColumns.ID + "=" + Notes.ID_CALL_RECORD_FOLDER, null, null); + + if (folderCursor != null) { + if (folderCursor.moveToFirst()) { + do { + // Print folder's name + String folderName = ""; + if(folderCursor.getLong(NOTE_COLUMN_ID) == Notes.ID_CALL_RECORD_FOLDER) { + folderName = mContext.getString(R.string.call_record_folder_name); + } else { + folderName = folderCursor.getString(NOTE_COLUMN_SNIPPET); + } + if (!TextUtils.isEmpty(folderName)) { + ps.println(String.format(getFormat(FORMAT_FOLDER_NAME), folderName)); + } + String folderId = folderCursor.getString(NOTE_COLUMN_ID); + exportFolderToText(folderId, ps); + } while (folderCursor.moveToNext()); + } + folderCursor.close(); + } + + // Export notes in root's folder 将根目录里的便签导出 + Cursor noteCursor = mContext.getContentResolver().query( + Notes.CONTENT_NOTE_URI, + NOTE_PROJECTION, + NoteColumns.TYPE + "=" + +Notes.TYPE_NOTE + " AND " + NoteColumns.PARENT_ID + + "=0", null, null); + + if (noteCursor != null) { + if (noteCursor.moveToFirst()) { + do { + ps.println(String.format(getFormat(FORMAT_NOTE_DATE), DateFormat.format( + mContext.getString(R.string.format_datetime_mdhm), + noteCursor.getLong(NOTE_COLUMN_MODIFIED_DATE)))); + // Query data belong to this note 查询数据属于此备注 + String noteId = noteCursor.getString(NOTE_COLUMN_ID); + exportNoteToText(noteId, ps); + } while (noteCursor.moveToNext()); + } + noteCursor.close(); + } + ps.close(); + + return STATE_SUCCESS; + } + + /** + * Get a print stream pointed to the file {@generateExportedTextFile} + */ + private PrintStream getExportToTextPrintStream() { + File file = generateFileMountedOnSDcard(mContext, R.string.file_path, + R.string.file_name_txt_format); + if (file == null) { + Log.e(TAG, "create file to exported failed"); + return null; + } + mFileName = file.getName(); + mFileDirectory = mContext.getString(R.string.file_path); + PrintStream ps = null; + try { + FileOutputStream fos = new FileOutputStream(file); + ps = new PrintStream(fos); //将ps输出流输出到特定的文件 + } catch (FileNotFoundException e) { + e.printStackTrace(); + return null; + } catch (NullPointerException e) { + e.printStackTrace(); + return null; + } + return ps; + } + } + + /** + * Generate the text file to store imported data + */ + private static File generateFileMountedOnSDcard(Context context, int filePathResId, int fileNameFormatResId) { + StringBuilder sb = new StringBuilder(); + sb.append(Environment.getExternalStorageDirectory()); //SD卡的存储路径 + sb.append(context.getString(filePathResId)); //文件的存储路径 + File filedir = new File(sb.toString()); //filedir应该就是用来存储路径信息 + sb.append(context.getString( + fileNameFormatResId, + DateFormat.format(context.getString(R.string.format_date_ymd), + System.currentTimeMillis()))); + File file = new File(sb.toString()); + + try { //如果这些文件不存在,则新建 + if (!filedir.exists()) { + filedir.mkdir(); + } + if (!file.exists()) { + file.createNewFile(); + } + return file; + } catch (SecurityException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } +// try catch 异常处理 + return null; + } +} + \ No newline at end of file diff --git a/doc/210340038张卓杨/tool类/DataUtils.txt b/doc/210340038张卓杨/tool类/DataUtils.txt new file mode 100644 index 0000000..858cbf6 --- /dev/null +++ b/doc/210340038张卓杨/tool类/DataUtils.txt @@ -0,0 +1,264 @@ +DataUtils: + +package net.micode.notes.tool; + +public class DataUtils { + public static final String TAG = "DataUtils"; + public static boolean batchDeleteNotes(ContentResolver resolver, HashSet ids) { //删除多个笔记 + if (ids == null) { + Log.d(TAG, "the ids is null"); + return true; + } + if (ids.size() == 0) { + Log.d(TAG, "no id is in the hashset"); + return true; + } + + ArrayList operationList = new ArrayList(); //提供一个任务列表 + for (long id : ids) { + if(id == Notes.ID_ROOT_FOLDER) { + Log.e(TAG, "Don't delete system folder root"); + continue; + } //如果发现是根文件夹,则不删除 + ContentProviderOperation.Builder builder = ContentProviderOperation + .newDelete(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id)); //用newDelete实现删除功能 + operationList.add(builder.build()); // + } + try { + ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList);//Authority用于唯一标识这个ContentProvider,外部调用者可以根据这个标识来找到它。 + if (results == null || results.length == 0 || results[0] == null) { + Log.d(TAG, "delete notes failed, ids:" + ids.toString()); + return false; + } + return true; + } catch (RemoteException e) { + Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); + } catch (OperationApplicationException e) { + Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); + } + return false; + } + + public static void moveNoteToFoler(ContentResolver resolver, long id, long srcFolderId, long desFolderId) { + ContentValues values = new ContentValues(); + values.put(NoteColumns.PARENT_ID, desFolderId); + values.put(NoteColumns.ORIGIN_PARENT_ID, srcFolderId); + values.put(NoteColumns.LOCAL_MODIFIED, 1); + resolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id), values, null, null); //对需要移动的便签进行数据更新,然后用update实现 + } + + public static boolean batchMoveToFolder(ContentResolver resolver, HashSet ids, + long folderId) { + if (ids == null) { + Log.d(TAG, "the ids is null"); + return true; + } + + ArrayList operationList = new ArrayList(); + for (long id : ids) { + ContentProviderOperation.Builder builder = ContentProviderOperation + .newUpdate(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id)); //通过withAppendedId方法,为该Uri加上ID + builder.withValue(NoteColumns.PARENT_ID, folderId); + builder.withValue(NoteColumns.LOCAL_MODIFIED, 1); + operationList.add(builder.build()); + }//将ids里包含的每一列的数据逐次加入到operationList中,等待最后的批量处理 + + try { + ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList); //applyBatch一次性处理一个操作列表 + if (results == null || results.length == 0 || results[0] == null) { + Log.d(TAG, "delete notes failed, ids:" + ids.toString()); + return false; + } + return true; + } catch (RemoteException e) { + Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); + } catch (OperationApplicationException e) { + Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); + } + return false; + } + + /** + * Get the all folder count except system folders {@link Notes#TYPE_SYSTEM}} + */ + public static int getUserFolderCount(ContentResolver resolver) { + Cursor cursor =resolver.query(Notes.CONTENT_NOTE_URI, + new String[] { "COUNT(*)" }, + NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>?", + new String[] { String.valueOf(Notes.TYPE_FOLDER), String.valueOf(Notes.ID_TRASH_FOLER)}, + null); //筛选条件:源文件不为trash folder + + int count = 0; + if(cursor != null) { + if(cursor.moveToFirst()) { + try { + count = cursor.getInt(0); + } catch (IndexOutOfBoundsException e) { + Log.e(TAG, "get folder count failed:" + e.toString()); + } finally { + cursor.close(); + } + } + } + return count; + } + + public static boolean visibleInNoteDatabase(ContentResolver resolver, long noteId, int type) { + Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), //通过withAppendedId方法,为该Uri加上ID + null, + NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER, + new String [] {String.valueOf(type)}, + null); //查询条件:type符合,且不属于垃圾文件夹 + + boolean exist = false; + if (cursor != null) { + if (cursor.getCount() > 0) {//用getcount函数判断cursor是否为空 + exist = true; + } + cursor.close(); + } + return exist; + } + + public static boolean existInNoteDatabase(ContentResolver resolver, long noteId) { + Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), + null, null, null, null); + + boolean exist = false; + if (cursor != null) { + if (cursor.getCount() > 0) { + exist = true; + } + cursor.close(); + } + return exist; + } + + public static boolean existInDataDatabase(ContentResolver resolver, long dataId) { + Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId), + null, null, null, null); + + boolean exist = false; + if (cursor != null) { + if (cursor.getCount() > 0) { + exist = true; + } + cursor.close(); + } + return exist; + } + + public static boolean checkVisibleFolderName(ContentResolver resolver, String name) { + Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, null, + NoteColumns.TYPE + "=" + Notes.TYPE_FOLDER + + " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER + + " AND " + NoteColumns.SNIPPET + "=?", + new String[] { name }, null); + //通过名字查询文件是否存在 + boolean exist = false; + if(cursor != null) { + if(cursor.getCount() > 0) { + exist = true; + } + cursor.close(); + } + return exist; + } + + public static HashSet getFolderNoteWidget(ContentResolver resolver, long folderId) { + Cursor c = resolver.query(Notes.CONTENT_NOTE_URI, + new String[] { NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE }, + NoteColumns.PARENT_ID + "=?", + new String[] { String.valueOf(folderId) }, + null); //查询条件:父ID是传入的folderId; + + HashSet set = null; + if (c != null) { + if (c.moveToFirst()) { + set = new HashSet(); + do { + try { + AppWidgetAttribute widget = new AppWidgetAttribute(); + widget.widgetId = c.getInt(0); //0对应的NoteColumns.WIDGET_ID + widget.widgetType = c.getInt(1); //1对应的NoteColumns.WIDGET_TYPE + set.add(widget); + } catch (IndexOutOfBoundsException e) { + Log.e(TAG, e.toString()); + } + } while (c.moveToNext()); //查询下一条 + } + c.close(); + } + return set; + } + + public static String getCallNumberByNoteId(ContentResolver resolver, long noteId) { + Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, + new String [] { CallNote.PHONE_NUMBER }, + CallNote.NOTE_ID + "=? AND " + CallNote.MIME_TYPE + "=?", + new String [] { String.valueOf(noteId), CallNote.CONTENT_ITEM_TYPE }, + null); + + if (cursor != null && cursor.moveToFirst()) { + try { + return cursor.getString(0); + } catch (IndexOutOfBoundsException e) { + Log.e(TAG, "Get call number fails " + e.toString()); + } finally { + cursor.close(); + } + } + return ""; + } + + public static long getNoteIdByPhoneNumberAndCallDate(ContentResolver resolver, String phoneNumber, long callDate) { + Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, + new String [] { CallNote.NOTE_ID }, + CallNote.CALL_DATE + "=? AND " + CallNote.MIME_TYPE + "=? AND PHONE_NUMBERS_EQUAL(" + + CallNote.PHONE_NUMBER + ",?)", + new String [] { String.valueOf(callDate), CallNote.CONTENT_ITEM_TYPE, phoneNumber }, + null); + //通过数据库操作,查询条件是(callDate和phoneNumber匹配传入参数的值) + + if (cursor != null) { + if (cursor.moveToFirst()) { + try { + return cursor.getLong(0); //0对应的CallNote.NOTE_ID + } catch (IndexOutOfBoundsException e) { + Log.e(TAG, "Get call note id fails " + e.toString()); + } + } + cursor.close(); + } + return 0; + } + + public static String getSnippetById(ContentResolver resolver, long noteId) { + Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, + new String [] { NoteColumns.SNIPPET }, + NoteColumns.ID + "=?", + new String [] { String.valueOf(noteId)}, + null);//查询条件:noteId + + if (cursor != null) { + String snippet = ""; + if (cursor.moveToFirst()) { + snippet = cursor.getString(0); + } + cursor.close(); + return snippet; + } + throw new IllegalArgumentException("Note is not found with id: " + noteId); + } + public static String getFormattedSnippet(String snippet) { //对字符串进行格式处理,将字符串两头的空格去掉,同时将换行符去掉 + if (snippet != null) { + snippet = snippet.trim(); + int index = snippet.indexOf('\n'); + if (index != -1) { + snippet = snippet.substring(0, index); + } + } + return snippet; + } + +} \ No newline at end of file diff --git a/doc/210340038张卓杨/tool类/GTaskStringUtils.txt b/doc/210340038张卓杨/tool类/GTaskStringUtils.txt new file mode 100644 index 0000000..71a0694 --- /dev/null +++ b/doc/210340038张卓杨/tool类/GTaskStringUtils.txt @@ -0,0 +1,100 @@ +GTaskStringUtils: + +package net.micode.notes.tool; + +//定义了很多的静态字符串,目的就是为了提供jsonObject中相应字符串的钥匙。 +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"; + +} \ No newline at end of file diff --git a/doc/210340038张卓杨/tool类/ResourceParser.txt b/doc/210340038张卓杨/tool类/ResourceParser.txt new file mode 100644 index 0000000..5750ec3 --- /dev/null +++ b/doc/210340038张卓杨/tool类/ResourceParser.txt @@ -0,0 +1,163 @@ +ResourceParser: + +package net.micode.notes.tool; + +public class ResourceParser { + + public static final int YELLOW = 0; + public static final int BLUE = 1; + public static final int WHITE = 2; + public static final int GREEN = 3; + public static final int RED = 4; + + public static final int BG_DEFAULT_COLOR = YELLOW; + + public static final int TEXT_SMALL = 0; + public static final int TEXT_MEDIUM = 1; + public static final int TEXT_LARGE = 2; + public static final int TEXT_SUPER = 3; + + public static final int BG_DEFAULT_FONT_SIZE = TEXT_MEDIUM; + + public static class NoteBgResources { + private final static int [] BG_EDIT_RESOURCES = new int [] { + R.drawable.edit_yellow, + R.drawable.edit_blue, + R.drawable.edit_white, + R.drawable.edit_green, + R.drawable.edit_red + //R.drawable 图片资源 + }; + + private final static int [] BG_EDIT_TITLE_RESOURCES = new int [] { + R.drawable.edit_title_yellow, + R.drawable.edit_title_blue, + R.drawable.edit_title_white, + R.drawable.edit_title_green, + R.drawable.edit_title_red + }; + + public static int getNoteBgResource(int id) { + return BG_EDIT_RESOURCES[id]; + } + + public static int getNoteTitleBgResource(int id) { + return BG_EDIT_TITLE_RESOURCES[id]; + } + } + //获取默认的背景颜色 + public static int getDefaultBgId(Context context) { + if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean( + NotesPreferenceActivity.PREFERENCE_SET_BG_COLOR_KEY, false)) { + return (int) (Math.random() * NoteBgResources.BG_EDIT_RESOURCES.length); + } else { + return BG_DEFAULT_COLOR; + } + } + + public static class NoteItemBgResources { + private final static int [] BG_FIRST_RESOURCES = new int [] { + R.drawable.list_yellow_up, + R.drawable.list_blue_up, + R.drawable.list_white_up, + R.drawable.list_green_up, + R.drawable.list_red_up + }; + + private final static int [] BG_NORMAL_RESOURCES = new int [] { + R.drawable.list_yellow_middle, + R.drawable.list_blue_middle, + R.drawable.list_white_middle, + R.drawable.list_green_middle, + R.drawable.list_red_middle + }; + + private final static int [] BG_LAST_RESOURCES = new int [] { + R.drawable.list_yellow_down, + R.drawable.list_blue_down, + R.drawable.list_white_down, + R.drawable.list_green_down, + R.drawable.list_red_down, + }; + + private final static int [] BG_SINGLE_RESOURCES = new int [] { + R.drawable.list_yellow_single, + R.drawable.list_blue_single, + R.drawable.list_white_single, + R.drawable.list_green_single, + R.drawable.list_red_single + }; + + public static int getNoteBgFirstRes(int id) { + return BG_FIRST_RESOURCES[id]; + } + + public static int getNoteBgLastRes(int id) { + return BG_LAST_RESOURCES[id]; + } + + public static int getNoteBgSingleRes(int id) { + return BG_SINGLE_RESOURCES[id]; + } + + public static int getNoteBgNormalRes(int id) { + return BG_NORMAL_RESOURCES[id]; + } + + public static int getFolderBgRes() { + return R.drawable.list_folder; + } + } + + public static class WidgetBgResources { + private final static int [] BG_2X_RESOURCES = new int [] { + R.drawable.widget_2x_yellow, + R.drawable.widget_2x_blue, + R.drawable.widget_2x_white, + R.drawable.widget_2x_green, + R.drawable.widget_2x_red, + }; + + public static int getWidget2xBgResource(int id) { + return BG_2X_RESOURCES[id]; + } + + private final static int [] BG_4X_RESOURCES = new int [] { + R.drawable.widget_4x_yellow, + R.drawable.widget_4x_blue, + R.drawable.widget_4x_white, + R.drawable.widget_4x_green, + R.drawable.widget_4x_red + }; + + public static int getWidget4xBgResource(int id) { + return BG_4X_RESOURCES[id]; + } + } + + public static class TextAppearanceResources { + private final static int [] TEXTAPPEARANCE_RESOURCES = new int [] { + R.style.TextAppearanceNormal, + R.style.TextAppearanceMedium, + R.style.TextAppearanceLarge, + R.style.TextAppearanceSuper + }; + + //一个防止输入的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} + */ + if (id >= TEXTAPPEARANCE_RESOURCES.length) { + return BG_DEFAULT_FONT_SIZE; + } + return TEXTAPPEARANCE_RESOURCES[id]; + } + + public static int getResourcesSize() { + return TEXTAPPEARANCE_RESOURCES.length; + } + } +} \ No newline at end of file diff --git a/doc/210340038张卓杨/widget类/NoteWidgetProvider.txt b/doc/210340038张卓杨/widget类/NoteWidgetProvider.txt new file mode 100644 index 0000000..4a991cc --- /dev/null +++ b/doc/210340038张卓杨/widget类/NoteWidgetProvider.txt @@ -0,0 +1,118 @@ +NoteWidgetProvider: + +package net.micode.notes.widget; +import android.app.PendingIntent; +import android.appwidget.AppWidgetManager; +import android.appwidget.AppWidgetProvider; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.database.Cursor; +import android.util.Log; +import android.widget.RemoteViews; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.tool.ResourceParser; +import net.micode.notes.ui.NoteEditActivity; +import net.micode.notes.ui.NotesListActivity; + +public abstract class NoteWidgetProvider extends AppWidgetProvider { + public static final String [] PROJECTION = new String [] { + NoteColumns.ID, + NoteColumns.BG_COLOR_ID, + NoteColumns.SNIPPET + };//小米便签的桌面挂件 + + public static final int COLUMN_ID = 0; + public static final int COLUMN_BG_COLOR_ID = 1; + public static final int COLUMN_SNIPPET = 2; + + private static final String TAG = "NoteWidgetProvider"; + + @Override + public void onDeleted(Context context, int[] appWidgetIds) { + ContentValues values = new ContentValues(); + values.put(NoteColumns.WIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); + for (int i = 0; i < appWidgetIds.length; i++) { + context.getContentResolver().update(Notes.CONTENT_NOTE_URI, + values, + NoteColumns.WIDGET_ID + "=?", + new String[] { String.valueOf(appWidgetIds[i])}); + } + } + + private Cursor getNoteWidgetInfo(Context context, int widgetId) { + return context.getContentResolver().query(Notes.CONTENT_NOTE_URI, + PROJECTION, + NoteColumns.WIDGET_ID + "=? AND " + NoteColumns.PARENT_ID + "<>?", + new String[] { String.valueOf(widgetId), String.valueOf(Notes.ID_TRASH_FOLER) }, + null); + } + + protected void update(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + update(context, appWidgetManager, appWidgetIds, false); + } + + private void update(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds, + boolean privacyMode) { + for (int i = 0; i < appWidgetIds.length; i++) { + if (appWidgetIds[i] != AppWidgetManager.INVALID_APPWIDGET_ID) { + int bgId = ResourceParser.getDefaultBgId(context); + String snippet = ""; + Intent intent = new Intent(context, NoteEditActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); + intent.putExtra(Notes.INTENT_EXTRA_WIDGET_ID, appWidgetIds[i]); + intent.putExtra(Notes.INTENT_EXTRA_WIDGET_TYPE, getWidgetType()); + + Cursor c = getNoteWidgetInfo(context, appWidgetIds[i]); + if (c != null && c.moveToFirst()) { + if (c.getCount() > 1) { + Log.e(TAG, "Multiple message with same widget id:" + appWidgetIds[i]); + c.close(); + return; + } + snippet = c.getString(COLUMN_SNIPPET); + bgId = c.getInt(COLUMN_BG_COLOR_ID); + intent.putExtra(Intent.EXTRA_UID, c.getLong(COLUMN_ID)); + intent.setAction(Intent.ACTION_VIEW); + } else { + snippet = context.getResources().getString(R.string.widget_havenot_content); + intent.setAction(Intent.ACTION_INSERT_OR_EDIT); + } + + if (c != null) { + c.close(); + } + + RemoteViews rv = new RemoteViews(context.getPackageName(), getLayoutId()); + rv.setImageViewResource(R.id.widget_bg_image, getBgResourceId(bgId)); + intent.putExtra(Notes.INTENT_EXTRA_BACKGROUND_ID, bgId); + /** + * Generate the pending intent to start host for the widget + */ + PendingIntent pendingIntent = null; + if (privacyMode) { + rv.setTextViewText(R.id.widget_text, + context.getString(R.string.widget_under_visit_mode)); + pendingIntent = PendingIntent.getActivity(context, appWidgetIds[i], new Intent( + context, NotesListActivity.class), PendingIntent.FLAG_UPDATE_CURRENT); + } else { + rv.setTextViewText(R.id.widget_text, snippet); + pendingIntent = PendingIntent.getActivity(context, appWidgetIds[i], intent, + PendingIntent.FLAG_UPDATE_CURRENT); + } + + rv.setOnClickPendingIntent(R.id.widget_text, pendingIntent); + appWidgetManager.updateAppWidget(appWidgetIds[i], rv); + } + } + } + + protected abstract int getBgResourceId(int bgId); + + protected abstract int getLayoutId(); + + protected abstract int getWidgetType(); +} \ No newline at end of file diff --git a/doc/210340038张卓杨/widget类/NoteWidgetProvider_2x.txt b/doc/210340038张卓杨/widget类/NoteWidgetProvider_2x.txt new file mode 100644 index 0000000..e21533f --- /dev/null +++ b/doc/210340038张卓杨/widget类/NoteWidgetProvider_2x.txt @@ -0,0 +1,34 @@ +NoteWidgetProvider_2x: + +package net.micode.notes.widget; + +import android.appwidget.AppWidgetManager; +import android.content.Context; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.tool.ResourceParser; + + +public class NoteWidgetProvider_2x extends NoteWidgetProvider { + //2倍大小的桌面挂件 + @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + super.update(context, appWidgetManager, appWidgetIds); + } + + @Override + protected int getLayoutId() { + return R.layout.widget_2x; + } + + @Override + protected int getBgResourceId(int bgId) { + return ResourceParser.WidgetBgResources.getWidget2xBgResource(bgId); + } + + @Override + protected int getWidgetType() { + return Notes.TYPE_WIDGET_2X; + } +} diff --git a/doc/210340038张卓杨/widget类/NoteWidgetProvider_4x.txt b/doc/210340038张卓杨/widget类/NoteWidgetProvider_4x.txt new file mode 100644 index 0000000..8690867 --- /dev/null +++ b/doc/210340038张卓杨/widget类/NoteWidgetProvider_4x.txt @@ -0,0 +1,33 @@ +NoteWidgetProvider_4x: + +package net.micode.notes.widget; + +import android.appwidget.AppWidgetManager; +import android.content.Context; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.tool.ResourceParser; + + +public class NoteWidgetProvider_4x extends NoteWidgetProvider { + //4倍大小的桌面挂件 + @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + super.update(context, appWidgetManager, appWidgetIds); + } + + protected int getLayoutId() { + return R.layout.widget_4x; + } + + @Override + protected int getBgResourceId(int bgId) { + return ResourceParser.WidgetBgResources.getWidget4xBgResource(bgId); + } + + @Override + protected int getWidgetType() { + return Notes.TYPE_WIDGET_4X; + } +} From af332a0b83fe86cc6ead5ff255fc6cfa6d66ac36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=8D=A3=E6=B5=A9?= <1652154670@qq.com> Date: Wed, 19 Apr 2023 18:59:20 +0800 Subject: [PATCH 09/16] =?UTF-8?q?=E7=B2=BE=E8=AF=BBnotes=E5=8C=85model?= =?UTF-8?q?=E5=8C=85=EF=BC=8Cgtask=E5=8C=85exception=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.gradle/7.5/fileHashes/fileHashes.bin | Bin 42647 -> 42747 bytes .../.gradle/7.5/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes Notes-master/.idea/compiler.xml | 2 +- Notes-master/.idea/gradle.xml | 2 +- Notes-master/.idea/misc.xml | 2 +- .../java/net/micode/notes/data/Contact.java | 14 +- .../java/net/micode/notes/data/Notes.java | 110 ++++--- .../notes/data/NotesDatabaseHelper.java | 273 +++++++++--------- .../net/micode/notes/data/NotesProvider.java | 79 +++-- .../exception/ActionFailureException.java | 17 +- .../exception/NetworkFailureException.java | 18 +- .../java/net/micode/notes/model/Note.java | 58 ++-- .../net/micode/notes/model/WorkingNote.java | 96 +++--- Notes-master/local.properties | 7 +- 14 files changed, 382 insertions(+), 296 deletions(-) diff --git a/Notes-master/.gradle/7.5/fileHashes/fileHashes.bin b/Notes-master/.gradle/7.5/fileHashes/fileHashes.bin index 47f3a10f07b5968ce47b8f6144ca1ba9664d3647..25d4aeb7f24fc57a6ff08e06bd543ab17d0a63de 100644 GIT binary patch delta 116 zcmbP!mg)CdrVS<%j88Y4N+` - + \ No newline at end of file diff --git a/Notes-master/.idea/gradle.xml b/Notes-master/.idea/gradle.xml index cbbe561..a0de2a1 100644 --- a/Notes-master/.idea/gradle.xml +++ b/Notes-master/.idea/gradle.xml @@ -7,7 +7,7 @@

L`{C_N);Ms@i!aPT>X(JUZWKELoYEU(1Wq%B7( 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 JD^CR6{U0xv|49G< From 8520940050d8f680e2c37d05ebfb5ebbf963d686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=A6=B9=E6=98=95?= <2819428065@qq.com> Date: Thu, 27 Apr 2023 18:49:19 +0800 Subject: [PATCH 14/16] =?UTF-8?q?210340006=E6=9D=9C=E7=85=9C=E6=99=97ui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui包/AlarmAlertActivity.txt | 192 +++ .../ui包/AlarmReceiver.txt | 20 + .../ui包/AlarmlnitReceiver.txt | 56 + .../ui包/DateTimePacker.txt | 491 ++++++++ .../ui包/DateTimePackerDialog.txt | 87 ++ doc/210340006杜煜晗/ui包/DropdownMenu.txt | 49 + .../ui包/FoldersListAdapter.txt | 71 ++ .../ui包/NoteEditActivity.txt | 1068 +++++++++++++++++ doc/210340006杜煜晗/ui包/NoteEditText.txt | 270 +++++ doc/210340006杜煜晗/ui包/NoteItemData.txt | 214 ++++ .../ui包/NotesListActivity.txt | 1002 ++++++++++++++++ .../ui包/NotesListAdapter.txt | 257 ++++ .../ui包/NotesListItem.txt | 116 ++ .../ui包/NotesPreferenceActivity.txt | 514 ++++++++ doc/陈禹昕组泛读报告.docx | Bin 0 -> 396804 bytes 15 files changed, 4407 insertions(+) create mode 100644 doc/210340006杜煜晗/ui包/AlarmAlertActivity.txt create mode 100644 doc/210340006杜煜晗/ui包/AlarmReceiver.txt create mode 100644 doc/210340006杜煜晗/ui包/AlarmlnitReceiver.txt create mode 100644 doc/210340006杜煜晗/ui包/DateTimePacker.txt create mode 100644 doc/210340006杜煜晗/ui包/DateTimePackerDialog.txt create mode 100644 doc/210340006杜煜晗/ui包/DropdownMenu.txt create mode 100644 doc/210340006杜煜晗/ui包/FoldersListAdapter.txt create mode 100644 doc/210340006杜煜晗/ui包/NoteEditActivity.txt create mode 100644 doc/210340006杜煜晗/ui包/NoteEditText.txt create mode 100644 doc/210340006杜煜晗/ui包/NoteItemData.txt create mode 100644 doc/210340006杜煜晗/ui包/NotesListActivity.txt create mode 100644 doc/210340006杜煜晗/ui包/NotesListAdapter.txt create mode 100644 doc/210340006杜煜晗/ui包/NotesListItem.txt create mode 100644 doc/210340006杜煜晗/ui包/NotesPreferenceActivity.txt create mode 100644 doc/陈禹昕组泛读报告.docx diff --git a/doc/210340006杜煜晗/ui包/AlarmAlertActivity.txt b/doc/210340006杜煜晗/ui包/AlarmAlertActivity.txt new file mode 100644 index 0000000..e3327bd --- /dev/null +++ b/doc/210340006杜煜晗/ui包/AlarmAlertActivity.txt @@ -0,0 +1,192 @@ +package net.micode.notes.ui; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.DialogInterface.OnClickListener; +import android.content.DialogInterface.OnDismissListener; +import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; +import android.media.RingtoneManager; +import android.net.Uri; +import android.os.Bundle; +import android.os.PowerManager; +import android.provider.Settings; +import android.view.Window; +import android.view.WindowManager; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.tool.DataUtils; + +import java.io.IOException; + +public class AlarmAlertActivity extends Activity implements OnClickListener, OnDismissListener { + private long mNoteId; //文本在数据库存储中的ID号 + private String mSnippet; //闹钟提示时出现的文本片段 + private static final int SNIPPET_PREW_MAX_LEN = 60; + MediaPlayer mPlayer; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + //Bundle类型的数据与Map类型的数据相似,都是以key-value的形式存储数据的 + //onsaveInstanceState方法是用来保存Activity的状态的 + //能从onCreate的参数savedInsanceState中获得状态数据 + requestWindowFeature(Window.FEATURE_NO_TITLE); + //界面显示——无标题 + + final Window win = getWindow(); + win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); + + if (!isScreenOn()) { + win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON + //保持窗体点亮 + | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON + //将窗体点亮 + | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON + //允许窗体点亮时锁屏 + | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR); + }//在手机锁屏后如果到了闹钟提示时间,点亮屏幕 + + Intent intent = getIntent(); + + try { + mNoteId = Long.valueOf(intent.getData().getPathSegments().get(1)); + mSnippet = DataUtils.getSnippetById(this.getContentResolver(), mNoteId); + //根据ID从数据库中获取标签的内容; + //getContentResolver()是实现数据共享,实例存储。 + mSnippet = mSnippet.length() > SNIPPET_PREW_MAX_LEN ? mSnippet.substring(0, + SNIPPET_PREW_MAX_LEN) + getResources().getString(R.string.notelist_string_info) + : mSnippet; + //判断标签片段是否达到符合长度 + } catch (IllegalArgumentException e) { + e.printStackTrace(); + return; + } + /* + try + { + // 代码区 + } + catch(Exception e) + { + // 异常处理 + } + 代码区如果有错误,就会返回所写异常的处理。*/ + mPlayer = new MediaPlayer(); + if (DataUtils.visibleInNoteDatabase(getContentResolver(), mNoteId, Notes.TYPE_NOTE)) { + showActionDialog(); + //弹出对话框 + playAlarmSound(); + //闹钟提示音激发 + } else { + finish(); + //完成闹钟动作 + } + } + + private boolean isScreenOn() { + //判断屏幕是否锁屏,调用系统函数判断,最后返回值是布尔类型 + PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); + return pm.isScreenOn(); + } + + private void playAlarmSound() { + //闹钟提示音激发 + Uri url = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM); + //调用系统的铃声管理URI,得到闹钟提示音 + int silentModeStreams = Settings.System.getInt(getContentResolver(), + Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0); + + if ((silentModeStreams & (1 << AudioManager.STREAM_ALARM)) != 0) { + mPlayer.setAudioStreamType(silentModeStreams); + } else { + mPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); + } + try { + mPlayer.setDataSource(this, url); + //方法:setDataSource(Context context, Uri uri) + //解释:无返回值,设置多媒体数据来源【根据 Uri】 + mPlayer.prepare(); + //准备同步 + mPlayer.setLooping(true); + //设置是否循环播放 + mPlayer.start(); + //开始播放 + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + //e.printStackTrace()函数功能是抛出异常, 还将显示出更深的调用信息 + //System.out.println(e),这个方法打印出异常,并且输出在哪里出现的异常 + } catch (SecurityException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalStateException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + private void showActionDialog() { + AlertDialog.Builder dialog = new AlertDialog.Builder(this); + //AlertDialog的构造方法全部是Protected的 + //所以不能直接通过new一个AlertDialog来创建出一个AlertDialog。 + //要创建一个AlertDialog,就要用到AlertDialog.Builder中的create()方法 + //如这里的dialog就是新建了一个AlertDialog + dialog.setTitle(R.string.app_name); + //为对话框设置标题 + dialog.setMessage(mSnippet); + //为对话框设置内容 + dialog.setPositiveButton(R.string.notealert_ok, this); + //给对话框添加"Yes"按钮 + if (isScreenOn()) { + dialog.setNegativeButton(R.string.notealert_enter, this); + }//对话框添加"No"按钮 + dialog.show().setOnDismissListener(this); + } + + public void onClick(DialogInterface dialog, int which) { + switch (which) { + //用which来选择click后下一步的操作 + case DialogInterface.BUTTON_NEGATIVE: + //这是取消操作 + Intent intent = new Intent(this, NoteEditActivity.class); + //实现两个类间的数据传输 + intent.setAction(Intent.ACTION_VIEW); + //设置动作属性 + intent.putExtra(Intent.EXTRA_UID, mNoteId); + //实现key-value对 + //EXTRA_UID为key;mNoteId为键 + startActivity(intent); + //开始动作 + break; + default: + //这是确定操作 + break; + } + } + + public void onDismiss(DialogInterface dialog) { + //忽略 + stopAlarmSound(); + //停止闹钟声音 + finish(); + //完成该动作 + } + + private void stopAlarmSound() { + if (mPlayer != null) { + mPlayer.stop(); + //停止播放 + mPlayer.release(); + //释放MediaPlayer对象 + mPlayer = null; + } + } +} \ No newline at end of file diff --git a/doc/210340006杜煜晗/ui包/AlarmReceiver.txt b/doc/210340006杜煜晗/ui包/AlarmReceiver.txt new file mode 100644 index 0000000..f35ed7b --- /dev/null +++ b/doc/210340006杜煜晗/ui包/AlarmReceiver.txt @@ -0,0 +1,20 @@ +package net.micode.notes.ui; + +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) { + intent.setClass(context, AlarmAlertActivity.class); + //启动AlarmAlertActivity + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + //activity要存在于activity的栈中,而非activity的途径启动activity时必然不存在一个activity的栈 + //所以要新起一个栈装入启动的activity + context.startActivity(intent); + } +} +//这是实现alarm这个功能最接近用户层的包,基于上面的两个包, +//作用还需要深究但是对于setClass和addFlags的 + \ No newline at end of file diff --git a/doc/210340006杜煜晗/ui包/AlarmlnitReceiver.txt b/doc/210340006杜煜晗/ui包/AlarmlnitReceiver.txt new file mode 100644 index 0000000..353f4ae --- /dev/null +++ b/doc/210340006杜煜晗/ui包/AlarmlnitReceiver.txt @@ -0,0 +1,56 @@ +package net.micode.notes.ui; + +import android.app.AlarmManager; +import android.app.PendingIntent; +import android.content.BroadcastReceiver; +import android.content.ContentUris; +import android.content.Context; +import android.content.Intent; +import android.database.Cursor; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; + + +public class AlarmInitReceiver extends BroadcastReceiver { + + private static final String [] PROJECTION = new String [] { + NoteColumns.ID, + NoteColumns.ALERTED_DATE + }; + //对数据库的操作,调用标签ID和闹钟时间 + private static final int COLUMN_ID = 0; + private static final int COLUMN_ALERTED_DATE = 1; + + @Override + public void onReceive(Context context, Intent intent) { + long currentDate = System.currentTimeMillis(); + //System.currentTimeMillis()产生一个当前的毫秒 + //这个毫秒其实就是自1970年1月1日0时起的毫秒数 + Cursor c = context.getContentResolver().query(Notes.CONTENT_NOTE_URI, + PROJECTION, + NoteColumns.ALERTED_DATE + ">? AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE, + new String[] { String.valueOf(currentDate) }, + //将long变量currentDate转化为字符串 + null); + //Cursor在这里的作用是通过查找数据库中的标签内容,找到和当前系统时间相等的标签 + + if (c != null) { + if (c.moveToFirst()) { + do { + long alertDate = c.getLong(COLUMN_ALERTED_DATE); + Intent sender = new Intent(context, AlarmReceiver.class); + sender.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, c.getLong(COLUMN_ID))); + PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, sender, 0); + AlarmManager alermManager = (AlarmManager) context + .getSystemService(Context.ALARM_SERVICE); + alermManager.set(AlarmManager.RTC_WAKEUP, alertDate, pendingIntent); + } while (c.moveToNext()); + } + c.close(); + } + //然而通过网上查找资料发现,对于闹钟机制的启动,通常需要上面的几个步骤 + //如新建Intent、PendingIntent以及AlarmManager等 + //这里就是根据数据库里的闹钟时间创建一个闹钟机制 + } +} \ No newline at end of file diff --git a/doc/210340006杜煜晗/ui包/DateTimePacker.txt b/doc/210340006杜煜晗/ui包/DateTimePacker.txt new file mode 100644 index 0000000..c7fbbcd --- /dev/null +++ b/doc/210340006杜煜晗/ui包/DateTimePacker.txt @@ -0,0 +1,491 @@ +package net.micode.notes.ui; + +import java.text.DateFormatSymbols; +import java.util.Calendar; + +import net.micode.notes.R; + + +import android.content.Context; +import android.text.format.DateFormat; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.NumberPicker; + +public class DateTimePicker extends FrameLayout { + //FrameLayout是布局模板之一 + //所有的子元素全部在屏幕的右上方 + private static final boolean DEFAULT_ENABLE_STATE = true; + + private static final int HOURS_IN_HALF_DAY = 12; + private static final int HOURS_IN_ALL_DAY = 24; + private static final int DAYS_IN_ALL_WEEK = 7; + private static final int DATE_SPINNER_MIN_VAL = 0; + private static final int DATE_SPINNER_MAX_VAL = DAYS_IN_ALL_WEEK - 1; + private static final int HOUR_SPINNER_MIN_VAL_24_HOUR_VIEW = 0; + private static final int HOUR_SPINNER_MAX_VAL_24_HOUR_VIEW = 23; + private static final int HOUR_SPINNER_MIN_VAL_12_HOUR_VIEW = 1; + private static final int HOUR_SPINNER_MAX_VAL_12_HOUR_VIEW = 12; + private static final int MINUT_SPINNER_MIN_VAL = 0; + private static final int MINUT_SPINNER_MAX_VAL = 59; + private static final int AMPM_SPINNER_MIN_VAL = 0; + private static final int AMPM_SPINNER_MAX_VAL = 1; + //初始化控件 + private final NumberPicker mDateSpinner; + private final NumberPicker mHourSpinner; + private final NumberPicker mMinuteSpinner; + private final NumberPicker mAmPmSpinner; + //NumberPicker是数字选择器 + //这里定义的四个变量全部是在设置闹钟时需要选择的变量(如日期、时、分、上午或者下午) + private Calendar mDate; + //定义了Calendar类型的变量mDate,用于操作时间 + private String[] mDateDisplayValues = new String[DAYS_IN_ALL_WEEK]; + + private boolean mIsAm; + + private boolean mIs24HourView; + + private boolean mIsEnabled = DEFAULT_ENABLE_STATE; + + private boolean mInitialising; + + private OnDateTimeChangedListener mOnDateTimeChangedListener; + + private NumberPicker.OnValueChangeListener mOnDateChangedListener = new NumberPicker.OnValueChangeListener() { + @Override + public void onValueChange(NumberPicker picker, int oldVal, int newVal) { + mDate.add(Calendar.DAY_OF_YEAR, newVal - oldVal); + updateDateControl(); + onDateTimeChanged(); + } + };//OnValueChangeListener,这是时间改变监听器,这里主要是对日期的监听 + //将现在日期的值传递给mDate;updateDateControl是同步操作 + + private NumberPicker.OnValueChangeListener mOnHourChangedListener = new NumberPicker.OnValueChangeListener() { + //这里是对 小时(Hour) 的监听 + @Override + public void onValueChange(NumberPicker picker, int oldVal, int newVal) { + boolean isDateChanged = false; + Calendar cal = Calendar.getInstance(); + //声明一个Calendar的变量cal,便于后续的操作 + if (!mIs24HourView) { + if (!mIsAm && oldVal == HOURS_IN_HALF_DAY - 1 && newVal == HOURS_IN_HALF_DAY) { + cal.setTimeInMillis(mDate.getTimeInMillis()); + cal.add(Calendar.DAY_OF_YEAR, 1); + isDateChanged = true; + //这里是对于12小时制时,晚上11点和12点交替时对日期的更改 + } else if (mIsAm && oldVal == HOURS_IN_HALF_DAY && newVal == HOURS_IN_HALF_DAY - 1) { + cal.setTimeInMillis(mDate.getTimeInMillis()); + cal.add(Calendar.DAY_OF_YEAR, -1); + isDateChanged = true; + } + //这里是对于12小时制时,凌晨11点和12点交替时对日期的更改 + if (oldVal == HOURS_IN_HALF_DAY - 1 && newVal == HOURS_IN_HALF_DAY || + oldVal == HOURS_IN_HALF_DAY && newVal == HOURS_IN_HALF_DAY - 1) { + mIsAm = !mIsAm; + updateAmPmControl(); + }//这里是对于12小时制时,中午11点和12点交替时对AM和PM的更改 + } else { + if (oldVal == HOURS_IN_ALL_DAY - 1 && newVal == 0) { + cal.setTimeInMillis(mDate.getTimeInMillis()); + cal.add(Calendar.DAY_OF_YEAR, 1); + isDateChanged = true; + //这里是对于24小时制时,晚上11点和12点交替时对日期的更改 + } else if (oldVal == 0 && newVal == HOURS_IN_ALL_DAY - 1) { + cal.setTimeInMillis(mDate.getTimeInMillis()); + cal.add(Calendar.DAY_OF_YEAR, -1); + isDateChanged = true; + } + } //这里是对于12小时制时,凌晨11点和12点交替时对日期的更改 + int newHour = mHourSpinner.getValue() % HOURS_IN_HALF_DAY + (mIsAm ? 0 : HOURS_IN_HALF_DAY); + //通过数字选择器对newHour的赋值 + mDate.set(Calendar.HOUR_OF_DAY, newHour); + //通过set函数将新的Hour值传给mDate + onDateTimeChanged(); + if (isDateChanged) { + setCurrentYear(cal.get(Calendar.YEAR)); + setCurrentMonth(cal.get(Calendar.MONTH)); + setCurrentDay(cal.get(Calendar.DAY_OF_MONTH)); + } + } + }; + + private NumberPicker.OnValueChangeListener mOnMinuteChangedListener = new NumberPicker.OnValueChangeListener() { + @Override + //这里是对 分钟(Minute)改变的监听 + public void onValueChange(NumberPicker picker, int oldVal, int newVal) { + int minValue = mMinuteSpinner.getMinValue(); + int maxValue = mMinuteSpinner.getMaxValue(); + int offset = 0; + //设置offset,作为小时改变的一个记录数据 + if (oldVal == maxValue && newVal == minValue) { + offset += 1; + } else if (oldVal == minValue && newVal == maxValue) { + offset -= 1; + } + //如果原值为59,新值为0,则offset加1 + //如果原值为0,新值为59,则offset减1 + if (offset != 0) { + mDate.add(Calendar.HOUR_OF_DAY, offset); + mHourSpinner.setValue(getCurrentHour()); + updateDateControl(); + int newHour = getCurrentHourOfDay(); + if (newHour >= HOURS_IN_HALF_DAY) { + mIsAm = false; + updateAmPmControl(); + } else { + mIsAm = true; + updateAmPmControl(); + } + } + mDate.set(Calendar.MINUTE, newVal); + onDateTimeChanged(); + } + }; + + private NumberPicker.OnValueChangeListener mOnAmPmChangedListener = new NumberPicker.OnValueChangeListener() { + //对AM和PM的监听 + @Override + public void onValueChange(NumberPicker picker, int oldVal, int newVal) { + mIsAm = !mIsAm; + if (mIsAm) { + mDate.add(Calendar.HOUR_OF_DAY, -HOURS_IN_HALF_DAY); + } else { + mDate.add(Calendar.HOUR_OF_DAY, HOURS_IN_HALF_DAY); + } + updateAmPmControl(); + onDateTimeChanged(); + } + }; + + public interface OnDateTimeChangedListener { + void onDateTimeChanged(DateTimePicker view, int year, int month, + int dayOfMonth, int hourOfDay, int minute); + } + + public DateTimePicker(Context context) { + this(context, System.currentTimeMillis()); + }//通过对数据库的访问,获取当前的系统时间 + + public DateTimePicker(Context context, long date) { + this(context, date, DateFormat.is24HourFormat(context)); + }//上面函数的得到的是一个天文数字(1970至今的秒数),需要DateFormat将其变得有意义 + + public DateTimePicker(Context context, long date, boolean is24HourView) { + super(context); + //获取系统时间 + mDate = Calendar.getInstance(); + mInitialising = true; + mIsAm = getCurrentHourOfDay() >= HOURS_IN_HALF_DAY; + inflate(context, R.layout.datetime_picker, this); + //如果当前Activity里用到别的layout,比如对话框layout + //还要设置这个layout上的其他组件的内容,就必须用inflate()方法先将对话框的layout找出来 + //然后再用findViewById()找到它上面的其它组件 + mDateSpinner = (NumberPicker) findViewById(R.id.date); + mDateSpinner.setMinValue(DATE_SPINNER_MIN_VAL); + mDateSpinner.setMaxValue(DATE_SPINNER_MAX_VAL); + mDateSpinner.setOnValueChangedListener(mOnDateChangedListener); + + mHourSpinner = (NumberPicker) findViewById(R.id.hour); + mHourSpinner.setOnValueChangedListener(mOnHourChangedListener); + mMinuteSpinner = (NumberPicker) findViewById(R.id.minute); + mMinuteSpinner.setMinValue(MINUT_SPINNER_MIN_VAL); + mMinuteSpinner.setMaxValue(MINUT_SPINNER_MAX_VAL); + mMinuteSpinner.setOnLongPressUpdateInterval(100); + mMinuteSpinner.setOnValueChangedListener(mOnMinuteChangedListener); + + String[] stringsForAmPm = new DateFormatSymbols().getAmPmStrings(); + mAmPmSpinner = (NumberPicker) findViewById(R.id.amPm); + mAmPmSpinner.setMinValue(AMPM_SPINNER_MIN_VAL); + mAmPmSpinner.setMaxValue(AMPM_SPINNER_MAX_VAL); + mAmPmSpinner.setDisplayedValues(stringsForAmPm); + mAmPmSpinner.setOnValueChangedListener(mOnAmPmChangedListener); + + // update controls to initial state + updateDateControl(); + updateHourControl(); + updateAmPmControl(); + + set24HourView(is24HourView); + + // set to current time + setCurrentDate(date); + + setEnabled(isEnabled()); + + // set the content descriptions + mInitialising = false; + } + + @Override + public void setEnabled(boolean enabled) { + if (mIsEnabled == enabled) { + return; + } + super.setEnabled(enabled); + mDateSpinner.setEnabled(enabled); + mMinuteSpinner.setEnabled(enabled); + mHourSpinner.setEnabled(enabled); + mAmPmSpinner.setEnabled(enabled); + mIsEnabled = enabled; + } + //存在疑问!!!!!!!!!!!!!setEnabled的作用 + //下面的代码通过原程序的注释已经比较清晰,另外可以通过函数名来判断 + //下面的各函数主要是对上面代码引用到的各函数功能的实现 + @Override + public boolean isEnabled() { + return mIsEnabled; + } + + /** + * Get the current date in millis + * + * @return the current date in millis + */ + public long getCurrentDateInTimeMillis() { + return mDate.getTimeInMillis(); + }//实现函数——得到当前的秒数 + + /** + * Set the current date + * + * @param date The current date in millis + */ + public void setCurrentDate(long date) { + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(date); + setCurrentDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), + cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE)); + }//实现函数功能——设置当前的时间,参数是date + + /** + * Set the current date + * + * @param year The current year + * @param month The current month + * @param dayOfMonth The current dayOfMonth + * @param hourOfDay The current hourOfDay + * @param minute The current minute + */ + public void setCurrentDate(int year, int month, + int dayOfMonth, int hourOfDay, int minute) { + setCurrentYear(year); + setCurrentMonth(month); + setCurrentDay(dayOfMonth); + setCurrentHour(hourOfDay); + setCurrentMinute(minute); + }//实现函数功能——设置当前的时间,参数是各详细的变量 + + /** + * Get current year + * + * @return The current year + */ + //下面是得到year、month、day等值 + public int getCurrentYear() { + return mDate.get(Calendar.YEAR); + } + + /** + * Set current year + * + * @param year The current year + */ + public void setCurrentYear(int year) { + if (!mInitialising && year == getCurrentYear()) { + return; + } + mDate.set(Calendar.YEAR, year); + updateDateControl(); + onDateTimeChanged(); + } + + /** + * Get current month in the year + * + * @return The current month in the year + */ + public int getCurrentMonth() { + return mDate.get(Calendar.MONTH); + } + + /** + * Set current month in the year + * + * @param month The month in the year + */ + public void setCurrentMonth(int month) { + if (!mInitialising && month == getCurrentMonth()) { + return; + } + mDate.set(Calendar.MONTH, month); + updateDateControl(); + onDateTimeChanged(); + } + + /** + * Get current day of the month + * + * @return The day of the month + */ + public int getCurrentDay() { + return mDate.get(Calendar.DAY_OF_MONTH); + } + + /** + * Set current day of the month + * + * @param dayOfMonth The day of the month + */ + public void setCurrentDay(int dayOfMonth) { + if (!mInitialising && dayOfMonth == getCurrentDay()) { + return; + } + mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); + updateDateControl(); + onDateTimeChanged(); + } + + /** + * Get current hour in 24 hour mode, in the range (0~23) + * @return The current hour in 24 hour mode + */ + public int getCurrentHourOfDay() { + return mDate.get(Calendar.HOUR_OF_DAY); + } + + private int getCurrentHour() { + if (mIs24HourView){ + return getCurrentHourOfDay(); + } else { + int hour = getCurrentHourOfDay(); + if (hour > HOURS_IN_HALF_DAY) { + return hour - HOURS_IN_HALF_DAY; + } else { + return hour == 0 ? HOURS_IN_HALF_DAY : hour; + } + } + } + + /** + * Set current hour in 24 hour mode, in the range (0~23) + * + * @param hourOfDay + */ + public void setCurrentHour(int hourOfDay) { + if (!mInitialising && hourOfDay == getCurrentHourOfDay()) { + return; + } + mDate.set(Calendar.HOUR_OF_DAY, hourOfDay); + if (!mIs24HourView) { + if (hourOfDay >= HOURS_IN_HALF_DAY) { + mIsAm = false; + if (hourOfDay > HOURS_IN_HALF_DAY) { + hourOfDay -= HOURS_IN_HALF_DAY; + } + } else { + mIsAm = true; + if (hourOfDay == 0) { + hourOfDay = HOURS_IN_HALF_DAY; + } + } + updateAmPmControl(); + } + mHourSpinner.setValue(hourOfDay); + onDateTimeChanged(); + } + + /** + * Get currentMinute + * + * @return The Current Minute + */ + public int getCurrentMinute() { + return mDate.get(Calendar.MINUTE); + } + + /** + * Set current minute + */ + public void setCurrentMinute(int minute) { + if (!mInitialising && minute == getCurrentMinute()) { + return; + } + mMinuteSpinner.setValue(minute); + mDate.set(Calendar.MINUTE, minute); + onDateTimeChanged(); + } + + /** + * @return true if this is in 24 hour view else false. + */ + public boolean is24HourView () { + return mIs24HourView; + } + + /** + * Set whether in 24 hour or AM/PM mode. + * + * @param is24HourView True for 24 hour mode. False for AM/PM mode. + */ + public void set24HourView(boolean is24HourView) { + if (mIs24HourView == is24HourView) { + return; + } + mIs24HourView = is24HourView; + mAmPmSpinner.setVisibility(is24HourView ? View.GONE : View.VISIBLE); + int hour = getCurrentHourOfDay(); + updateHourControl(); + setCurrentHour(hour); + updateAmPmControl(); + } + + private void updateDateControl() { + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(mDate.getTimeInMillis()); + cal.add(Calendar.DAY_OF_YEAR, -DAYS_IN_ALL_WEEK / 2 - 1); + mDateSpinner.setDisplayedValues(null); + for (int i = 0; i < DAYS_IN_ALL_WEEK; ++i) { + cal.add(Calendar.DAY_OF_YEAR, 1); + mDateDisplayValues[i] = (String) DateFormat.format("MM.dd EEEE", cal); + } + mDateSpinner.setDisplayedValues(mDateDisplayValues); + mDateSpinner.setValue(DAYS_IN_ALL_WEEK / 2); + mDateSpinner.invalidate(); + }// 对于星期几的算法 + + private void updateAmPmControl() { + if (mIs24HourView) { + mAmPmSpinner.setVisibility(View.GONE); + } else { + int index = mIsAm ? Calendar.AM : Calendar.PM; + mAmPmSpinner.setValue(index); + mAmPmSpinner.setVisibility(View.VISIBLE); + }// 对于上下午操作的算法 + } + + private void updateHourControl() { + if (mIs24HourView) { + mHourSpinner.setMinValue(HOUR_SPINNER_MIN_VAL_24_HOUR_VIEW); + mHourSpinner.setMaxValue(HOUR_SPINNER_MAX_VAL_24_HOUR_VIEW); + } else { + mHourSpinner.setMinValue(HOUR_SPINNER_MIN_VAL_12_HOUR_VIEW); + mHourSpinner.setMaxValue(HOUR_SPINNER_MAX_VAL_12_HOUR_VIEW); + }// 对与小时的算法 + } + + /** + * Set the callback that indicates the 'Set' button has been pressed. + * @param callback the callback, if null will do nothing + */ + public void setOnDateTimeChangedListener(OnDateTimeChangedListener callback) { + mOnDateTimeChangedListener = callback; + } + + private void onDateTimeChanged() { + if (mOnDateTimeChangedListener != null) { + mOnDateTimeChangedListener.onDateTimeChanged(this, getCurrentYear(), + getCurrentMonth(), getCurrentDay(), getCurrentHourOfDay(), getCurrentMinute()); + } + } +} \ No newline at end of file diff --git a/doc/210340006杜煜晗/ui包/DateTimePackerDialog.txt b/doc/210340006杜煜晗/ui包/DateTimePackerDialog.txt new file mode 100644 index 0000000..c11de32 --- /dev/null +++ b/doc/210340006杜煜晗/ui包/DateTimePackerDialog.txt @@ -0,0 +1,87 @@ +package net.micode.notes.ui; + +import java.util.Calendar; + +import net.micode.notes.R; +import net.micode.notes.ui.DateTimePicker; +import net.micode.notes.ui.DateTimePicker.OnDateTimeChangedListener; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.DialogInterface.OnClickListener; +import android.text.format.DateFormat; +import android.text.format.DateUtils; + +public class DateTimePickerDialog extends AlertDialog implements OnClickListener { + + private Calendar mDate = Calendar.getInstance(); + //创建一个Calendar类型的变量 mDate,方便时间的操作 + private boolean mIs24HourView; + private OnDateTimeSetListener mOnDateTimeSetListener; + //声明一个时间日期滚动选择控件 mOnDateTimeSetListener + private DateTimePicker mDateTimePicker; + //DateTimePicker控件,控件一般用于让用户可以从日期列表中选择单个值。 + //运行时,单击控件边上的下拉箭头,会显示为两个部分:一个下拉列表,一个用于选择日期的 + + public interface OnDateTimeSetListener { + void OnDateTimeSet(AlertDialog dialog, long date); + } + + public DateTimePickerDialog(Context context, long date) { + //对该界面对话框的实例化 + super(context); + //对数据库的操作 + mDateTimePicker = new DateTimePicker(context); + setView(mDateTimePicker); + //添加一个子视图 + mDateTimePicker.setOnDateTimeChangedListener(new OnDateTimeChangedListener() { + public void onDateTimeChanged(DateTimePicker view, int year, int month, + int dayOfMonth, int hourOfDay, int minute) { + mDate.set(Calendar.YEAR, year); + mDate.set(Calendar.MONTH, month); + mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); + mDate.set(Calendar.HOUR_OF_DAY, hourOfDay); + mDate.set(Calendar.MINUTE, minute); + //将视图中的各选项设置为系统当前时间 + updateTitle(mDate.getTimeInMillis()); + } + }); + mDate.setTimeInMillis(date); + //得到系统时间 + mDate.set(Calendar.SECOND, 0); + //将秒数设置为0 + mDateTimePicker.setCurrentDate(mDate.getTimeInMillis()); + setButton(context.getString(R.string.datetime_dialog_ok), this); + setButton2(context.getString(R.string.datetime_dialog_cancel), (OnClickListener)null); + //设置按钮 + set24HourView(DateFormat.is24HourFormat(this.getContext())); + //时间标准化打印 + updateTitle(mDate.getTimeInMillis()); + } + + public void set24HourView(boolean is24HourView) { + mIs24HourView = is24HourView; + } + + public void setOnDateTimeSetListener(OnDateTimeSetListener callBack) { + mOnDateTimeSetListener = callBack; + }//将时间日期滚动选择控件实例化 + + private void updateTitle(long date) { + int flag = + DateUtils.FORMAT_SHOW_YEAR | + DateUtils.FORMAT_SHOW_DATE | + DateUtils.FORMAT_SHOW_TIME; + flag |= mIs24HourView ? DateUtils.FORMAT_24HOUR : DateUtils.FORMAT_24HOUR; + setTitle(DateUtils.formatDateTime(this.getContext(), date, flag)); + }//android开发中常见日期管理工具类(API)——DateUtils:按照上下午显示时间 + + public void onClick(DialogInterface arg0, int arg1) { + if (mOnDateTimeSetListener != null) { + mOnDateTimeSetListener.OnDateTimeSet(this, mDate.getTimeInMillis()); + } + }//第一个参数arg0是接收到点击事件的对话框 + //第二个参数arg1是该对话框上的按钮 + +} \ No newline at end of file diff --git a/doc/210340006杜煜晗/ui包/DropdownMenu.txt b/doc/210340006杜煜晗/ui包/DropdownMenu.txt new file mode 100644 index 0000000..4c4cf90 --- /dev/null +++ b/doc/210340006杜煜晗/ui包/DropdownMenu.txt @@ -0,0 +1,49 @@ +package net.micode.notes.ui; + +import android.content.Context; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; +import android.widget.PopupMenu; +import android.widget.PopupMenu.OnMenuItemClickListener; + +import net.micode.notes.R; + +public class DropdownMenu { + private Button mButton; + private PopupMenu mPopupMenu; + //声明一个下拉菜单 + private Menu mMenu; + + public DropdownMenu(Context context, Button button, int menuId) { + mButton = button; + mButton.setBackgroundResource(R.drawable.dropdown_icon); + //设置这个view的背景 + mPopupMenu = new PopupMenu(context, mButton); + mMenu = mPopupMenu.getMenu(); + mPopupMenu.getMenuInflater().inflate(menuId, mMenu); + //MenuInflater是用来实例化Menu目录下的Menu布局文件 + //根据ID来确认menu的内容选项 + mButton.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + mPopupMenu.show(); + } + }); + } + + public void setOnDropdownMenuItemClickListener(OnMenuItemClickListener listener) { + if (mPopupMenu != null) { + mPopupMenu.setOnMenuItemClickListener(listener); + }//设置菜单的监听 + } + + public MenuItem findItem(int id) { + return mMenu.findItem(id); + }//对于菜单选项的初始化,根据索引搜索菜单需要的选项 + + public void setTitle(CharSequence title) { + mButton.setText(title); + }//布局文件,设置标题 +} \ No newline at end of file diff --git a/doc/210340006杜煜晗/ui包/FoldersListAdapter.txt b/doc/210340006杜煜晗/ui包/FoldersListAdapter.txt new file mode 100644 index 0000000..4fbe285 --- /dev/null +++ b/doc/210340006杜煜晗/ui包/FoldersListAdapter.txt @@ -0,0 +1,71 @@ +package net.micode.notes.ui; + +import android.content.Context; +import android.database.Cursor; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CursorAdapter; +import android.widget.LinearLayout; +import android.widget.TextView; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; + + +public class FoldersListAdapter extends CursorAdapter { + //CursorAdapter是Cursor和ListView的接口 + //FoldersListAdapter继承了CursorAdapter的类 + //主要作用是便签数据库和用户的交互 + //这里就是用folder(文件夹)的形式展现给用户 + public static final String [] PROJECTION = { + NoteColumns.ID, + NoteColumns.SNIPPET + };//调用数据库中便签的ID和片段 + + public static final int ID_COLUMN = 0; + public static final int NAME_COLUMN = 1; + + public FoldersListAdapter(Context context, Cursor c) { + super(context, c); + // TODO Auto-generated constructor stub + }//数据库操作 + + @Override + public View newView(Context context, Cursor cursor, ViewGroup parent) { + //ViewGroup是容器 + return new FolderListItem(context); + }//创建一个文件夹,对于各文件夹中子标签的初始化 + + @Override + public void bindView(View view, Context context, Cursor cursor) { + if (view instanceof FolderListItem) { + String folderName = (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) ? context + .getString(R.string.menu_move_parent_folder) : cursor.getString(NAME_COLUMN); + ((FolderListItem) view).bind(folderName); + } + }//将各个布局文件绑定起来 + + public String getFolderName(Context context, int position) { + Cursor cursor = (Cursor) getItem(position); + return (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) ? context + .getString(R.string.menu_move_parent_folder) : cursor.getString(NAME_COLUMN); + }//根据数据库中标签的ID得到标签的各项内容 + + private class FolderListItem extends LinearLayout { + private TextView mName; + + public FolderListItem(Context context) { + super(context); + //操作数据库 + inflate(context, R.layout.folder_list_item, this); + //根据布局文件的名字等信息将其找出来 + mName = (TextView) findViewById(R.id.tv_folder_name); + } + + public void bind(String name) { + mName.setText(name); + } + } + +} \ No newline at end of file diff --git a/doc/210340006杜煜晗/ui包/NoteEditActivity.txt b/doc/210340006杜煜晗/ui包/NoteEditActivity.txt new file mode 100644 index 0000000..40d766a --- /dev/null +++ b/doc/210340006杜煜晗/ui包/NoteEditActivity.txt @@ -0,0 +1,1068 @@ + +package net.micode.notes.ui; + +import android.app.Activity; +import android.app.AlarmManager; +import android.app.AlertDialog; +import android.app.PendingIntent; +import android.app.SearchManager; +import android.appwidget.AppWidgetManager; +import android.content.ContentUris; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.graphics.Paint; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.TextUtils; +import android.text.format.DateUtils; +import android.text.style.BackgroundColorSpan; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.MotionEvent; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.WindowManager; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.CompoundButton.OnCheckedChangeListener; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.widget.Toast; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.TextNote; +import net.micode.notes.model.WorkingNote; +import net.micode.notes.model.WorkingNote.NoteSettingChangedListener; +import net.micode.notes.tool.DataUtils; +import net.micode.notes.tool.ResourceParser; +import net.micode.notes.tool.ResourceParser.TextAppearanceResources; +import net.micode.notes.ui.DateTimePickerDialog.OnDateTimeSetListener; +import net.micode.notes.ui.NoteEditText.OnTextViewChangeListener; +import net.micode.notes.widget.NoteWidgetProvider_2x; +import net.micode.notes.widget.NoteWidgetProvider_4x; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + + +public class NoteEditActivity extends Activity implements OnClickListener, + NoteSettingChangedListener, OnTextViewChangeListener { + //该类主要是针对标签的编辑 + //继承了系统内部许多和监听有关的类 + private class HeadViewHolder { + public TextView tvModified; + + public ImageView ivAlertIcon; + + public TextView tvAlertDate; + + public ImageView ibSetBgColor; + } + //使用Map实现数据存储 + private static final Map sBgSelectorBtnsMap = new HashMap(); + static { + sBgSelectorBtnsMap.put(R.id.iv_bg_yellow, ResourceParser.YELLOW); + sBgSelectorBtnsMap.put(R.id.iv_bg_red, ResourceParser.RED); + sBgSelectorBtnsMap.put(R.id.iv_bg_blue, ResourceParser.BLUE); + sBgSelectorBtnsMap.put(R.id.iv_bg_green, ResourceParser.GREEN); + sBgSelectorBtnsMap.put(R.id.iv_bg_white, ResourceParser.WHITE); + //put函数是将指定值和指定键相连 + } + + private static final Map sBgSelectorSelectionMap = new HashMap(); + static { + sBgSelectorSelectionMap.put(ResourceParser.YELLOW, R.id.iv_bg_yellow_select); + sBgSelectorSelectionMap.put(ResourceParser.RED, R.id.iv_bg_red_select); + sBgSelectorSelectionMap.put(ResourceParser.BLUE, R.id.iv_bg_blue_select); + sBgSelectorSelectionMap.put(ResourceParser.GREEN, R.id.iv_bg_green_select); + sBgSelectorSelectionMap.put(ResourceParser.WHITE, R.id.iv_bg_white_select); + //put函数是将指定值和指定键相连 + } + + private static final Map sFontSizeBtnsMap = new HashMap(); + static { + sFontSizeBtnsMap.put(R.id.ll_font_large, ResourceParser.TEXT_LARGE); + sFontSizeBtnsMap.put(R.id.ll_font_small, ResourceParser.TEXT_SMALL); + sFontSizeBtnsMap.put(R.id.ll_font_normal, ResourceParser.TEXT_MEDIUM); + sFontSizeBtnsMap.put(R.id.ll_font_super, ResourceParser.TEXT_SUPER); + //put函数是将指定值和指定键相连 + } + + private static final Map sFontSelectorSelectionMap = new HashMap(); + static { + sFontSelectorSelectionMap.put(ResourceParser.TEXT_LARGE, R.id.iv_large_select); + sFontSelectorSelectionMap.put(ResourceParser.TEXT_SMALL, R.id.iv_small_select); + sFontSelectorSelectionMap.put(ResourceParser.TEXT_MEDIUM, R.id.iv_medium_select); + sFontSelectorSelectionMap.put(ResourceParser.TEXT_SUPER, R.id.iv_super_select); + //put函数是将指定值和指定键相连 + } + + private static final String TAG = "NoteEditActivity"; + + private HeadViewHolder mNoteHeaderHolder; + + private View mHeadViewPanel; + //私有化一个界面操作mHeadViewPanel,对表头的操作 + private View mNoteBgColorSelector; + //私有化一个界面操作mNoteBgColorSelector,对背景颜色的操作 + private View mFontSizeSelector; + //私有化一个界面操作mFontSizeSelector,对标签字体的操作 + private EditText mNoteEditor; + //声明编辑控件,对文本操作 + private View mNoteEditorPanel; + //私有化一个界面操作mNoteEditorPanel,文本编辑的控制板 + //private WorkingNote mWorkingNote; + public WorkingNote mWorkingNote; + //对模板WorkingNote的初始化 + private SharedPreferences mSharedPrefs; + //私有化SharedPreferences的数据存储方式 + //它的本质是基于XML文件存储key-value键值对数据 + private int mFontSizeId; + //用于操作字体的大小 + private static final String PREFERENCE_FONT_SIZE = "pref_font_size"; + + private static final int SHORTCUT_ICON_TITLE_MAX_LEN = 10; + + public static final String TAG_CHECKED = String.valueOf('\u221A'); + public static final String TAG_UNCHECKED = String.valueOf('\u25A1'); + + private LinearLayout mEditTextList; + //线性布局 + private String mUserQuery; + private Pattern mPattern; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + this.setContentView(R.layout.note_edit); + //对数据库的访问操作 + if (savedInstanceState == null && !initActivityState(getIntent())) { + finish(); + return; + } + initResources(); + } + + /** + * Current activity may be killed when the memory is low. Once it is killed, for another time + * user load this activity, we should restore the former state + */ + @Override + protected void onRestoreInstanceState(Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + if (savedInstanceState != null && savedInstanceState.containsKey(Intent.EXTRA_UID)) { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.putExtra(Intent.EXTRA_UID, savedInstanceState.getLong(Intent.EXTRA_UID)); + if (!initActivityState(intent)) { + finish(); + return; + } + Log.d(TAG, "Restoring from killed activity"); + }//为防止内存不足时程序的终止,在这里有一个保存现场的函数 + } + + private boolean initActivityState(Intent intent) { + /** + * If the user specified the {@link Intent#ACTION_VIEW} but not provided with id, + * then jump to the NotesListActivity + */ + mWorkingNote = null; + if (TextUtils.equals(Intent.ACTION_VIEW, intent.getAction())) { + long noteId = intent.getLongExtra(Intent.EXTRA_UID, 0); + mUserQuery = ""; + //如果用户实例化标签时,系统并未给出标签ID + /** + * Starting from the searched result + */ + //根据键值查找ID + if (intent.hasExtra(SearchManager.EXTRA_DATA_KEY)) { + noteId = Long.parseLong(intent.getStringExtra(SearchManager.EXTRA_DATA_KEY)); + mUserQuery = intent.getStringExtra(SearchManager.USER_QUERY); + } + //如果ID在数据库中未找到 + if (!DataUtils.visibleInNoteDatabase(getContentResolver(), noteId, Notes.TYPE_NOTE)) { + Intent jump = new Intent(this, NotesListActivity.class); + startActivity(jump); + //程序将跳转到上面声明的intent——jump + showToast(R.string.error_note_not_exist); + finish(); + return false; + } + //ID在数据库中找到 + else { + mWorkingNote = WorkingNote.load(this, noteId); + if (mWorkingNote == null) { + Log.e(TAG, "load note failed with note id" + noteId); + //打印出红色的错误信息 + finish(); + return false; + } + } + //setSoftInputMode——软键盘输入模式 + getWindow().setSoftInputMode( + WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN + | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + } else if(TextUtils.equals(Intent.ACTION_INSERT_OR_EDIT, intent.getAction())) { + // intent.getAction() + // 大多用于broadcast发送广播时给机制(intent)设置一个action,就是一个字符串 + // 用户可以通过receive(接受)intent,通过 getAction得到的字符串,来决定做什么 + long folderId = intent.getLongExtra(Notes.INTENT_EXTRA_FOLDER_ID, 0); + int widgetId = intent.getIntExtra(Notes.INTENT_EXTRA_WIDGET_ID, + AppWidgetManager.INVALID_APPWIDGET_ID); + int widgetType = intent.getIntExtra(Notes.INTENT_EXTRA_WIDGET_TYPE, + Notes.TYPE_WIDGET_INVALIDE); + int bgResId = intent.getIntExtra(Notes.INTENT_EXTRA_BACKGROUND_ID, + ResourceParser.getDefaultBgId(this)); + // intent.getInt(Long、String)Extra是对各变量的语法分析 + // Parse call-record note + String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); + long callDate = intent.getLongExtra(Notes.INTENT_EXTRA_CALL_DATE, 0); + if (callDate != 0 && phoneNumber != null) { + if (TextUtils.isEmpty(phoneNumber)) { + Log.w(TAG, "The call record number is null"); + } + long noteId = 0; + if ((noteId = DataUtils.getNoteIdByPhoneNumberAndCallDate(getContentResolver(), + phoneNumber, callDate)) > 0) { + mWorkingNote = WorkingNote.load(this, noteId); + if (mWorkingNote == null) { + Log.e(TAG, "load call note failed with note id" + noteId); + finish(); + return false; + } + //将电话号码与手机的号码簿相关 + } else { + mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId, + widgetType, bgResId); + mWorkingNote.convertToCallNote(phoneNumber, callDate); + // + } + } else { + mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId, widgetType, + bgResId); + }//创建一个新的WorkingNote + + getWindow().setSoftInputMode( + WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE + | WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); + } else { + Log.e(TAG, "Intent not specified action, should not support"); + finish(); + return false; + } + mWorkingNote.setOnSettingStatusChangedListener(this); + return true; + } + + @Override + protected void onResume() { + super.onResume(); + initNoteScreen(); + } + + private void initNoteScreen() { + //对界面的初始化操作 + mNoteEditor.setTextAppearance(this, TextAppearanceResources + .getTexAppearanceResource(mFontSizeId)); + //设置外观 + if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { + switchToListMode(mWorkingNote.getContent()); + } else { + mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery)); + mNoteEditor.setSelection(mNoteEditor.getText().length()); + } + for (Integer id : sBgSelectorSelectionMap.keySet()) { + findViewById(sBgSelectorSelectionMap.get(id)).setVisibility(View.GONE); + } + mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId()); + mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId()); + + mNoteHeaderHolder.tvModified.setText(DateUtils.formatDateTime(this, + mWorkingNote.getModifiedDate(), DateUtils.FORMAT_SHOW_DATE + | DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_SHOW_TIME + | DateUtils.FORMAT_SHOW_YEAR)); + + /** + * TODO: Add the menu for setting alert. Currently disable it because the DateTimePicker + * is not ready + */ + showAlertHeader(); + } + //设置闹钟的显示 + private void showAlertHeader() { + if (mWorkingNote.hasClockAlert()) { + long time = System.currentTimeMillis(); + if (time > mWorkingNote.getAlertDate()) { + mNoteHeaderHolder.tvAlertDate.setText(R.string.note_alert_expired); + } + //如果系统时间大于了闹钟设置的时间,那么闹钟失效 + else { + mNoteHeaderHolder.tvAlertDate.setText(DateUtils.getRelativeTimeSpanString( + mWorkingNote.getAlertDate(), time, DateUtils.MINUTE_IN_MILLIS)); + } + mNoteHeaderHolder.tvAlertDate.setVisibility(View.VISIBLE); + mNoteHeaderHolder.ivAlertIcon.setVisibility(View.VISIBLE); + //显示闹钟开启的图标 + } else { + mNoteHeaderHolder.tvAlertDate.setVisibility(View.GONE); + mNoteHeaderHolder.ivAlertIcon.setVisibility(View.GONE); + }; + } + + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + initActivityState(intent); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + /** + * For new note without note id, we should firstly save it to + * generate a id. If the editing note is not worth saving, there + * is no id which is equivalent to create new note + */ + if (!mWorkingNote.existInDatabase()) { + saveNote(); + } + //在创建一个新的标签时,先在数据库中匹配 + //如果不存在,那么先在数据库中存储 + outState.putLong(Intent.EXTRA_UID, mWorkingNote.getNoteId()); + Log.d(TAG, "Save working note id: " + mWorkingNote.getNoteId() + " onSaveInstanceState"); + } + + @Override + //MotionEvent是对屏幕触控的传递机制 + public boolean dispatchTouchEvent(MotionEvent ev) { + if (mNoteBgColorSelector.getVisibility() == View.VISIBLE + && !inRangeOfView(mNoteBgColorSelector, ev)) { + mNoteBgColorSelector.setVisibility(View.GONE); + return true; + }//颜色选择器在屏幕上可见 + + if (mFontSizeSelector.getVisibility() == View.VISIBLE + && !inRangeOfView(mFontSizeSelector, ev)) { + mFontSizeSelector.setVisibility(View.GONE); + return true; + }//字体大小选择器在屏幕上可见 + return super.dispatchTouchEvent(ev); + } + //对屏幕触控的坐标进行操作 + private boolean inRangeOfView(View view, MotionEvent ev) { + int []location = new int[2]; + view.getLocationOnScreen(location); + int x = location[0]; + int y = location[1]; + if (ev.getX() < x + || ev.getX() > (x + view.getWidth()) + || ev.getY() < y + || ev.getY() > (y + view.getHeight())) + //如果触控的位置超出了给定的范围,返回false + { + return false; + } + return true; + } + + private void initResources() { + mHeadViewPanel = findViewById(R.id.note_title); + mNoteHeaderHolder = new HeadViewHolder(); + mNoteHeaderHolder.tvModified = (TextView) findViewById(R.id.tv_modified_date); + mNoteHeaderHolder.ivAlertIcon = (ImageView) findViewById(R.id.iv_alert_icon); + mNoteHeaderHolder.tvAlertDate = (TextView) findViewById(R.id.tv_alert_date); + mNoteHeaderHolder.ibSetBgColor = (ImageView) findViewById(R.id.btn_set_bg_color); + mNoteHeaderHolder.ibSetBgColor.setOnClickListener(this); + mNoteEditor = (EditText) findViewById(R.id.note_edit_view); + mNoteEditorPanel = findViewById(R.id.sv_note_edit); + mNoteBgColorSelector = findViewById(R.id.note_bg_color_selector); + for (int id : sBgSelectorBtnsMap.keySet()) { + ImageView iv = (ImageView) findViewById(id); + iv.setOnClickListener(this); + }//对标签各项属性内容的初始化 + + mFontSizeSelector = findViewById(R.id.font_size_selector); + for (int id : sFontSizeBtnsMap.keySet()) { + View view = findViewById(id); + view.setOnClickListener(this); + };//对字体大小的选择 + mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); + mFontSizeId = mSharedPrefs.getInt(PREFERENCE_FONT_SIZE, ResourceParser.BG_DEFAULT_FONT_SIZE); + /** + * HACKME: Fix bug of store the resource id in shared preference. + * The id may larger than the length of resources, in this case, + * return the {@link ResourceParser#BG_DEFAULT_FONT_SIZE} + */ + if(mFontSizeId >= TextAppearanceResources.getResourcesSize()) { + mFontSizeId = ResourceParser.BG_DEFAULT_FONT_SIZE; + } + mEditTextList = (LinearLayout) findViewById(R.id.note_edit_list); + } + + @Override + protected void onPause() { + super.onPause(); + if(saveNote()) { + Log.d(TAG, "Note data was saved with length:" + mWorkingNote.getContent().length()); + } + clearSettingState(); + } + //和桌面小工具的同步 + private void updateWidget() { + Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE); + if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_2X) { + intent.setClass(this, NoteWidgetProvider_2x.class); + } else if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_4X) { + intent.setClass(this, NoteWidgetProvider_4x.class); + } else { + Log.e(TAG, "Unspported widget type"); + return; + } + + intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { + mWorkingNote.getWidgetId() + }); + + sendBroadcast(intent); + setResult(RESULT_OK, intent); + } + + public void onClick(View v) { + int id = v.getId(); + if (id == R.id.btn_set_bg_color) { + mNoteBgColorSelector.setVisibility(View.VISIBLE); + findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility( + - View.VISIBLE); + } else if (sBgSelectorBtnsMap.containsKey(id)) { + findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility( + View.GONE); + mWorkingNote.setBgColorId(sBgSelectorBtnsMap.get(id)); + mNoteBgColorSelector.setVisibility(View.GONE); + } else if (sFontSizeBtnsMap.containsKey(id)) { + findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.GONE); + mFontSizeId = sFontSizeBtnsMap.get(id); + mSharedPrefs.edit().putInt(PREFERENCE_FONT_SIZE, mFontSizeId).commit(); + findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE); + if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { + getWorkingText(); + switchToListMode(mWorkingNote.getContent()); + } else { + mNoteEditor.setTextAppearance(this, + TextAppearanceResources.getTexAppearanceResource(mFontSizeId)); + } + mFontSizeSelector.setVisibility(View.GONE); + } + }//************************存在问题 + + @Override + public void onBackPressed() { + if(clearSettingState()) { + return; + } + + saveNote(); + super.onBackPressed(); + } + + private boolean clearSettingState() { + if (mNoteBgColorSelector.getVisibility() == View.VISIBLE) { + mNoteBgColorSelector.setVisibility(View.GONE); + return true; + } else if (mFontSizeSelector.getVisibility() == View.VISIBLE) { + mFontSizeSelector.setVisibility(View.GONE); + return true; + } + return false; + } + + public void onBackgroundColorChanged() { + findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility( + View.VISIBLE); + mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId()); + mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId()); + } + + @Override + //对选择菜单的准备 + public boolean onPrepareOptionsMenu(Menu menu) { + if (isFinishing()) { + return true; + } + clearSettingState(); + menu.clear(); + if (mWorkingNote.getFolderId() == Notes.ID_CALL_RECORD_FOLDER) { + getMenuInflater().inflate(R.menu.call_note_edit, menu); + // MenuInflater是用来实例化Menu目录下的Menu布局文件的 + } else { + getMenuInflater().inflate(R.menu.note_edit, menu); + } + if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { + menu.findItem(R.id.menu_list_mode).setTitle(R.string.menu_normal_mode); + } else { + menu.findItem(R.id.menu_list_mode).setTitle(R.string.menu_list_mode); + } + if (mWorkingNote.hasClockAlert()) { + menu.findItem(R.id.menu_alert).setVisible(false); + } else { + menu.findItem(R.id.menu_delete_remind).setVisible(false); + } + return true; + } + + @Override + /* + * 函数功能:动态改变菜单选项内容 + * 函数实现:如下注释 + */ + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + //根据菜单的id来编剧相关项目 + case R.id.menu_new_note: + //创建一个新的便签 + createNewNote(); + break; + case R.id.menu_delete: + //删除便签 + AlertDialog.Builder builder = new AlertDialog.Builder(this); + //创建关于删除操作的对话框 + builder.setTitle(getString(R.string.alert_title_delete)); + // 设置标签的标题为alert_title_delete + builder.setIcon(android.R.drawable.ic_dialog_alert); + //设置对话框图标 + builder.setMessage(getString(R.string.alert_message_delete_note)); + //设置对话框内容 + builder.setPositiveButton(android.R.string.ok, + new DialogInterface.OnClickListener() { + //建立按键监听器 + public void onClick(DialogInterface dialog, int which) { + //点击所触发事件 + deleteCurrentNote(); + // 删除单签便签 + finish(); + } + }); + //添加“YES”按钮 + builder.setNegativeButton(android.R.string.cancel, null); + //添加“NO”的按钮 + builder.show(); + //显示对话框 + break; + case R.id.menu_font_size: + //字体大小的编辑 + mFontSizeSelector.setVisibility(View.VISIBLE); + // 将字体选择器置为可见 + findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE); + // 通过id找到相应的大小 + break; + case R.id.menu_list_mode: + //选择列表模式 + mWorkingNote.setCheckListMode(mWorkingNote.getCheckListMode() == 0 ? + TextNote.MODE_CHECK_LIST : 0); + break; + case R.id.menu_share: + //菜单共享 + getWorkingText(); + sendTo(this, mWorkingNote.getContent()); + // 用sendto函数将运行文本发送到遍历的本文内 + break; + case R.id.menu_send_to_desktop: + //发送到桌面 + sendToDesktop(); + break; + case R.id.menu_alert: + //创建提醒器 + setReminder(); + break; + case R.id.menu_delete_remind: + //删除日期提醒 + mWorkingNote.setAlertDate(0, false); + break; + default: + break; + } + return true; + } + + /* + * 函数功能:建立事件提醒器 + * 函数实现:如下注释 + */ + private void setReminder() { + DateTimePickerDialog d = new DateTimePickerDialog(this, System.currentTimeMillis()); + // 建立修改时间日期的对话框 + d.setOnDateTimeSetListener(new OnDateTimeSetListener() { + public void OnDateTimeSet(AlertDialog dialog, long date) { + mWorkingNote.setAlertDate(date , true); + //选择提醒的日期 + } + }); + //建立时间日期的监听器 + d.show(); + //显示对话框 + } + + /** + * Share note to apps that support {@link Intent#ACTION_SEND} action + * and {@text/plain} type + */ + /* + * 函数功能:共享便签 + * 函数实现:如下注释 + */ + private void sendTo(Context context, String info) { + Intent intent = new Intent(Intent.ACTION_SEND); + //建立intent链接选项 + intent.putExtra(Intent.EXTRA_TEXT, info); + //将需要传递的便签信息放入text文件中 + intent.setType("text/plain"); + //编辑连接器的类型 + context.startActivity(intent); + //在acti中进行链接 + } + + /* + * 函数功能:创建一个新的便签 + * 函数实现:如下注释 + */ + private void createNewNote() { + // Firstly, save current editing notes + //保存当前便签 + saveNote(); + + // For safety, start a new NoteEditActivity + finish(); + Intent intent = new Intent(this, NoteEditActivity.class); + //设置链接器 + intent.setAction(Intent.ACTION_INSERT_OR_EDIT); + //该活动定义为创建或编辑 + intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mWorkingNote.getFolderId()); + //将运行便签的id添加到INTENT_EXTRA_FOLDER_ID标记中 + startActivity(intent); + //开始activity并链接 + } + + /* + * 函数功能:删除当前便签 + * 函数实现:如下注释 + */ + private void deleteCurrentNote() { + if (mWorkingNote.existInDatabase()) { + //假如当前运行的便签内存有数据 + HashSet ids = new HashSet(); + long id = mWorkingNote.getNoteId(); + if (id != Notes.ID_ROOT_FOLDER) { + ids.add(id); + //如果不是头文件夹建立一个hash表把便签id存起来 + } else { + Log.d(TAG, "Wrong note id, should not happen"); + //否则报错 + } + if (!isSyncMode()) { + //在非同步模式情况下 + //删除操作 + if (!DataUtils.batchDeleteNotes(getContentResolver(), ids)) { + Log.e(TAG, "Delete Note error"); + } + } else { + //同步模式 + //移动至垃圾文件夹的操作 + if (!DataUtils.batchMoveToFolder(getContentResolver(), ids, Notes.ID_TRASH_FOLER)) { + Log.e(TAG, "Move notes to trash folder error, should not happens"); + } + } + } + mWorkingNote.markDeleted(true); + //将这些标签的删除标记置为true + } + + /* + * 函数功能:判断是否为同步模式 + * 函数实现:直接看NotesPreferenceActivity中同步名称是否为空 + */ + private boolean isSyncMode() { + return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0; + } + + /* + * 函数功能:设置提醒时间 + * 函数实现:如下注释 + */ + public void onClockAlertChanged(long date, boolean set) { + /** + * User could set clock to an unsaved note, so before setting the + * alert clock, we should save the note first + */ + if (!mWorkingNote.existInDatabase()) { + //首先保存已有的便签 + saveNote(); + } + if (mWorkingNote.getNoteId() > 0) { + Intent intent = new Intent(this, AlarmReceiver.class); + intent.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, mWorkingNote.getNoteId())); + //若有有运行的便签就是建立一个链接器将标签id都存在uri中 + PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); + AlarmManager alarmManager = ((AlarmManager) getSystemService(ALARM_SERVICE)); + //设置提醒管理器 + showAlertHeader(); + if(!set) { + alarmManager.cancel(pendingIntent); + } else { + alarmManager.set(AlarmManager.RTC_WAKEUP, date, pendingIntent); + } + //如果用户设置了时间,就通过提醒管理器设置一个监听事项 + } else { + /** + * There is the condition that user has input nothing (the note is + * not worthy saving), we have no note id, remind the user that he + * should input something + */ + //没有运行的便签就报错 + Log.e(TAG, "Clock alert setting error"); + showToast(R.string.error_note_empty_for_clock); + } + } + + /* + * 函数功能:Widget发生改变的所触发的事件 + */ + public void onWidgetChanged() { + updateWidget();//更新Widget + } + + /* + * 函数功能: 删除编辑文本框所触发的事件 + * 函数实现:如下注释 + */ + public void onEditTextDelete(int index, String text) { + int childCount = mEditTextList.getChildCount(); + if (childCount == 1) { + return; + } + //没有编辑框的话直接返回 + for (int i = index + 1; i < childCount; i++) { + ((NoteEditText) mEditTextList.getChildAt(i).findViewById(R.id.et_edit_text)) + .setIndex(i - 1); + //通过id把编辑框存在便签编辑框中 + } + + mEditTextList.removeViewAt(index); + //删除特定位置的视图 + NoteEditText edit = null; + if(index == 0) { + edit = (NoteEditText) mEditTextList.getChildAt(0).findViewById( + R.id.et_edit_text); + } else { + edit = (NoteEditText) mEditTextList.getChildAt(index - 1).findViewById( + R.id.et_edit_text); + } + //通过id把编辑框存在空的NoteEditText中 + int length = edit.length(); + edit.append(text); + edit.requestFocus();//请求优先完成该此 编辑 + edit.setSelection(length);//定位到length位置处的条目 + } + + /* + * 函数功能:进入编辑文本框所触发的事件 + * 函数实现:如下注释 + */ + public void onEditTextEnter(int index, String text) { + /** + * Should not happen, check for debug + */ + if(index > mEditTextList.getChildCount()) { + Log.e(TAG, "Index out of mEditTextList boundrary, should not happen"); + //越界把偶偶 + } + + View view = getListItem(text, index); + mEditTextList.addView(view, index); + //建立一个新的视图并添加到编辑文本框内 + NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); + edit.requestFocus();//请求优先操作 + edit.setSelection(0);//定位到起始位置 + for (int i = index + 1; i < mEditTextList.getChildCount(); i++) { + ((NoteEditText) mEditTextList.getChildAt(i).findViewById(R.id.et_edit_text)) + .setIndex(i); + //遍历子文本框并设置对应对下标 + } + } + + /* + * 函数功能:切换至列表模式 + * 函数实现:如下注释 + */ + private void switchToListMode(String text) { + mEditTextList.removeAllViews(); + String[] items = text.split("\n"); + int index = 0; + //清空所有视图,初始化下标 + for (String item : items) { + if(!TextUtils.isEmpty(item)) { + mEditTextList.addView(getListItem(item, index)); + index++; + //遍历所有文本单元并添加到文本框中 + } + } + mEditTextList.addView(getListItem("", index)); + mEditTextList.getChildAt(index).findViewById(R.id.et_edit_text).requestFocus(); + //优先请求此操作 + + mNoteEditor.setVisibility(View.GONE); + //便签编辑器不可见 + mEditTextList.setVisibility(View.VISIBLE); + //将文本编辑框置为可见 + } + + /* + * 函数功能:获取高亮效果的反馈情况 + * 函数实现:如下注释 + */ + private Spannable getHighlightQueryResult(String fullText, String userQuery) { + SpannableString spannable = new SpannableString(fullText == null ? "" : fullText); + //新建一个效果选项 + if (!TextUtils.isEmpty(userQuery)) { + mPattern = Pattern.compile(userQuery); + //将用户的询问进行解析 + Matcher m = mPattern.matcher(fullText); + //建立一个状态机检查Pattern并进行匹配 + int start = 0; + while (m.find(start)) { + spannable.setSpan( + new BackgroundColorSpan(this.getResources().getColor( + R.color.user_query_highlight)), m.start(), m.end(), + Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + //设置背景颜色 + start = m.end(); + //跟新起始位置 + } + } + return spannable; + } + + /* + * 函数功能:获取列表项 + * 函数实现:如下注释 + */ + private View getListItem(String item, int index) { + View view = LayoutInflater.from(this).inflate(R.layout.note_edit_list_item, null); + //创建一个视图 + final NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); + edit.setTextAppearance(this, TextAppearanceResources.getTexAppearanceResource(mFontSizeId)); + //创建一个文本编辑框并设置可见性 + CheckBox cb = ((CheckBox) view.findViewById(R.id.cb_edit_item)); + cb.setOnCheckedChangeListener(new OnCheckedChangeListener() { + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (isChecked) { + edit.setPaintFlags(edit.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); + } else { + edit.setPaintFlags(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + } + } + }); + //建立一个打钩框并设置监听器 + + if (item.startsWith(TAG_CHECKED)) { + //选择勾选 + cb.setChecked(true); + edit.setPaintFlags(edit.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); + item = item.substring(TAG_CHECKED.length(), item.length()).trim(); + } else if (item.startsWith(TAG_UNCHECKED)) { + //选择不勾选 + cb.setChecked(false); + edit.setPaintFlags(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + item = item.substring(TAG_UNCHECKED.length(), item.length()).trim(); + } + + edit.setOnTextViewChangeListener(this); + edit.setIndex(index); + edit.setText(getHighlightQueryResult(item, mUserQuery)); + //运行编辑框的监听器对该行为作出反应,并设置下标及文本内容 + return view; + } + + /* + * 函数功能:便签内容发生改变所 触发的事件 + * 函数实现:如下注释 + */ + public void onTextChange(int index, boolean hasText) { + if (index >= mEditTextList.getChildCount()) { + Log.e(TAG, "Wrong index, should not happen"); + return; + //越界报错 + } + if(hasText) { + mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.VISIBLE); + } else { + mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.GONE); + } + //如果内容不为空则将其子编辑框可见性置为可见,否则不可见 + } + + /* + * 函数功能:检查模式和列表模式的切换 + * 函数实现:如下注释 + */ + public void onCheckListModeChanged(int oldMode, int newMode) { + if (newMode == TextNote.MODE_CHECK_LIST) { + switchToListMode(mNoteEditor.getText().toString()); + //检查模式切换到列表模式 + } else { + if (!getWorkingText()) { + mWorkingNote.setWorkingText(mWorkingNote.getContent().replace(TAG_UNCHECKED + " ", + "")); + } + //若是获取到文本就改变其检查标记 + mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery)); + mEditTextList.setVisibility(View.GONE); + mNoteEditor.setVisibility(View.VISIBLE); + //修改文本编辑器的内容和可见性 + } + } + + /* + * 函数功能:设置勾选选项表并返回是否勾选的标记 + * 函数实现:如下注释 + */ + private boolean getWorkingText() { + boolean hasChecked = false; + //初始化check标记 + if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { + // 若模式为CHECK_LIST + StringBuilder sb = new StringBuilder(); + //创建可变字符串 + for (int i = 0; i < mEditTextList.getChildCount(); i++) { + View view = mEditTextList.getChildAt(i); + //遍历所有子编辑框的视图 + NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); + if (!TextUtils.isEmpty(edit.getText())) { + //若文本不为空 + if (((CheckBox) view.findViewById(R.id.cb_edit_item)).isChecked()) { + //该选项框已打钩 + sb.append(TAG_CHECKED).append(" ").append(edit.getText()).append("\n"); + hasChecked = true; + //扩展字符串为已打钩并把标记置true + } else { + sb.append(TAG_UNCHECKED).append(" ").append(edit.getText()).append("\n"); + //扩展字符串添加未打钩 + } + } + } + mWorkingNote.setWorkingText(sb.toString()); + //利用编辑好的字符串设置运行便签的内容 + } else { + mWorkingNote.setWorkingText(mNoteEditor.getText().toString()); + // 若不是该模式直接用编辑器中的内容设置运行中标签的内容 + } + return hasChecked; + } + + /* + * 函数功能:保存便签 + * 函数实现:如下注释 + */ + private boolean saveNote() { + getWorkingText(); + boolean saved = mWorkingNote.saveNote(); + //运行 getWorkingText()之后保存 + if (saved) { + /** + * There are two modes from List view to edit view, open one note, + * create/edit a node. Opening node requires to the original + * position in the list when back from edit view, while creating a + * new node requires to the top of the list. This code + * {@link #RESULT_OK} is used to identify the create/edit state + */ + //如英文注释所说链接RESULT_OK是为了识别保存的2种情况,一是创建后保存,二是修改后保存 + setResult(RESULT_OK); + } + return saved; + } + + /* + * 函数功能:将便签发送至桌面 + * 函数实现:如下注释 + */ + private void sendToDesktop() { + /** + * Before send message to home, we should make sure that current + * editing note is exists in databases. So, for new note, firstly + * save it + */ + if (!mWorkingNote.existInDatabase()) { + saveNote(); + //若不存在数据也就是新的标签就保存起来先 + } + + if (mWorkingNote.getNoteId() > 0) { + //若是有内容 + Intent sender = new Intent(); + Intent shortcutIntent = new Intent(this, NoteEditActivity.class); + //建立发送到桌面的连接器 + shortcutIntent.setAction(Intent.ACTION_VIEW); + //链接为一个视图 + shortcutIntent.putExtra(Intent.EXTRA_UID, mWorkingNote.getNoteId()); + sender.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); + sender.putExtra(Intent.EXTRA_SHORTCUT_NAME, + makeShortcutIconTitle(mWorkingNote.getContent())); + sender.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, + Intent.ShortcutIconResource.fromContext(this, R.drawable.icon_app)); + sender.putExtra("duplicate", true); + //将便签的相关信息都添加到要发送的文件里 + sender.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); + //设置sneder的行为是发送 + showToast(R.string.info_note_enter_desktop); + sendBroadcast(sender); + //显示到桌面 + } else { + /** + * There is the condition that user has input nothing (the note is + * not worthy saving), we have no note id, remind the user that he + * should input something + */ + Log.e(TAG, "Send to desktop error"); + showToast(R.string.error_note_empty_for_send_to_desktop); + //空便签直接报错 + } + } + + /* + * 函数功能:编辑小图标的标题 + * 函数实现:如下注释 + */ + private String makeShortcutIconTitle(String content) { + content = content.replace(TAG_CHECKED, ""); + content = content.replace(TAG_UNCHECKED, ""); + return content.length() > SHORTCUT_ICON_TITLE_MAX_LEN ? content.substring(0, + SHORTCUT_ICON_TITLE_MAX_LEN) : content; + //直接设置为content中的内容并返回,有勾选和未勾选2种 + } + + /* + * 函数功能:显示提示的视图 + * 函数实现:根据下标显示对应的提示 + */ + private void showToast(int resId) { + showToast(resId, Toast.LENGTH_SHORT); + } + + /* + * 函数功能:持续显示提示的视图 + * 函数实现:根据下标和持续的时间(duration)编辑提示视图并显示 + */ + private void showToast(int resId, int duration) { + Toast.makeText(this, resId, duration).show(); + } +} \ No newline at end of file diff --git a/doc/210340006杜煜晗/ui包/NoteEditText.txt b/doc/210340006杜煜晗/ui包/NoteEditText.txt new file mode 100644 index 0000000..fa3db89 --- /dev/null +++ b/doc/210340006杜煜晗/ui包/NoteEditText.txt @@ -0,0 +1,270 @@ +package net.micode.notes.ui; + +import android.content.Context; +import android.graphics.Rect; +import android.text.Layout; +import android.text.Selection; +import android.text.Spanned; +import android.text.TextUtils; +import android.text.style.URLSpan; +import android.util.AttributeSet; +import android.util.Log; +import android.view.ContextMenu; +import android.view.KeyEvent; +import android.view.MenuItem; +import android.view.MenuItem.OnMenuItemClickListener; +import android.view.MotionEvent; +import android.widget.EditText; + +import net.micode.notes.R; + +import java.util.HashMap; +import java.util.Map; + +//继承edittext,设置便签设置文本框 +public class NoteEditText extends EditText { + private static final String TAG = "NoteEditText"; + private int mIndex; + private int mSelectionStartBeforeDelete; + + private static final String SCHEME_TEL = "tel:" ; + private static final String SCHEME_HTTP = "http:" ; + private static final String SCHEME_EMAIL = "mailto:" ; + + ///建立一个字符和整数的hash表,用于链接电话,网站,还有邮箱 + private static final Map sSchemaActionResMap = new HashMap(); + static { + sSchemaActionResMap.put(SCHEME_TEL, R.string.note_link_tel); + sSchemaActionResMap.put(SCHEME_HTTP, R.string.note_link_web); + sSchemaActionResMap.put(SCHEME_EMAIL, R.string.note_link_email); + } + + /** + * Call by the {@link NoteEditActivity} to delete or add edit text + */ + //在NoteEditActivity中删除或添加文本的操作,可以看做是一个文本是否被变的标记,英文注释已说明的很清楚 + public interface OnTextViewChangeListener { + /** + * Delete current edit text when {@link KeyEvent#KEYCODE_DEL} happens + * and the text is null + */ + //处理删除按键时的操作 + void onEditTextDelete(int index, String text); + + /** + * Add edit text after current edit text when {@link KeyEvent#KEYCODE_ENTER} + * happen + */ + //处理进入按键时的操作 + void onEditTextEnter(int index, String text); + + /** + * Hide or show item option when text change + */ + void onTextChange(int index, boolean hasText); + } + + private OnTextViewChangeListener mOnTextViewChangeListener; + + //根据context设置文本 + public NoteEditText(Context context) { + super(context, null);//用super引用父类变量 + mIndex = 0; + } + + //设置当前光标 + public void setIndex(int index) { + mIndex = index; + } + + //初始化文本修改标记 + public void setOnTextViewChangeListener(OnTextViewChangeListener listener) { + mOnTextViewChangeListener = listener; + } + + //AttributeSet 百度了一下是自定义空控件属性,用于维护便签动态变化的属性 + //初始化便签 + public NoteEditText(Context context, AttributeSet attrs) { + super(context, attrs, android.R.attr.editTextStyle); + } + + // 根据defstyle自动初始化 + public NoteEditText(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + // TODO Auto-generated construct or stub + } + + @Override + //view里的函数,处理手机屏幕的所有事件 + /*参数event为手机屏幕触摸事件封装类的对象,其中封装了该事件的所有信息, + 例如触摸的位置、触摸的类型以及触摸的时间等。该对象会在用户触摸手机屏幕时被创建。*/ + public boolean onTouchEvent(MotionEvent event) { + switch (event.getAction()) { + //重写了需要处理屏幕被按下的事件 + case MotionEvent.ACTION_DOWN: + //跟新当前坐标值 + int x = (int) event.getX(); + int y = (int) event.getY(); + x -= getTotalPaddingLeft(); + y -= getTotalPaddingTop(); + x += getScrollX(); + y += getScrollY(); + + //用布局控件layout根据x,y的新值设置新的位置 + Layout layout = getLayout(); + int line = layout.getLineForVertical(y); + int off = layout.getOffsetForHorizontal(line, x); + + //更新光标新的位置 + Selection.setSelection(getText(), off); + break; + } + + return super.onTouchEvent(event); + } + + @Override + /* + * 函数功能:处理用户按下一个键盘按键时会触发 的事件 + * 实现过程:如下注释 + */ + public boolean onKeyDown(int keyCode, KeyEvent event) { + switch (keyCode) { + //根据按键的 Unicode 编码值来处理 + case KeyEvent.KEYCODE_ENTER: + //“进入”按键 + if (mOnTextViewChangeListener != null) { + return false; + } + break; + case KeyEvent.KEYCODE_DEL: + //“删除”按键 + mSelectionStartBeforeDelete = getSelectionStart(); + break; + default: + break; + } + //继续执行父类的其他点击事件 + return super.onKeyDown(keyCode, event); + } + + @Override + /* + * 函数功能:处理用户松开一个键盘按键时会触发 的事件 + * 实现方式:如下注释 + */ + public boolean onKeyUp(int keyCode, KeyEvent event) { + switch(keyCode) { + //根据按键的 Unicode 编码值来处理,有删除和进入2种操作 + case KeyEvent.KEYCODE_DEL: + if (mOnTextViewChangeListener != null) { + //若是被修改过 + if (0 == mSelectionStartBeforeDelete && mIndex != 0) { + //若之前有被修改并且文档不为空 + mOnTextViewChangeListener.onEditTextDelete(mIndex, getText().toString()); + //利用上文OnTextViewChangeListener对KEYCODE_DEL按键情况的删除函数进行删除 + return true; + } + } else { + Log.d(TAG, "OnTextViewChangeListener was not seted"); + //其他情况报错,文档的改动监听器并没有建立 + } + break; + case KeyEvent.KEYCODE_ENTER: + //同上也是分为监听器是否建立2种情况 + if (mOnTextViewChangeListener != null) { + int selectionStart = getSelectionStart(); + //获取当前位置 + String text = getText().subSequence(selectionStart, length()).toString(); + //获取当前文本 + setText(getText().subSequence(0, selectionStart)); + //根据获取的文本设置当前文本 + mOnTextViewChangeListener.onEditTextEnter(mIndex + 1, text); + //当{@link KeyEvent#KEYCODE_ENTER}添加新文本 + } else { + Log.d(TAG, "OnTextViewChangeListener was not seted"); + //其他情况报错,文档的改动监听器并没有建立 + } + break; + default: + break; + } + //继续执行父类的其他按键弹起的事件 + return super.onKeyUp(keyCode, event); + } + + @Override + /* + * 函数功能:当焦点发生变化时,会自动调用该方法来处理焦点改变的事件 + * 实现方式:如下注释 + * 参数:focused表示触发该事件的View是否获得了焦点,当该控件获得焦点时,Focused等于true,否则等于false。 + direction表示焦点移动的方向,用数值表示 + Rect:表示在触发事件的View的坐标系中,前一个获得焦点的矩形区域,即表示焦点是从哪里来的。如果不可用则为null + */ + protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { + if (mOnTextViewChangeListener != null) { + //若监听器已经建立 + if (!focused && TextUtils.isEmpty(getText())) { + //获取到焦点并且文本不为空 + mOnTextViewChangeListener.onTextChange(mIndex, false); + //mOnTextViewChangeListener子函数,置false隐藏事件选项 + } else { + mOnTextViewChangeListener.onTextChange(mIndex, true); + //mOnTextViewChangeListener子函数,置true显示事件选项 + } + } + //继续执行父类的其他焦点变化的事件 + super.onFocusChanged(focused, direction, previouslyFocusedRect); + } + + @Override + /* + * 函数功能:生成上下文菜单 + * 函数实现:如下注释 + */ + protected void onCreateContextMenu(ContextMenu menu) { + if (getText() instanceof Spanned) { + //有文本存在 + int selStart = getSelectionStart(); + int selEnd = getSelectionEnd(); + //获取文本开始和结尾位置 + + int min = Math.min(selStart, selEnd); + int max = Math.max(selStart, selEnd); + //获取开始到结尾的最大值和最小值 + + final URLSpan[] urls = ((Spanned) getText()).getSpans(min, max, URLSpan.class); + //设置url的信息的范围值 + if (urls.length == 1) { + int defaultResId = 0; + for(String schema: sSchemaActionResMap.keySet()) { + //获取计划表中所有的key值 + if(urls[0].getURL().indexOf(schema) >= 0) { + //若url可以添加则在添加后将defaultResId置为key所映射的值 + defaultResId = sSchemaActionResMap.get(schema); + break; + } + } + + if (defaultResId == 0) { + //defaultResId == 0则说明url并没有添加任何东西,所以置为连接其他SchemaActionResMap的值 + defaultResId = R.string.note_link_other; + } + + //建立菜单 + menu.add(0, 0, 0, defaultResId).setOnMenuItemClickListener( + new OnMenuItemClickListener() { + //新建按键监听器 + public boolean onMenuItemClick(MenuItem item) { + // goto a new intent + urls[0].onClick(NoteEditText.this); + //根据相应的文本设置菜单的按键 + return true; + } + }); + } + } + //继续执行父类的其他菜单创建的事件 + super.onCreateContextMenu(menu); + } +} \ No newline at end of file diff --git a/doc/210340006杜煜晗/ui包/NoteItemData.txt b/doc/210340006杜煜晗/ui包/NoteItemData.txt new file mode 100644 index 0000000..7b9be8d --- /dev/null +++ b/doc/210340006杜煜晗/ui包/NoteItemData.txt @@ -0,0 +1,214 @@ +package net.micode.notes.ui; + +import android.content.Context; +import android.database.Cursor; +import android.text.TextUtils; + +import net.micode.notes.data.Contact; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.tool.DataUtils; + + +public class NoteItemData { + static final String [] PROJECTION = new String [] { + NoteColumns.ID, + NoteColumns.ALERTED_DATE, + NoteColumns.BG_COLOR_ID, + NoteColumns.CREATED_DATE, + NoteColumns.HAS_ATTACHMENT, + NoteColumns.MODIFIED_DATE, + NoteColumns.NOTES_COUNT, + NoteColumns.PARENT_ID, + NoteColumns.SNIPPET, + NoteColumns.TYPE, + NoteColumns.WIDGET_ID, + NoteColumns.WIDGET_TYPE, + }; + //常量标记和数据就不一一标记了,意义翻译基本就知道 + private static final int ID_COLUMN = 0; + private static final int ALERTED_DATE_COLUMN = 1; + private static final int BG_COLOR_ID_COLUMN = 2; + private static final int CREATED_DATE_COLUMN = 3; + private static final int HAS_ATTACHMENT_COLUMN = 4; + private static final int MODIFIED_DATE_COLUMN = 5; + private static final int NOTES_COUNT_COLUMN = 6; + private static final int PARENT_ID_COLUMN = 7; + private static final int SNIPPET_COLUMN = 8; + private static final int TYPE_COLUMN = 9; + private static final int WIDGET_ID_COLUMN = 10; + private static final int WIDGET_TYPE_COLUMN = 11; + + private long mId; + private long mAlertDate; + private int mBgColorId; + private long mCreatedDate; + private boolean mHasAttachment; + private long mModifiedDate; + private int mNotesCount; + private long mParentId; + private String mSnippet; + private int mType; + private int mWidgetId; + private int mWidgetType; + private String mName; + private String mPhoneNumber; + + private boolean mIsLastItem; + private boolean mIsFirstItem; + private boolean mIsOnlyOneItem; + private boolean mIsOneNoteFollowingFolder; + private boolean mIsMultiNotesFollowingFolder; + //初始化NoteItemData,主要利用光标cursor获取的东西 + public NoteItemData(Context context, Cursor cursor) { + //getxxx为转换格式 + mId = cursor.getLong(ID_COLUMN); + mAlertDate = cursor.getLong(ALERTED_DATE_COLUMN); + mBgColorId = cursor.getInt(BG_COLOR_ID_COLUMN); + mCreatedDate = cursor.getLong(CREATED_DATE_COLUMN); + mHasAttachment = (cursor.getInt(HAS_ATTACHMENT_COLUMN) > 0) ? true : false; + mModifiedDate = cursor.getLong(MODIFIED_DATE_COLUMN); + mNotesCount = cursor.getInt(NOTES_COUNT_COLUMN); + mParentId = cursor.getLong(PARENT_ID_COLUMN); + mSnippet = cursor.getString(SNIPPET_COLUMN); + mSnippet = mSnippet.replace(NoteEditActivity.TAG_CHECKED, "").replace( + NoteEditActivity.TAG_UNCHECKED, ""); + mType = cursor.getInt(TYPE_COLUMN); + mWidgetId = cursor.getInt(WIDGET_ID_COLUMN); + mWidgetType = cursor.getInt(WIDGET_TYPE_COLUMN); + + //初始化电话号码的信息 + mPhoneNumber = ""; + if (mParentId == Notes.ID_CALL_RECORD_FOLDER) { + mPhoneNumber = DataUtils.getCallNumberByNoteId(context.getContentResolver(), mId); + if (!TextUtils.isEmpty(mPhoneNumber)) {//mphonenumber里有符合字符串,则用contart功能连接 + mName = Contact.getContact(context, mPhoneNumber); + if (mName == null) { + mName = mPhoneNumber; + } + } + } + + if (mName == null) { + mName = ""; + } + checkPostion(cursor); + } + ///根据鼠标的位置设置标记,和位置 + private void checkPostion(Cursor cursor) { + //初始化几个标记,cursor具体功能笔记中已提到,不一一叙述 + mIsLastItem = cursor.isLast() ? true : false; + mIsFirstItem = cursor.isFirst() ? true : false; + mIsOnlyOneItem = (cursor.getCount() == 1); + //初始化“多重子文件”“单一子文件”2个标记 + mIsMultiNotesFollowingFolder = false; + mIsOneNoteFollowingFolder = false; + + //主要是设置上诉2标记 + if (mType == Notes.TYPE_NOTE && !mIsFirstItem) {//若是note格式并且不是第一个元素 + int position = cursor.getPosition(); + if (cursor.moveToPrevious()) {//获取光标位置后看上一行 + if (cursor.getInt(TYPE_COLUMN) == Notes.TYPE_FOLDER + || cursor.getInt(TYPE_COLUMN) == Notes.TYPE_SYSTEM) {//若光标满足系统或note格式 + if (cursor.getCount() > (position + 1)) { + mIsMultiNotesFollowingFolder = true;//若是数据行数大于但前位置+1则设置成正确 + } else { + mIsOneNoteFollowingFolder = true;//否则单一文件夹标记为true + } + } + if (!cursor.moveToNext()) {//若不能再往下走则报错 + throw new IllegalStateException("cursor move to previous but can't move back"); + } + } + } + } +///以下都是获取标记没什么好说的,不过倒数第二个需要说明下,很具体看下面 + public boolean isOneFollowingFolder() { + return mIsOneNoteFollowingFolder; + } + + public boolean isMultiFollowingFolder() { + return mIsMultiNotesFollowingFolder; + } + + public boolean isLast() { + return mIsLastItem; + } + + public String getCallName() { + return mName; + } + + public boolean isFirst() { + return mIsFirstItem; + } + + public boolean isSingle() { + return mIsOnlyOneItem; + } + + public long getId() { + return mId; + } + + public long getAlertDate() { + return mAlertDate; + } + + public long getCreatedDate() { + return mCreatedDate; + } + + public boolean hasAttachment() { + return mHasAttachment; + } + + public long getModifiedDate() { + return mModifiedDate; + } + + public int getBgColorId() { + return mBgColorId; + } + + public long getParentId() { + return mParentId; + } + + public int getNotesCount() { + return mNotesCount; + } + + public long getFolderId () { + return mParentId; + } + + public int getType() { + return mType; + } + + public int getWidgetType() { + return mWidgetType; + } + + public int getWidgetId() { + return mWidgetId; + } + + public String getSnippet() { + return mSnippet; + } + + public boolean hasAlert() { + return (mAlertDate > 0); + } + + //若数据父id为保存至文件夹模式的id且满足电话号码单元不为空,则isCallRecord为true + public boolean isCallRecord() { + return (mParentId == Notes.ID_CALL_RECORD_FOLDER && !TextUtils.isEmpty(mPhoneNumber)); + } + + public static int getNoteType(Cursor cursor) { + return cursor.getInt(TYPE_COLUMN); + } +} \ No newline at end of file diff --git a/doc/210340006杜煜晗/ui包/NotesListActivity.txt b/doc/210340006杜煜晗/ui包/NotesListActivity.txt new file mode 100644 index 0000000..bc6c868 --- /dev/null +++ b/doc/210340006杜煜晗/ui包/NotesListActivity.txt @@ -0,0 +1,1002 @@ +package net.micode.notes.ui; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.appwidget.AppWidgetManager; +import android.content.AsyncQueryHandler; +import android.content.ContentResolver; +import android.content.ContentValues; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.database.Cursor; +import android.os.AsyncTask; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.util.Log; +import android.view.ActionMode; +import android.view.ContextMenu; +import android.view.ContextMenu.ContextMenuInfo; +import android.view.Display; +import android.view.HapticFeedbackConstants; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.MenuItem.OnMenuItemClickListener; +import android.view.MotionEvent; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.View.OnCreateContextMenuListener; +import android.view.View.OnTouchListener; +import android.view.inputmethod.InputMethodManager; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.AdapterView.OnItemLongClickListener; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ListView; +import android.widget.PopupMenu; +import android.widget.TextView; +import android.widget.Toast; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.remote.GTaskSyncService; +import net.micode.notes.model.WorkingNote; +import net.micode.notes.tool.BackupUtils; +import net.micode.notes.tool.DataUtils; +import net.micode.notes.tool.ResourceParser; +import net.micode.notes.ui.NotesListAdapter.AppWidgetAttribute; +import net.micode.notes.widget.NoteWidgetProvider_2x; +import net.micode.notes.widget.NoteWidgetProvider_4x; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.HashSet; +//主界面,一进入就是这个界面 +/** + * @author k + * + */ +public class NotesListActivity extends Activity implements OnClickListener, OnItemLongClickListener { //没有用特定的标签加注释。。。感觉没有什么用 + private static final int FOLDER_NOTE_LIST_QUERY_TOKEN = 0; + + private static final int FOLDER_LIST_QUERY_TOKEN = 1; + + private static final int MENU_FOLDER_DELETE = 0; + + private static final int MENU_FOLDER_VIEW = 1; + + private static final int MENU_FOLDER_CHANGE_NAME = 2; + + private static final String PREFERENCE_ADD_INTRODUCTION = "net.micode.notes.introduction"; //单行超过80个字符 + + private enum ListEditState { + NOTE_LIST, SUB_FOLDER, CALL_RECORD_FOLDER + }; + + private ListEditState mState; + + private BackgroundQueryHandler mBackgroundQueryHandler; + + private NotesListAdapter mNotesListAdapter; + + private ListView mNotesListView; + + private Button mAddNewNote; + + private boolean mDispatch; + + private int mOriginY; + + private int mDispatchY; + + private TextView mTitleBar; + + private long mCurrentFolderId; + + private ContentResolver mContentResolver; + + private ModeCallback mModeCallBack; + + private static final String TAG = "NotesListActivity"; + + public static final int NOTES_LISTVIEW_SCROLL_RATE = 30; + + private NoteItemData mFocusNoteDataItem; + + private static final String NORMAL_SELECTION = NoteColumns.PARENT_ID + "=?"; + + private static final String ROOT_FOLDER_SELECTION = "(" + NoteColumns.TYPE + "<>" + + Notes.TYPE_SYSTEM + " AND " + NoteColumns.PARENT_ID + "=?)" + " OR (" + + NoteColumns.ID + "=" + Notes.ID_CALL_RECORD_FOLDER + " AND " + + NoteColumns.NOTES_COUNT + ">0)"; + + private final static int REQUEST_CODE_OPEN_NODE = 102; + private final static int REQUEST_CODE_NEW_NODE = 103; + + @Override + // 创建类 + protected void onCreate(final Bundle savedInstanceState) { //需要是final类型 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 + // final类不能被继承,没有子类,final类中的方法默认是final的。 + //final方法不能被子类的方法覆盖,但可以被继承。 + //final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 + //final不能用于修饰构造方法。 + super.onCreate(savedInstanceState); // 调用父类的onCreate函数 + setContentView(R.layout.note_list); + initResources(); + + /** + * Insert an introduction when user firstly use this application + */ + setAppInfoFromRawRes(); + } + + @Override + // 返回一些子模块完成的数据交给主Activity处理 + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + // 结果值 和 要求值 符合要求 + if (resultCode == RESULT_OK + && (requestCode == REQUEST_CODE_OPEN_NODE || requestCode == REQUEST_CODE_NEW_NODE)) { + mNotesListAdapter.changeCursor(null); + } else { + super.onActivityResult(requestCode, resultCode, data); + // 调用 Activity 的onActivityResult() + } + } + + private void setAppInfoFromRawRes() { + // Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。 + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); + if (!sp.getBoolean(PREFERENCE_ADD_INTRODUCTION, false)) { + StringBuilder sb = new StringBuilder(); + InputStream in = null; + try { + // 把资源文件放到应用程序的/raw/raw下,那么就可以在应用中使用getResources获取资源后, + // 以openRawResource方法(不带后缀的资源文件名)打开这个文件。 + in = getResources().openRawResource(R.raw.introduction); + if (in != null) { + InputStreamReader isr = new InputStreamReader(in); + BufferedReader br = new BufferedReader(isr); + 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; + } + } catch (IOException e) { + e.printStackTrace(); + return; + } finally { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + + // 创建空的WorkingNote + WorkingNote note = WorkingNote.createEmptyNote(this, Notes.ID_ROOT_FOLDER, + AppWidgetManager.INVALID_APPWIDGET_ID, Notes.TYPE_WIDGET_INVALIDE, + ResourceParser.RED); + note.setWorkingText(sb.toString()); + if (note.saveNote()) { + // 更新保存note的信息 + sp.edit().putBoolean(PREFERENCE_ADD_INTRODUCTION, true).commit(); + } else { + Log.e(TAG, "Save introduction note error"); + return; + } + } + } + + @Override + protected void onStart() { + super.onStart(); + startAsyncNotesListQuery(); + } + + // 初始化资源 + private void initResources() { + mContentResolver = this.getContentResolver(); // 获取应用程序的数据,得到类似数据表的东西 + mBackgroundQueryHandler = new BackgroundQueryHandler(this.getContentResolver()); + mCurrentFolderId = Notes.ID_ROOT_FOLDER; + + // findViewById 是安卓编程的定位函数,主要是引用.R文件里的引用名 + mNotesListView = (ListView) findViewById(R.id.notes_list); // 绑定XML中的ListView,作为Item的容器 + mNotesListView.addFooterView(LayoutInflater.from(this).inflate(R.layout.note_list_footer, null), + null, false); + mNotesListView.setOnItemClickListener(new OnListItemClickListener()); + mNotesListView.setOnItemLongClickListener(this); + mNotesListAdapter = new NotesListAdapter(this); + mNotesListView.setAdapter(mNotesListAdapter); + mAddNewNote = (Button) findViewById(R.id.btn_new_note);// 在activity中要获取该按钮 + mAddNewNote.setOnClickListener(this); + mAddNewNote.setOnTouchListener(new NewNoteOnTouchListener()); + mDispatch = false; + mDispatchY = 0; + mOriginY = 0; + mTitleBar = (TextView) findViewById(R.id.tv_title_bar); + mState = ListEditState.NOTE_LIST; + mModeCallBack = new ModeCallback(); + } + + // 继承自ListView.MultiChoiceModeListener 和 OnMenuItemClickListener + private class ModeCallback implements ListView.MultiChoiceModeListener, OnMenuItemClickListener { + private DropdownMenu mDropDownMenu; + private ActionMode mActionMode; + private MenuItem mMoveMenu; + + public boolean onCreateActionMode(ActionMode mode, Menu menu) { + getMenuInflater().inflate(R.menu.note_list_options, menu); + menu.findItem(R.id.delete).setOnMenuItemClickListener(this); + mMoveMenu = menu.findItem(R.id.move); + if (mFocusNoteDataItem.getParentId() == Notes.ID_CALL_RECORD_FOLDER + || DataUtils.getUserFolderCount(mContentResolver) == 0) { + mMoveMenu.setVisible(false); + } else { + mMoveMenu.setVisible(true); + mMoveMenu.setOnMenuItemClickListener(this); + } + mActionMode = mode; + mNotesListAdapter.setChoiceMode(true); + mNotesListView.setLongClickable(false); + mAddNewNote.setVisibility(View.GONE); + + View customView = LayoutInflater.from(NotesListActivity.this).inflate( + R.layout.note_list_dropdown_menu, null); + mode.setCustomView(customView); + mDropDownMenu = new DropdownMenu(NotesListActivity.this, + (Button) customView.findViewById(R.id.selection_menu), + R.menu.note_list_dropdown); + mDropDownMenu.setOnDropdownMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){ + public boolean onMenuItemClick(final MenuItem item) { + mNotesListAdapter.selectAll(!mNotesListAdapter.isAllSelected()); + updateMenu(); + return true; + } + + }); + return true; + } + + // 更新菜单 + private void updateMenu() { + int selectedCount = mNotesListAdapter.getSelectedCount(); + // Update dropdown menu + String format = getResources().getString(R.string.menu_select_title, selectedCount); + mDropDownMenu.setTitle(format); // 更改标题 + MenuItem item = mDropDownMenu.findItem(R.id.action_select_all); + if (item != null) { + if (mNotesListAdapter.isAllSelected()) { + item.setChecked(true); + item.setTitle(R.string.menu_deselect_all); + } else { + item.setChecked(false); + item.setTitle(R.string.menu_select_all); + } + } + } + + public boolean onPrepareActionMode(ActionMode mode, Menu menu) { + // TODO Auto-generated method stub + return false; + } + + public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + // TODO Auto-generated method stub + return false; + } + + public void onDestroyActionMode(ActionMode mode) { + mNotesListAdapter.setChoiceMode(false); + mNotesListView.setLongClickable(true); + mAddNewNote.setVisibility(View.VISIBLE); + } + + public void finishActionMode() { + mActionMode.finish(); + } + + public void onItemCheckedStateChanged(ActionMode mode, int position, long id, + 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(); + 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); + builder.setMessage(getString(R.string.alert_message_delete_notes, + mNotesListAdapter.getSelectedCount())); + builder.setPositiveButton(android.R.string.ok, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + batchDelete(); + } + }); + builder.setNegativeButton(android.R.string.cancel, null); + builder.show(); + break; + case R.id.move: + startQueryDestinationFolders(); + break; + default: + 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(); + int start = screenHeight - newNoteViewHeight; + int eventY = start + (int) event.getY(); + /** + * Minus TitleBar's height + */ + if (mState == ListEditState.SUB_FOLDER) { + eventY -= mTitleBar.getHeight(); + start -= mTitleBar.getHeight(); + } + /** + * HACKME:When click the transparent part of "New Note" button, dispatch + * the event to the list view behind this button. The transparent part of + * "New Note" button could be expressed by formula y=-0.12x+94锛圲nit:pixel锛 + * and the line top of the button. The coordinate based on left of the "New + * Note" button. The 94 represents maximum height of the transparent part. + * Notice that, if the background of the button changes, the formula should + * also change. This is very bad, just for the UI designer's strong requirement. + */ + if (event.getY() < (event.getX() * (-0.12) + 94)) { + View view = mNotesListView.getChildAt(mNotesListView.getChildCount() - 1 + - mNotesListView.getFooterViewsCount()); + if (view != null && view.getBottom() > start + && (view.getTop() < (start + 94))) { + mOriginY = (int) event.getY(); + mDispatchY = eventY; + event.setLocation(event.getX(), mDispatchY); + mDispatch = true; + return mNotesListView.dispatchTouchEvent(event); + } + } + break; + } + case MotionEvent.ACTION_MOVE: { + if (mDispatch) { + mDispatchY += (int) event.getY() - mOriginY; + event.setLocation(event.getX(), mDispatchY); + return mNotesListView.dispatchTouchEvent(event); + } + break; + } + default: { + if (mDispatch) { + event.setLocation(event.getX(), mDispatchY); + mDispatch = false; + return mNotesListView.dispatchTouchEvent(event); + } + break; + } + } + return false; + } + + }; + + private void startAsyncNotesListQuery() { + String selection = (mCurrentFolderId == Notes.ID_ROOT_FOLDER) ? ROOT_FOLDER_SELECTION + : NORMAL_SELECTION; + mBackgroundQueryHandler.startQuery(FOLDER_NOTE_LIST_QUERY_TOKEN, null, + Notes.CONTENT_NOTE_URI, NoteItemData.PROJECTION, selection, new String[] { + String.valueOf(mCurrentFolderId) + }, NoteColumns.TYPE + " DESC," + NoteColumns.MODIFIED_DATE + " DESC"); + } + + private final class BackgroundQueryHandler extends AsyncQueryHandler { + public BackgroundQueryHandler(ContentResolver contentResolver) { + super(contentResolver); + } + + @Override + protected void onQueryComplete(int token, Object cookie, Cursor cursor) { + 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; + default: + return; + } + } + } + + 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() { + + public void onClick(DialogInterface dialog, int which) { + DataUtils.batchMoveToFolder(mContentResolver, + mNotesListAdapter.getSelectedItemIds(), adapter.getItemId(which)); + Toast.makeText( + NotesListActivity.this, + getString(R.string.format_move_notes_to_folder, + mNotesListAdapter.getSelectedCount(), + adapter.getFolderName(NotesListActivity.this, which)), + Toast.LENGTH_SHORT).show(); + 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); + } + + private void batchDelete() { + new AsyncTask>() { + protected HashSet doInBackground(Void... unused) { + HashSet widgets = mNotesListAdapter.getSelectedWidget(); + if (!isSyncMode()) { + // if not synced, delete notes directly + if (DataUtils.batchDeleteNotes(mContentResolver, mNotesListAdapter + .getSelectedItemIds())) { + } else { + Log.e(TAG, "Delete notes error, should not happens"); + } + } else { + // in sync mode, we'll move the deleted note into the trash + // folder + if (!DataUtils.batchMoveToFolder(mContentResolver, mNotesListAdapter + .getSelectedItemIds(), Notes.ID_TRASH_FOLER)) { + Log.e(TAG, "Move notes to trash folder error, should not happens"); + } + } + return widgets; + } + + @Override + protected void onPostExecute(HashSet widgets) { + if (widgets != null) { + for (AppWidgetAttribute widget : widgets) { + if (widget.widgetId != AppWidgetManager.INVALID_APPWIDGET_ID + && widget.widgetType != Notes.TYPE_WIDGET_INVALIDE) { + updateWidget(widget.widgetId, widget.widgetType); + } + } + } + mModeCallBack.finishActionMode(); + } + }.execute(); + } + + private void deleteFolder(long folderId) { + if (folderId == Notes.ID_ROOT_FOLDER) { + Log.e(TAG, "Wrong folder id, should not happen " + folderId); + return; + } + + HashSet ids = new HashSet(); + ids.add(folderId); + HashSet widgets = DataUtils.getFolderNoteWidget(mContentResolver, + folderId); + if (!isSyncMode()) { + // if not synced, delete folder directly + DataUtils.batchDeleteNotes(mContentResolver, ids); + } else { + // in sync mode, we'll move the deleted folder into the trash folder + DataUtils.batchMoveToFolder(mContentResolver, ids, Notes.ID_TRASH_FOLER); + } + if (widgets != null) { + for (AppWidgetAttribute widget : widgets) { + if (widget.widgetId != AppWidgetManager.INVALID_APPWIDGET_ID + && widget.widgetType != Notes.TYPE_WIDGET_INVALIDE) { + updateWidget(widget.widgetId, widget.widgetType); + } + } + } + } + + private void openNode(NoteItemData data) { + Intent intent = new Intent(this, NoteEditActivity.class); + intent.setAction(Intent.ACTION_VIEW); + intent.putExtra(Intent.EXTRA_UID, data.getId()); + this.startActivityForResult(intent, REQUEST_CODE_OPEN_NODE); + } + + private void openFolder(NoteItemData data) { + mCurrentFolderId = data.getId(); + startAsyncNotesListQuery(); + if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { + mState = ListEditState.CALL_RECORD_FOLDER; + mAddNewNote.setVisibility(View.GONE); + } else { + mState = ListEditState.SUB_FOLDER; + } + if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { + mTitleBar.setText(R.string.call_record_folder_name); + } else { + mTitleBar.setText(data.getSnippet()); + } + mTitleBar.setVisibility(View.VISIBLE); + } + + public void onClick(View v) { + switch (v.getId()) { + case R.id.btn_new_note: + createNewNote(); + break; + default: + break; + } + } + + private void showSoftInput() { + InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + if (inputMethodManager != null) { + inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); + } + } + + private void hideSoftInput(View view) { + InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + + private void showCreateOrModifyFolderDialog(final boolean create) { + final AlertDialog.Builder builder = new AlertDialog.Builder(this); + View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_text, null); + final EditText etName = (EditText) view.findViewById(R.id.et_foler_name); + showSoftInput(); + if (!create) { + if (mFocusNoteDataItem != null) { + etName.setText(mFocusNoteDataItem.getSnippet()); + builder.setTitle(getString(R.string.menu_folder_change_name)); + } else { + Log.e(TAG, "The long click data item is null"); + return; + } + } else { + etName.setText(""); + builder.setTitle(this.getString(R.string.menu_create_folder)); + } + + builder.setPositiveButton(android.R.string.ok, null); + builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + hideSoftInput(etName); + } + }); + + final Dialog dialog = builder.setView(view).show(); + final Button positive = (Button)dialog.findViewById(android.R.id.button1); + positive.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + hideSoftInput(etName); + String name = etName.getText().toString(); + if (DataUtils.checkVisibleFolderName(mContentResolver, name)) { + Toast.makeText(NotesListActivity.this, getString(R.string.folder_exist, name), + Toast.LENGTH_LONG).show(); + etName.setSelection(0, etName.length()); + return; + } + if (!create) { + if (!TextUtils.isEmpty(name)) { + ContentValues values = new ContentValues(); + values.put(NoteColumns.SNIPPET, name); + values.put(NoteColumns.TYPE, Notes.TYPE_FOLDER); + values.put(NoteColumns.LOCAL_MODIFIED, 1); + mContentResolver.update(Notes.CONTENT_NOTE_URI, values, NoteColumns.ID + + "=?", new String[] { + String.valueOf(mFocusNoteDataItem.getId()) + }); + } + } else if (!TextUtils.isEmpty(name)) { + ContentValues values = new ContentValues(); + values.put(NoteColumns.SNIPPET, name); + values.put(NoteColumns.TYPE, Notes.TYPE_FOLDER); + mContentResolver.insert(Notes.CONTENT_NOTE_URI, values); + } + dialog.dismiss(); + } + }); + + if (TextUtils.isEmpty(etName.getText())) { + positive.setEnabled(false); + } + /** + * When the name edit text is null, disable the positive button + */ + etName.addTextChangedListener(new TextWatcher() { + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + // TODO Auto-generated method stub + + } + + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (TextUtils.isEmpty(etName.getText())) { + positive.setEnabled(false); + } else { + positive.setEnabled(true); + } + } + + public void afterTextChanged(Editable s) { + // TODO Auto-generated method stub + + } + }); + } + + /* (non-Javadoc) + * @see android.app.Activity#onBackPressed() + * 按返回键时根据情况更改类中的数据 + */ + @Override + public void onBackPressed() { switch (mState) { + case SUB_FOLDER: + mCurrentFolderId = Notes.ID_ROOT_FOLDER; + mState = ListEditState.NOTE_LIST; + startAsyncNotesListQuery(); + mTitleBar.setVisibility(View.GONE); + break; + case CALL_RECORD_FOLDER: + mCurrentFolderId = Notes.ID_ROOT_FOLDER; + mState = ListEditState.NOTE_LIST; + mAddNewNote.setVisibility(View.VISIBLE); + mTitleBar.setVisibility(View.GONE); + startAsyncNotesListQuery(); + break; + case NOTE_LIST: + super.onBackPressed(); + break; + default: + break; + } + } + + /** + * @param appWidgetId + * @param appWidgetType + * 根据不同类型的widget更新插件,通过intent传送数据 + */ + private void updateWidget(int appWidgetId, int appWidgetType) { + Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE); + if (appWidgetType == Notes.TYPE_WIDGET_2X) { + intent.setClass(this, NoteWidgetProvider_2x.class); + } else if (appWidgetType == Notes.TYPE_WIDGET_4X) { + intent.setClass(this, NoteWidgetProvider_4x.class); + } else { + Log.e(TAG, "Unspported widget type"); + return; + } + + intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { + appWidgetId + }); + + sendBroadcast(intent); + setResult(RESULT_OK, intent); + } + + /** + * 声明监听器,建立菜单,包括名称,视图,删除操作,更改名称操作; + */ + private final OnCreateContextMenuListener mFolderOnCreateContextMenuListener = new OnCreateContextMenuListener() { + public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { + if (mFocusNoteDataItem != null) { + menu.setHeaderTitle(mFocusNoteDataItem.getSnippet()); + menu.add(0, MENU_FOLDER_VIEW, 0, R.string.menu_folder_view); + menu.add(0, MENU_FOLDER_DELETE, 0, R.string.menu_folder_delete); + menu.add(0, MENU_FOLDER_CHANGE_NAME, 0, R.string.menu_folder_change_name); + } + } + }; + + @Override + public void onContextMenuClosed(Menu menu) { + if (mNotesListView != null) { + mNotesListView.setOnCreateContextMenuListener(null); + } + super.onContextMenuClosed(menu); + } + + /* (non-Javadoc) + * @see android.app.Activity#onContextItemSelected(android.view.MenuItem) + * 针对menu中不同的选择进行不同的处理,里面详细注释 + */ + @Override + public boolean onContextItemSelected(MenuItem item) { + if (mFocusNoteDataItem == null) { + Log.e(TAG, "The long click data item is null"); + return false; + } + switch (item.getItemId()) { + case MENU_FOLDER_VIEW: + openFolder(mFocusNoteDataItem);//打开对应文件 + break; + case MENU_FOLDER_DELETE: + AlertDialog.Builder builder = new AlertDialog.Builder(this);//设置确认是否删除的对话框 + builder.setTitle(getString(R.string.alert_title_delete)); + builder.setIcon(android.R.drawable.ic_dialog_alert); + builder.setMessage(getString(R.string.alert_message_delete_folder)); + builder.setPositiveButton(android.R.string.ok, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + deleteFolder(mFocusNoteDataItem.getId()); + } + }); + builder.setNegativeButton(android.R.string.cancel, null); + builder.show();//显示对话框 + break; + case MENU_FOLDER_CHANGE_NAME: + showCreateOrModifyFolderDialog(false); + break; + default: + break; + } + + return true; + } + + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + menu.clear(); + if (mState == ListEditState.NOTE_LIST) { + getMenuInflater().inflate(R.menu.note_list, menu); + // set sync or sync_cancel + menu.findItem(R.id.menu_sync).setTitle( + GTaskSyncService.isSyncing() ? R.string.menu_sync_cancel : R.string.menu_sync); + } else if (mState == ListEditState.SUB_FOLDER) { + getMenuInflater().inflate(R.menu.sub_folder, menu); + } else if (mState == ListEditState.CALL_RECORD_FOLDER) { + getMenuInflater().inflate(R.menu.call_record_folder, menu); + } else { + Log.e(TAG, "Wrong state:" + mState); + } + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.menu_new_folder: { + showCreateOrModifyFolderDialog(true); + break; + } + case R.id.menu_export_text: { + exportNoteToText(); + break; + } + case R.id.menu_sync: { + if (isSyncMode()) { + if (TextUtils.equals(item.getTitle(), getString(R.string.menu_sync))) { + GTaskSyncService.startSync(this); + } else { + GTaskSyncService.cancelSync(this); + } + } else { + startPreferenceActivity(); + } + break; + } + case R.id.menu_setting: { + startPreferenceActivity(); + break; + } + case R.id.menu_new_note: { + createNewNote(); + break; + } + case R.id.menu_search: + onSearchRequested(); + break; + default: + break; + } + return true; + } + + /* (non-Javadoc) + * @see android.app.Activity#onSearchRequested() + * 直接调用startSearch函数 + */ + @Override + public boolean onSearchRequested() { + startSearch(null, false, null /* appData */, false); + return true; + } + + /** + * 函数功能:实现将便签导出到文本功能 + */ + private void exportNoteToText() { + final BackupUtils backup = BackupUtils.getInstance(NotesListActivity.this); + new AsyncTask() { + + @Override + protected Integer doInBackground(Void... unused) { + return backup.exportToText(); + } + + @Override + protected void onPostExecute(Integer result) { + if (result == BackupUtils.STATE_SD_CARD_UNMOUONTED) { + AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); + builder.setTitle(NotesListActivity.this + .getString(R.string.failed_sdcard_export)); + builder.setMessage(NotesListActivity.this + .getString(R.string.error_sdcard_unmounted)); + builder.setPositiveButton(android.R.string.ok, null); + builder.show(); + } else if (result == BackupUtils.STATE_SUCCESS) { + AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); + builder.setTitle(NotesListActivity.this + .getString(R.string.success_sdcard_export)); + builder.setMessage(NotesListActivity.this.getString( + R.string.format_exported_file_location, backup + .getExportedTextFileName(), backup.getExportedTextFileDir())); + builder.setPositiveButton(android.R.string.ok, null); + builder.show(); + } else if (result == BackupUtils.STATE_SYSTEM_ERROR) { + AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); + builder.setTitle(NotesListActivity.this + .getString(R.string.failed_sdcard_export)); + builder.setMessage(NotesListActivity.this + .getString(R.string.error_sdcard_export)); + builder.setPositiveButton(android.R.string.ok, null); + builder.show(); + } + } + + }.execute(); + } + + /** + * @return + * 功能:判断是否正在同步 + */ + private boolean isSyncMode() { + return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0; + } + + /** + * 功能:跳转到PreferenceActivity界面 + */ + private void startPreferenceActivity() { + Activity from = getParent() != null ? getParent() : this; + Intent intent = new Intent(from, NotesPreferenceActivity.class); + from.startActivityIfNeeded(intent, -1); + } + + /** + * @author k + * 函数功能:实现对便签列表项的点击事件(短按) + */ + private class OnListItemClickListener implements OnItemClickListener { + + public void onItemClick(AdapterView parent, View view, int position, long id) { + if (view instanceof NotesListItem) { + NoteItemData item = ((NotesListItem) view).getItemData(); + if (mNotesListAdapter.isInChoiceMode()) { + if (item.getType() == Notes.TYPE_NOTE) { + position = position - mNotesListView.getHeaderViewsCount(); + mModeCallBack.onItemCheckedStateChanged(null, position, id, + !mNotesListAdapter.isSelectedItem(position)); + } + return; + } + + switch (mState) { + case NOTE_LIST: + if (item.getType() == Notes.TYPE_FOLDER + || item.getType() == Notes.TYPE_SYSTEM) { + openFolder(item); + } else if (item.getType() == Notes.TYPE_NOTE) { + openNode(item); + } else { + Log.e(TAG, "Wrong note type in NOTE_LIST"); + } + break; + case SUB_FOLDER: + case CALL_RECORD_FOLDER: + if (item.getType() == Notes.TYPE_NOTE) { + openNode(item); + } else { + Log.e(TAG, "Wrong note type in SUB_FOLDER"); + } + break; + default: + break; + } + } + } + + } + + /** + * 查询目标文件 + */ + private void startQueryDestinationFolders() { + String selection = NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>? AND " + NoteColumns.ID + "<>?"; + selection = (mState == ListEditState.NOTE_LIST) ? selection: + "(" + selection + ") OR (" + NoteColumns.ID + "=" + Notes.ID_ROOT_FOLDER + ")"; + + mBackgroundQueryHandler.startQuery(FOLDER_LIST_QUERY_TOKEN, + null, + Notes.CONTENT_NOTE_URI, + FoldersListAdapter.PROJECTION, + selection, + new String[] { + String.valueOf(Notes.TYPE_FOLDER), + String.valueOf(Notes.ID_TRASH_FOLER), + String.valueOf(mCurrentFolderId) + }, + NoteColumns.MODIFIED_DATE + " DESC"); + } + + /* (non-Javadoc) + * @see android.widget.AdapterView.OnItemLongClickListener#onItemLongClick(android.widget.AdapterView, android.view.View, int, long) + * 长按某一项时进行的操作 + * 如果长按的是便签,则通过ActionMode菜单实现;如果长按的是文件夹,则通过ContextMenu菜单实现; + * 具体ActionMOde菜单和ContextMenu菜单的详细见精度笔记 + */ + public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { + if (view instanceof NotesListItem) { + mFocusNoteDataItem = ((NotesListItem) view).getItemData(); + if (mFocusNoteDataItem.getType() == Notes.TYPE_NOTE && !mNotesListAdapter.isInChoiceMode()) { + if (mNotesListView.startActionMode(mModeCallBack) != null) { + mModeCallBack.onItemCheckedStateChanged(null, position, id, true); + mNotesListView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); + } else { + Log.e(TAG, "startActionMode fails"); + } + } else if (mFocusNoteDataItem.getType() == Notes.TYPE_FOLDER) { + mNotesListView.setOnCreateContextMenuListener(mFolderOnCreateContextMenuListener); + } + } + return false; + } +} \ No newline at end of file diff --git a/doc/210340006杜煜晗/ui包/NotesListAdapter.txt b/doc/210340006杜煜晗/ui包/NotesListAdapter.txt new file mode 100644 index 0000000..ea7f9f9 --- /dev/null +++ b/doc/210340006杜煜晗/ui包/NotesListAdapter.txt @@ -0,0 +1,257 @@ +package net.micode.notes.ui; + +import android.content.Context; +import android.database.Cursor; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CursorAdapter; + + +import net.micode.notes.data.Notes; + +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; + + +/* + * 功能:直译为便签表连接器,继承了CursorAdapter,它为cursor和ListView提供了连接的桥梁。 + * 所以NotesListAdapter实现的是鼠标和编辑便签链接的桥梁 + */ +public class NotesListAdapter extends CursorAdapter { + private static final String TAG = "NotesListAdapter"; + private Context mContext; + private HashMap mSelectedIndex; + private int mNotesCount; //便签数 + private boolean mChoiceMode; //选择模式标记 + + /* + * 桌面widget的属性,包括编号和类型 + */ + public static class AppWidgetAttribute { + public int widgetId; + public int widgetType; + }; + + /* + * 函数功能:初始化便签链接器 + * 函数实现:根据传进来的内容设置相关变量 + */ + public NotesListAdapter(Context context) { + super(context, null); //父类对象置空 + mSelectedIndex = new HashMap(); //新建选项下标的hash表 + mContext = context; + mNotesCount = 0; + } + + @Override + /* + * 函数功能:新建一个视图来存储光标所指向的数据 + * 函数实现:使用兄弟类NotesListItem新建一个项目选项 + */ + public View newView(Context context, Cursor cursor, ViewGroup parent) { + return new NotesListItem(context); + } + + /* + * 函数功能:将已经存在的视图和鼠标指向的数据进行捆绑 + * 函数实现:如下注释 + */ + @Override + public void bindView(View view, Context context, Cursor cursor) { + if (view instanceof NotesListItem) { + //若view是NotesListItem的一个实例 + NoteItemData itemData = new NoteItemData(context, cursor); + ((NotesListItem) view).bind(context, itemData, mChoiceMode, + isSelectedItem(cursor.getPosition())); + //则新建一个项目选项并且用bind跟将view和鼠标,内容,便签数据捆绑在一起 + } + } + + /* + * 函数功能:设置勾选框 + * 函数实现:如下注释 + */ + public void setCheckedItem(final int position, final boolean checked) { + mSelectedIndex.put(position, checked); + //根据定位和是否勾选设置下标 + notifyDataSetChanged(); + //在修改后刷新activity + } + + /* + * 函数功能:判断单选按钮是否勾选 + */ + public boolean isInChoiceMode() { + return mChoiceMode; + } + + /* + * 函数功能:设置单项选项框 + * 函数实现:重置下标并且根据参数mode设置选项 + */ + public void setChoiceMode(boolean mode) { + mSelectedIndex.clear(); + mChoiceMode = mode; + } + + /* + * 函数功能:选择全部选项 + * 函数实现:如下注释 + */ + public void selectAll(boolean checked) { + Cursor cursor = getCursor(); + //获取光标位置 + for (int i = 0; i < getCount(); i++) { + if (cursor.moveToPosition(i)) { + if (NoteItemData.getNoteType(cursor) == Notes.TYPE_NOTE) { + setCheckedItem(i, checked); + } + } + } + //遍历所有光标可用的位置在判断为便签类型之后勾选单项框 + } + + /* + * 函数功能:建立选择项的下标列表 + * 函数实现:如下注释 + */ + public HashSet getSelectedItemIds() { + HashSet itemSet = new HashSet(); + //建立hash表 + for (Integer position : mSelectedIndex.keySet()) { + //遍历所有的关键 + if (mSelectedIndex.get(position) == true) { + //若光标位置可用 + Long id = getItemId(position); + if (id == Notes.ID_ROOT_FOLDER) { + //原文件不需要添加 + Log.d(TAG, "Wrong item id, should not happen"); + } else { + itemSet.add(id); + } + //则将id该下标假如选项集合中 + + } + } + + return itemSet; + } + + /* + * 函数功能:建立桌面Widget的选项表 + * 函数实现:如下注释 + */ + public HashSet getSelectedWidget() { + HashSet itemSet = new HashSet(); + for (Integer position : mSelectedIndex.keySet()) { + if (mSelectedIndex.get(position) == true) { + Cursor c = (Cursor) getItem(position); + //以上4句和getSelectedItemIds一样,不再重复 + if (c != null) { + //光标位置可用的话就建立新的Widget属性并编辑下标和类型,最后添加到选项集中 + AppWidgetAttribute widget = new AppWidgetAttribute(); + NoteItemData item = new NoteItemData(mContext, c); + widget.widgetId = item.getWidgetId(); + widget.widgetType = item.getWidgetType(); + itemSet.add(widget); + /** + * Don't close cursor here, only the adapter could close it + */ + } else { + Log.e(TAG, "Invalid cursor"); + return null; + } + } + } + return itemSet; + } + + /* + * 函数功能:获取选项个数 + * 函数实现:如下注释 + */ + public int getSelectedCount() { + Collection values = mSelectedIndex.values(); + //首先获取选项下标的值 + if (null == values) { + return 0; + } + Iterator iter = values.iterator(); + //初始化叠加器 + int count = 0; + while (iter.hasNext()) { + if (true == iter.next()) { + //若value值为真计数+1 + count++; + } + } + return count; + } + + /* + * 函数功能:判断是否全部选中 + * 函数实现:如下注释 + */ + public boolean isAllSelected() { + int checkedCount = getSelectedCount(); + return (checkedCount != 0 && checkedCount == mNotesCount); + //获取选项数看是否等于便签的个数 + } + + /* + * 函数功能:判断是否为选项表 + * 函数实现:通过传递的下标来确定 + */ + public boolean isSelectedItem(final int position) { + if (null == mSelectedIndex.get(position)) { + return false; + } + return mSelectedIndex.get(position); + } + + @Override + /* + * 函数功能:在activity内容发生局部变动的时候回调该函数计算便签的数量 + * 函数实现:如下注释 + */ + protected void onContentChanged() { + super.onContentChanged(); + //执行基类函数 + calcNotesCount(); + } + + @Override + /* + * 函数功能:在activity光标发生局部变动的时候回调该函数计算便签的数量 + */ + public void changeCursor(Cursor cursor) { + super.changeCursor(cursor); + //执行基类函数 + calcNotesCount(); + } + + /* + * 函数功能:计算便签数量 + * + */ + private void calcNotesCount() { + mNotesCount = 0; + for (int i = 0; i < getCount(); i++) { + //获取总数同时遍历 + Cursor c = (Cursor) getItem(i); + if (c != null) { + if (NoteItemData.getNoteType(c) == Notes.TYPE_NOTE) { + mNotesCount++; + //若该位置不为空并且文本类型为便签就+1 + } + } else { + Log.e(TAG, "Invalid cursor"); + return; + } + //否则报错 + } + } +} \ No newline at end of file diff --git a/doc/210340006杜煜晗/ui包/NotesListItem.txt b/doc/210340006杜煜晗/ui包/NotesListItem.txt new file mode 100644 index 0000000..08a8017 --- /dev/null +++ b/doc/210340006杜煜晗/ui包/NotesListItem.txt @@ -0,0 +1,116 @@ +package net.micode.notes.ui; + +import android.content.Context; +import android.text.format.DateUtils; +import android.view.View; +import android.widget.CheckBox; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.tool.DataUtils; +import net.micode.notes.tool.ResourceParser.NoteItemBgResources; + + +//创建便签列表项目选项 +public class NotesListItem extends LinearLayout { + private ImageView mAlert;//闹钟图片 + private TextView mTitle; //标题 + private TextView mTime; //时间 + private TextView mCallName; // + private NoteItemData mItemData; //标签数据 + private CheckBox mCheckBox; //打钩框 + + /*初始化基本信息*/ + public NotesListItem(Context context) { + super(context); //super()它的主要作用是调整调用父类构造函数的顺序 + inflate(context, R.layout.note_item, this);//Inflate可用于将一个xml中定义的布局控件找出来,这里的xml是r。layout + //findViewById用于从contentView中查找指定ID的View,转换出来的形式根据需要而定; + mAlert = (ImageView) findViewById(R.id.iv_alert_icon); + mTitle = (TextView) findViewById(R.id.tv_title); + mTime = (TextView) findViewById(R.id.tv_time); + mCallName = (TextView) findViewById(R.id.tv_name); + mCheckBox = (CheckBox) findViewById(android.R.id.checkbox); + } + ///根据data的属性对各个控件的属性的控制,主要是可见性Visibility,内容setText,格式setTextAppearance + public void bind(Context context, NoteItemData data, boolean choiceMode, boolean checked) { + if (choiceMode && data.getType() == Notes.TYPE_NOTE) { + mCheckBox.setVisibility(View.VISIBLE); ///设置可见行为可见 + mCheckBox.setChecked(checked); ///格子打钩 + } else { + mCheckBox.setVisibility(View.GONE); + } + + mItemData = data; + ///设置控件属性,一共三种情况,由data的id和父id是否与保存到文件夹的id一致来决定 + if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { + mCallName.setVisibility(View.GONE); + mAlert.setVisibility(View.VISIBLE); + //设置该textview的style + mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem); + //settext为设置内容 + mTitle.setText(context.getString(R.string.call_record_folder_name) + + context.getString(R.string.format_folder_files_count, data.getNotesCount())); + mAlert.setImageResource(R.drawable.call_record); + } else if (data.getParentId() == Notes.ID_CALL_RECORD_FOLDER) { + mCallName.setVisibility(View.VISIBLE); + mCallName.setText(data.getCallName()); + mTitle.setTextAppearance(context,R.style.TextAppearanceSecondaryItem); + mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); + ///关于闹钟的设置 + if (data.hasAlert()) { + mAlert.setImageResource(R.drawable.clock);//图片来源的设置 + mAlert.setVisibility(View.VISIBLE); + } else { + mAlert.setVisibility(View.GONE); + } + } else { + mCallName.setVisibility(View.GONE); + mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem); + ///设置title格式 + if (data.getType() == Notes.TYPE_FOLDER) { + mTitle.setText(data.getSnippet() + + context.getString(R.string.format_folder_files_count, + data.getNotesCount())); + mAlert.setVisibility(View.GONE); + } else { + mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); + if (data.hasAlert()) { + mAlert.setImageResource(R.drawable.clock);///设置图片来源 + mAlert.setVisibility(View.VISIBLE); + } else { + mAlert.setVisibility(View.GONE); + } + } + } + ///设置内容,获取相关时间,从data里编辑的日期中获取 + mTime. setText(DateUtils.getRelativeTimeSpanString(data.getModifiedDate())); + + setBackground(data); + } + //根据data的文件属性来设置背景 + private void setBackground(NoteItemData data) { + int id = data.getBgColorId(); + //,若是note型文件,则4种情况,对于4种不同情况的背景来源 + if (data.getType() == Notes.TYPE_NOTE) { + //单个数据并且只有一个子文件夹 + if (data.isSingle() || data.isOneFollowingFolder()) { + setBackgroundResource(NoteItemBgResources.getNoteBgSingleRes(id)); + } else if (data.isLast()) {//是最后一个数据 + setBackgroundResource(NoteItemBgResources.getNoteBgLastRes(id)); + } else if (data.isFirst() || data.isMultiFollowingFolder()) {//是一个数据并有多个子文件夹 + setBackgroundResource(NoteItemBgResources.getNoteBgFirstRes(id)); + } else { + setBackgroundResource(NoteItemBgResources.getNoteBgNormalRes(id)); + } + } else { + //若不是note直接调用文件夹的背景来源 + setBackgroundResource(NoteItemBgResources.getFolderBgRes()); + } + } + public NoteItemData getItemData() { + return mItemData; + } +} \ No newline at end of file diff --git a/doc/210340006杜煜晗/ui包/NotesPreferenceActivity.txt b/doc/210340006杜煜晗/ui包/NotesPreferenceActivity.txt new file mode 100644 index 0000000..4ae4976 --- /dev/null +++ b/doc/210340006杜煜晗/ui包/NotesPreferenceActivity.txt @@ -0,0 +1,514 @@ +package net.micode.notes.ui; + +import android.accounts.Account; +import android.accounts.AccountManager; +import android.app.ActionBar; +import android.app.AlertDialog; +import android.content.BroadcastReceiver; +import android.content.ContentValues; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.Preference; +import android.preference.Preference.OnPreferenceClickListener; +import android.preference.PreferenceActivity; +import android.preference.PreferenceCategory; +import android.text.TextUtils; +import android.text.format.DateFormat; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; +import android.widget.Toast; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.remote.GTaskSyncService; + +/* + *该类功能:NotesPreferenceActivity,在小米便签中主要实现的是对背景颜色和字体大小的数据储存。 + * 继承了PreferenceActivity主要功能为对系统信息和配置进行自动保存的Activity + */ +public class NotesPreferenceActivity extends PreferenceActivity { + public static final String PREFERENCE_NAME = "notes_preferences"; + //优先名 + public static final String PREFERENCE_SYNC_ACCOUNT_NAME = "pref_key_account_name"; + //同步账号 + public static final String PREFERENCE_LAST_SYNC_TIME = "pref_last_sync_time"; + //同步时间 + public static final String PREFERENCE_SET_BG_COLOR_KEY = "pref_key_bg_random_appear"; + + private static final String PREFERENCE_SYNC_ACCOUNT_KEY = "pref_sync_account_key"; + //同步密码 + private static final String AUTHORITIES_FILTER_KEY = "authorities"; + //本地密码 + private PreferenceCategory mAccountCategory; + //账户分组 + private GTaskReceiver mReceiver; + //同步任务接收器 + private Account[] mOriAccounts; + //账户 + private boolean mHasAddedAccount; + //账户的hash标记 + + @Override + /* + *函数功能:创建一个activity,在函数里要完成所有的正常静态设置 + *参数:Bundle icicle:存放了 activity 当前的状态 + *函数实现:如下注释 + */ + protected void onCreate(Bundle icicle) { + //先执行父类的创建函数 + super.onCreate(icicle); + + /* using the app icon for navigation */ + getActionBar().setDisplayHomeAsUpEnabled(true); + //给左上角图标的左边加上一个返回的图标 + + addPreferencesFromResource(R.xml.preferences); + //添加xml来源并显示 xml + mAccountCategory = (PreferenceCategory) findPreference(PREFERENCE_SYNC_ACCOUNT_KEY); + //根据同步账户关键码来初始化分组 + mReceiver = new GTaskReceiver(); + IntentFilter filter = new IntentFilter(); + filter.addAction(GTaskSyncService.GTASK_SERVICE_BROADCAST_NAME); + registerReceiver(mReceiver, filter); + //初始化同步组件 + + mOriAccounts = null; + View header = LayoutInflater.from(this).inflate(R.layout.settings_header, null); + //获取listvivew,ListView的作用:用于列出所有选择 + getListView().addHeaderView(header, null, true); + //在listview组件上方添加其他组件 + } + + @Override + /* + * 函数功能:activity交互功能的实现,用于接受用户的输入 + * 函数实现:如下注释 + */ + protected void onResume() { + //先执行父类 的交互实现 + super.onResume(); + + // need to set sync account automatically if user has added a new + // account + if (mHasAddedAccount) { + //若用户新加了账户则自动设置同步账户 + Account[] accounts = getGoogleAccounts(); + //获取google同步账户 + if (mOriAccounts != null && accounts.length > mOriAccounts.length) { + //若原账户不为空且当前账户有增加 + for (Account accountNew : accounts) { + boolean found = false; + for (Account accountOld : mOriAccounts) { + if (TextUtils.equals(accountOld.name, accountNew.name)) { + //更新账户 + found = true; + break; + } + } + if (!found) { + setSyncAccount(accountNew.name); + //若是没有找到旧的账户,那么同步账号中就只添加新账户 + break; + } + } + } + } + + refreshUI(); + //刷新标签界面 + } + + @Override + /* + * 函数功能:销毁一个activity + * 函数实现:如下注释 + */ + protected void onDestroy() { + if (mReceiver != null) { + unregisterReceiver(mReceiver); + //注销接收器 + } + super.onDestroy(); + //执行父类的销毁动作 + } + + /* + * 函数功能:重新设置账户信息 + * 函数实现:如下注释 + */ + private void loadAccountPreference() { + mAccountCategory.removeAll(); + //销毁所有的分组 + Preference accountPref = new Preference(this); + //建立首选项 + final String defaultAccount = getSyncAccountName(this); + accountPref.setTitle(getString(R.string.preferences_account_title)); + accountPref.setSummary(getString(R.string.preferences_account_summary)); + //设置首选项的大标题和小标题 + accountPref.setOnPreferenceClickListener(new OnPreferenceClickListener() { + public boolean onPreferenceClick(Preference preference) { + //建立监听器 + if (!GTaskSyncService.isSyncing()) { + if (TextUtils.isEmpty(defaultAccount)) { + // the first time to set account + //若是第一次建立账户显示选择账户提示对话框 + showSelectAccountAlertDialog(); + } else { + // if the account has already been set, we need to promp + // user about the risk + //若是已经建立则显示修改对话框并进行修改操作 + showChangeAccountConfirmAlertDialog(); + } + } else { + //若在没有同步的情况下,则在toast中显示不能修改 + Toast.makeText(NotesPreferenceActivity.this, + R.string.preferences_toast_cannot_change_account, Toast.LENGTH_SHORT) + .show(); + } + return true; + } + }); + + //根据新建首选项编辑新的账户分组 + mAccountCategory.addPreference(accountPref); + } + + /* + *函数功能:设置按键的状态和最后同步的时间 + *函数实现:如下注释 + */ + private void loadSyncButton() { + Button syncButton = (Button) findViewById(R.id.preference_sync_button); + TextView lastSyncTimeView = (TextView) findViewById(R.id.prefenerece_sync_status_textview); + //获取同步按钮控件和最终同步时间的的窗口 + // set button state + //设置按钮的状态 + if (GTaskSyncService.isSyncing()) { + //若是在同步状态下 + syncButton.setText(getString(R.string.preferences_button_sync_cancel)); + syncButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + GTaskSyncService.cancelSync(NotesPreferenceActivity.this); + } + }); + //设置按钮显示的文本为“取消同步”以及监听器 + } else { + syncButton.setText(getString(R.string.preferences_button_sync_immediately)); + syncButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + GTaskSyncService.startSync(NotesPreferenceActivity.this); + } + }); + //若是不同步则设置按钮显示的文本为“立即同步”以及对应监听器 + } + syncButton.setEnabled(!TextUtils.isEmpty(getSyncAccountName(this))); + //设置按键可用还是不可用 + + // set last sync time + // 设置最终同步时间 + if (GTaskSyncService.isSyncing()) { + //若是在同步的情况下 + lastSyncTimeView.setText(GTaskSyncService.getProgressString()); + lastSyncTimeView.setVisibility(View.VISIBLE); + // 根据当前同步服务器设置时间显示框的文本以及可见性 + } else { + //若是非同步情况 + long lastSyncTime = getLastSyncTime(this); + if (lastSyncTime != 0) { + lastSyncTimeView.setText(getString(R.string.preferences_last_sync_time, + DateFormat.format(getString(R.string.preferences_last_sync_time_format), + lastSyncTime))); + lastSyncTimeView.setVisibility(View.VISIBLE); + //则根据最后同步时间的信息来编辑时间显示框的文本内容和可见性 + } else { + //若时间为空直接设置为不可见状态 + lastSyncTimeView.setVisibility(View.GONE); + } + } + } + /* + *函数功能:刷新标签界面 + *函数实现:调用上文设置账号和设置按键两个函数来实现 + */ + private void refreshUI() { + loadAccountPreference(); + loadSyncButton(); + } + + /* + * 函数功能:显示账户选择的对话框并进行账户的设置 + * 函数实现:如下注释 + */ + private void showSelectAccountAlertDialog() { + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); + //创建一个新的对话框 + + View titleView = LayoutInflater.from(this).inflate(R.layout.account_dialog_title, null); + TextView titleTextView = (TextView) titleView.findViewById(R.id.account_dialog_title); + titleTextView.setText(getString(R.string.preferences_dialog_select_account_title)); + TextView subtitleTextView = (TextView) titleView.findViewById(R.id.account_dialog_subtitle); + subtitleTextView.setText(getString(R.string.preferences_dialog_select_account_tips)); + //设置标题以及子标题的内容 + dialogBuilder.setCustomTitle(titleView); + dialogBuilder.setPositiveButton(null, null); + //设置对话框的自定义标题,建立一个YES的按钮 + Account[] accounts = getGoogleAccounts(); + String defAccount = getSyncAccountName(this); + //获取同步账户信息 + mOriAccounts = accounts; + mHasAddedAccount = false; + + if (accounts.length > 0) { + //若账户不为空 + CharSequence[] items = new CharSequence[accounts.length]; + final CharSequence[] itemMapping = items; + int checkedItem = -1; + int index = 0; + for (Account account : accounts) { + if (TextUtils.equals(account.name, defAccount)) { + checkedItem = index; + //在账户列表中查询到所需账户 + } + items[index++] = account.name; + } + dialogBuilder.setSingleChoiceItems(items, checkedItem, + //在对话框建立一个单选的复选框 + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + setSyncAccount(itemMapping[which].toString()); + dialog.dismiss(); + //取消对话框 + refreshUI(); + } + //设置点击后执行的事件,包括检录新同步账户和刷新标签界面 + }); + //建立对话框网络版的监听器 + } + + View addAccountView = LayoutInflater.from(this).inflate(R.layout.add_account_text, null); + dialogBuilder.setView(addAccountView); + //给新加账户对话框设置自定义样式 + + final AlertDialog dialog = dialogBuilder.show(); + //显示对话框 + addAccountView.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + mHasAddedAccount = true; + //将新加账户的hash置true + Intent intent = new Intent("android.settings.ADD_ACCOUNT_SETTINGS"); + //建立网络建立组件 + intent.putExtra(AUTHORITIES_FILTER_KEY, new String[] { + "gmail-ls" + }); + startActivityForResult(intent, -1); + //跳回上一个选项 + dialog.dismiss(); + } + }); + //建立新加账户对话框的监听器 + } + + /* + * 函数功能:显示账户选择对话框和相关账户操作 + * 函数实现:如下注释 + */ + private void showChangeAccountConfirmAlertDialog() { + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); + //创建一个新的对话框 + View titleView = LayoutInflater.from(this).inflate(R.layout.account_dialog_title, null); + TextView titleTextView = (TextView) titleView.findViewById(R.id.account_dialog_title); + titleTextView.setText(getString(R.string.preferences_dialog_change_account_title, + getSyncAccountName(this))); + TextView subtitleTextView = (TextView) titleView.findViewById(R.id.account_dialog_subtitle); + subtitleTextView.setText(getString(R.string.preferences_dialog_change_account_warn_msg)); + //根据同步修改的账户信息设置标题以及子标题的内容 + dialogBuilder.setCustomTitle(titleView); + //设置对话框的自定义标题 + CharSequence[] menuItemArray = new CharSequence[] { + getString(R.string.preferences_menu_change_account), + getString(R.string.preferences_menu_remove_account), + getString(R.string.preferences_menu_cancel) + }; + //定义一些标记字符串 + dialogBuilder.setItems(menuItemArray, new DialogInterface.OnClickListener() { + //设置对话框要显示的一个list,用于显示几个命令时,即change,remove,cancel + public void onClick(DialogInterface dialog, int which) { + //按键功能,由which来决定 + if (which == 0) { + //进入账户选择对话框 + showSelectAccountAlertDialog(); + } else if (which == 1) { + //删除账户并且跟新便签界面 + removeSyncAccount(); + refreshUI(); + } + } + }); + dialogBuilder.show(); + //显示对话框 + } + + /* + *函数功能:获取谷歌账户 + *函数实现:通过账户管理器直接获取 + */ + private Account[] getGoogleAccounts() { + AccountManager accountManager = AccountManager.get(this); + return accountManager.getAccountsByType("com.google"); + } + + /* + * 函数功能:设置同步账户 + * 函数实现:如下注释: + */ + private void setSyncAccount(String account) { + if (!getSyncAccountName(this).equals(account)) { + //假如该账号不在同步账号列表中 + SharedPreferences settings = getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = settings.edit(); + //编辑共享的首选项 + if (account != null) { + editor.putString(PREFERENCE_SYNC_ACCOUNT_NAME, account); + } else { + editor.putString(PREFERENCE_SYNC_ACCOUNT_NAME, ""); + } + //将该账号加入到首选项中 + + editor.commit(); + //提交修改的数据 + + + setLastSyncTime(this, 0); + //将最后同步时间清零 + + // clean up local gtask related info + new Thread(new Runnable() { + public void run() { + ContentValues values = new ContentValues(); + values.put(NoteColumns.GTASK_ID, ""); + values.put(NoteColumns.SYNC_ID, 0); + getContentResolver().update(Notes.CONTENT_NOTE_URI, values, null, null); + } + }).start(); + //重置当地同步任务的信息 + + Toast.makeText(NotesPreferenceActivity.this, + getString(R.string.preferences_toast_success_set_accout, account), + Toast.LENGTH_SHORT).show(); + //将toast的文本信息置为“设置账户成功”并显示出来 + } + } + /* + * 函数功能:删除同步账户 + * 函数实现:如下注释: + */ + private void removeSyncAccount() { + SharedPreferences settings = getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = settings.edit(); + //设置共享首选项 + + if (settings.contains(PREFERENCE_SYNC_ACCOUNT_NAME)) { + editor.remove(PREFERENCE_SYNC_ACCOUNT_NAME); + //假如当前首选项中有账户就删除 + } + if (settings.contains(PREFERENCE_LAST_SYNC_TIME)) { + editor.remove(PREFERENCE_LAST_SYNC_TIME); + //删除当前首选项中有账户时间 + } + editor.commit(); + //提交更新后的数据 + + // clean up local gtask related info + new Thread(new Runnable() { + public void run() { + ContentValues values = new ContentValues(); + values.put(NoteColumns.GTASK_ID, ""); + values.put(NoteColumns.SYNC_ID, 0); + getContentResolver().update(Notes.CONTENT_NOTE_URI, values, null, null); + } + }).start(); + //重置当地同步任务的信息 + } + + /* + * 函数功能:获取同步账户名称 + * 函数实现:通过共享的首选项里的信息直接获取 + */ + public static String getSyncAccountName(Context context) { + SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, + Context.MODE_PRIVATE); + return settings.getString(PREFERENCE_SYNC_ACCOUNT_NAME, ""); + } + + /* + * 函数功能:设置最终同步的时间 + * 函数实现:如下注释 + */ + public static void setLastSyncTime(Context context, long time) { + SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, + Context.MODE_PRIVATE); + SharedPreferences.Editor editor = settings.edit(); + // 从共享首选项中找到相关账户并获取其编辑器 + editor.putLong(PREFERENCE_LAST_SYNC_TIME, time); + editor.commit(); + //编辑最终同步时间并提交更新 + } + /* + * 函数功能:获取最终同步时间 + * 函数实现:通过共享的首选项里的信息直接获取 + */ + public static long getLastSyncTime(Context context) { + SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, + Context.MODE_PRIVATE); + return settings.getLong(PREFERENCE_LAST_SYNC_TIME, 0); + } + + /* + * 函数功能:接受同步信息 + * 函数实现:继承BroadcastReceiver + */ + private class GTaskReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + refreshUI(); + if (intent.getBooleanExtra(GTaskSyncService.GTASK_SERVICE_BROADCAST_IS_SYNCING, false)) { + //获取随广播而来的Intent中的同步服务的数据 + TextView syncStatus = (TextView) findViewById(R.id.prefenerece_sync_status_textview); + syncStatus.setText(intent + .getStringExtra(GTaskSyncService.GTASK_SERVICE_BROADCAST_PROGRESS_MSG)); + //通过获取的数据在设置系统的状态 + } + + } + } + + /* + * 函数功能:处理菜单的选项 + * 函数实现:如下注释 + * 参数:MenuItem菜单选项 + */ + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + //根据选项的id选择,这里只有一个主页 + case android.R.id.home: + Intent intent = new Intent(this, NotesListActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(intent); + return true; + //在主页情况下在创建连接组件intent,发出清空的信号并开始一个相应的activity + default: + return false; + } + } +} + \ No newline at end of file diff --git a/doc/陈禹昕组泛读报告.docx b/doc/陈禹昕组泛读报告.docx new file mode 100644 index 0000000000000000000000000000000000000000..25635c26ea9efcbcd674e32897e18c6809f7f9cd GIT binary patch literal 396804 zcmeEtgO4v!u;$pdJ$G!|wr%^4ZQHi3-{_8Q+cS4;+k4-8o6T;r|G|5Gl1@5(lFq5r zS5;l#SBf&AU}!)PKu|zHK*T`p#^Vfwz(7E+{~l3+pg?p)9PC}p>|G30J%5`y>(P7I z*%B3jflw9zf&AP5Ki7X_3v{W=IBYV)^&p=5GrHg#m-3+vB9({R^VET_0C!HH8k;n{ev6LgCTsJk>$-btRT-0j6_*OaJV2J`MNauFT0&1u#*#~( z!EY_S5GCFTeSZK|TYzks2iqB9p>8pf?`_}XejN)hVloLG5jBu?s|0V7h}?SnnF*>OGFLg*vtqUg*&@{hzXsN=Qagae#aU* z6eFH}TJrE&9S29?yyFm@?(G-zHGloa)e$Ly$?GBJd#Z>G(E&YsMBv_W^b{oPLxXUe zD#jov{ASCH{uz^qW!))$;1uKVI#)vdyCh2RJO#NFh$d!d7{z^AAt6UZ$8nlBs!)-3 z%qBHq3yDlO`5I?)^CBreJ0OHwp+RF}eI_Vdqee||uL z6#pOWXR7&ufB$>4_Yc~z|FCc1WM=EkK>r{2|H1r!W1#C5_av$;k}#Wt z5I(E^K4XU8gC@ zY$SEynwyaJL4f{SCboT;BZe&c&bUo(i_=G=G1BMXtp0n4r6u&Kb#$rpbm%PhQd(+S znKvKDAH11w=EuFC7k8<)#?y|`nLgKl@pyrbQRL}U6)c=&AWy!pKtI^b=#^;6ozG0! z^PLf9a(_oT|GdBdd=mZudJ<;J)irW-se}My=$I?8mBG%FrOHM|emxo5Zt6+Hpfs5& z*$l^+GLXt|sc)bA#=nlH>QA;GyMTxccVX=LkIXO5) z!aVp}a$IC)?zVaV=CL53EPIx6kru|sNWz1!<)Cjkt1s}lxHwro=Ype>NHN6qvPrf`~6VAoL??x@OSou z@QEVF)}fxfUgaeBpwzZe)qCYi%0(VbS-`k^kF+-d40YBE!Jo2TY68@K(B?xbmL zGSG@Tpygu)wqdkvWu_%l7rqnwS=qOQCGkTx~MkCiFOY9i8@a9x@CTb&ROH zqns8@l?L*wARh9bx=iNmsM}0qah}(gT}zstBKk>O#M$LpU8pf{J2Ew(3sxqWt%_s& z)7prmZOX8{yZb_am1=%nMBncKjyq=GFx1nZON&U~oxJ7tS(*OkSG>7Yq@;>W!b*}M zPJw^q{5<0GGS|#PWgY60!F0Dg*2cWgJJ=U(f{jOEf=jXkDkx?ny&*CxZ&4-Kt~9F} z5;0n$unHy=t}G!JCuBezII87S$soO43M*KmngVO?@S%0Q>2uwz{|Chn>7tg6hw6Kh#QbGX-hW7JMZ0+0yEMeJLXbTze2pTZ<=usuT z|5VFEyK>^zU$SWO+6*azoXz$(owxP)&${BzdL`5RVS!aAfSEm? z#O+C9&uP!eaay|cj4R0^YDo`z$0e;_0FsPJ`>A7<(Hz#FEZ#%|y6#+-9NJ3a92v5v z_0ML^kB{-q6tJSCA~Rz1*?NzNr$V3>;jy1GupiF6kO=E*qG0rVtIhbKpB zo_mo{6s<>GNV2d&!gs}K&-0fRa{GJMaBucu$J>(`MJD}9^Fjvf$GYN7@w#mPjA_#& z{G<1P-f#6dCkn8m+OVm;w!boKs@p-Pa7nQAOYd=4 z=}NPA*Tkh|g?vO^!=Uw4@GmtoKR!p7FZ=}t9?o=Kx}!|SIED_I$7D3d!{t97+OR%pdFwUxI-dP2H)gKDD(ajkK z^;R|!MNyf5U*b6ej0kll>6Mbr+t8Ft1uV4D(0uJZUrWO^f zrXCTus(&vTRcM9FL={}EK_QV3qKM9oi8s_-L=hNb)2)pK3~LJ@-u z7L%@(a}NvPKJE!>yGM~2ZZZa;mHJ{!;_M-avbN9!r&;?JKE6LkOB~hicJ1D%-53;L zW&kS=v!k;SeHcYYV;uPRe);1}ERM`2z_9K^c^7m`1_P)Ddd#J}^kH2u8AYi;rn~cQ*W*)!rWSUf#<2 zEOkhHmF1SE39=qT5Fu=R_5B=ce-(;nUX_023%nEWxgR>cd))JJG>JY0G@o=O@GHpx z1^f!>SknxqW|bnaffeIER^?Xut(m^BFbe$kQjW5h8mY>EQ$}S}RFw?$+IxAUOQP^f zl!((!t}s^8boz%)-tBiCYdR&F%p~NA`c9uigw{Re0Eg0}Ii*}#Zh#nf|LO5M zXFmx8^hf3^WBxe048`f(s`Lov@dn5hO|5yd*fZbWr}y<=U2~>Ha<2lB{dQ4e=dE$& z7Dj|j!>Gz#EnPjSE?|@fF=nD4?_g|mzV^Szi;)~)PCP1-l=$QsSg)|_lO5Yb*p}5G zi6ku^n${2I?GM>nc~SlfCSp3gyLF04V9ps1XuQj`^ITRQ*VMUOGlV8yWLpBc#9_0t zk!7hBW+nISc#ZPb+I|8drWpnWCL)n+S&(<+XK?Lo<6hbHxmShp_p2+@0Q+L0k10VS zq=y5~AC);v-$||VeXW2b51@$91p$Vp4SGRjd?Ep>v-?MSbGJdwob&g3%ZTUTp2vK2N{QK$PS|&owHD03)s#N{LK()3>FCH* zclk79;aDw&(e{y(Dm42Vusv~we4A#B$0=fpr1J})Ax{eWZh5Atzymit6eXDxc(Srz zZi5`OC$;PTWcTGk%b>NK+Ac4s+d#X7QC~EpI8(%-(Cd3+U{lJ&K95DCn#M2JF7m7z zu-%Squ(p`5Mw+bJi9aQ!|GE(F3|cU5#S_TN0f+?rF5ky(ts&;- z<4qiPu;T<9P|`WT7B00MP|Uu+;4#Rr{(h~wUw(4*E>`bZRKOKR-HqRA2@Sq#R}Mz^ zj9h}lk7X=<6wl!HYWiA7O#S)3Xl}Xp-5q&hLByr^fzJ%XuA<&h zw%kXj)(pz(-fX5w3#)|jCK4P3Q&Vpr8(9OYXn2`8e1;E%!U;tLHojKeQoGP7RI2JVI|JxhjCj{QxQGf6(tfSENE~imQR(*SMQBT zIlGVEdARAGtyAl1C;S)=)0PV`5G|u6)+)|3C)>krgpFDG9%x;a*ppCQs!-5(OT^g*AxR9PqqMm3)$-83_MPI968rdxo znYHz+t$#<~Deo_CadNBB76@3G@Nt8eP|Si4F9(M^dAdIyM&=mpPP@IKn02Ehqbm|1 zW$7VF4rOHx+#eaGcvg9rzn~f%Y4ZXPpkCq(zf4mPQYDBF<2BdkAdVX94(D} zmcY@;YSeWhJaWWkRf@nwfsG!G#(}qDhgZ)RaHMCi%e|xt=&lW8hAWoS8znEJw%U#K6jAC3EKNSQZuGa4E!>(hB2wK(m?pEXNZ z?48|hAl>0oiL95@=X9cj_<2@)$rKSl3xxe@w9cm^ejBPfu<4#PLi0Wi<2FX=asw38 zot^|1o3??jv!VI+%nF~~{%NJbLW4j3PUsgV(G<(R2Z@;YD3H|bx)2)9ixB1A{pi@M zdl)8S%aHb7Iy~h_(e0gh+I}6%sN*#Se=6yhd$TyO`Rl92d)~0K3aoAw!S|T@rXB24FEEhJ5Jy_@=tMY$>4q z=@+);ykS+&PrDmt~yHVQqE?;~HvW zj|Dj}^p^C-;yV42-hqnW1)pCvw$SxDg>=Cz$ru_N^e$Fce%h^_h280FYta_k&7x&B z2r%a2>q3LEQ6XU=sugo}nl)pERQLU<-!9|4QnMYRL6LC6xF&iCO6egfPlb}lAKvO@ z0YQ;;SQ|tRQ&FFW>xHZ~amtfrW@DBRhrhWr3|s+T0rlbh$)q@RQE0N01ssXyk=1y{;U)!J=!(68Yt6uszufT*FKQ7*>S<+fWk|;xsuO!On?H{k1H~KI=8BQ3v=$V(fe%OL!BL zx-Z3xulN&8DTbadPpgkTlbc~ze}co6F!y7PoAI{PWC2eN2B%8Vpi3YUSR+ZDGps~C zupnYfTbe?wb#E~@HT6XKHooXYJ|gt#W;keZW^q=6N*5=45n;Cus<(O5`F}q=7|3A15^b8t5yK8)+<-3!&)P!`$@8%CDece;hl8(68b zUVr~gEFJJF(?$^Ca>Y3MX;6a%66xW_d`%(E^#0teGrbr$(qlsnCX6Ih8E%?0c`z+0 z;4ZBOPfXw}e`Cfu0)L143*gSwHD{UWarG0*8$XNYLu*VToY_uxPZ? z)ySDJp?(K4xqpx&6HB!TyU|twnW(MvA<`d%ERKT*RbQEB!~T}?$j`YW;4dx)(n$|; z+6N=1q?^E5OAtC0n!)@Ws(1@30RbnflmQZEF{n`6_MI#Y_gy|BUtv$J-9@Hr>cdcV zQHmoo9Oz|!niB47CDSyvBytna5F>77u72@cSP)7i4?3L-D_ zjxS&B5`Uu*A-Mtl%@}1gC7TT5|LfGCl|9QSCk8QKJ3{vetOpgDk<=7;$YvsYpjgH^ z<9oxHMs9gVoC=+WfJXLQ1<0_w)M(wy?VLZ*f>s&gvTUlh&#kl1EtQ~Pl?qk?A-F__ z1{TB+(zm$@Mwv$e5=tj40m1^$c+)5g0$P%#Z0IRP6o7GA$0+2?aIt`T&pDtfSDZL> z_BAw6brEY2#dW+I;=T~F(2k;>k~arb*O|Z<^i_<(qRHv772MdnkHa2a*|vN%C#PrX z+4V_4Uh}W}dChu%C$=>rLn}sOS*C5-#Wxp95Wuv;i+bXury_za`MyJm1PTHxF>K=% z#amJxYoqdTYWV){>3FMRD1~cOyOx_xl(Wm23(_n9Fb1oCn|9A#@Y>;H7ebRRe>h)3BHAjVGq?iy@65U1k@5-64+MvL4*OoQFQlrff&SWj zW|gid6!Ef=B%~8rLVjjUo=5FRlJox#3YXXImRz;|bc@@0Se`uJo}S}gxzcE> zdSUqdI;_l1=BVDC|EShkrQY4K-*r2K^k=G7lmH29h$Igf#k(S+gxd7-Xmpe9dw-}w zvPv_93`LaY~zmTz7-}@^z=Wk>g+^cI2=F7Xjy!m#f!qR3WtQ2 zyvLlM4;xxS`QEzUKX^|x&iM8|Jn0cQoLl_yOi!w6%2zYsJ>0ALbl`ht%|H(%x>>ww z74SobzDN>NQKg#;y@B&TmS#tniF}!g2yrEz4+%4s0Gx9Yb!528fm{r96v`ltHd63) zHO8slkU5W+G7-)YZ)D*kJOq_RnaSja<_Z~aprc>y1D9=5%uW$p?H?$?N85j2Aa9Gt z+>wg+_uTn){MEBHlx59D{Jorx;_uno^_19Q^3v6w6hXk-#=lLnv$>T}Je`0+V1g#1;iAlXk5N=87Jk{g){` zmbk^&j{8=NtaXh}^Jx-LA$n9R61rj1&nQh_u_IDzbC{k-E9YsRm;mSzMh6ZA#WVC{f#LK}m z11pg*H+(UFsP5SUL-Kq#fbZ*%Qb?2$vWQre7iLEWKn}zVlv{tC4O(_qnL}j7Vk2Vs#Q%-~oT#?V8ozZkK@z zDZ%y(=9<}a{zKdrpxV^2fj=LYLbTi$RWnRVo*0v2xSx@VQJBGWDGz)}f_xr?tq(vQ zwC7p-GTGrv8>fo}^Cg!7%?c2y#ur;$a2>)JmgRmQd5}>8dXKi*d7GtHXglRTlQhE5 z=m250+kJd%qyrsfgwT<>svhk{d3meEPrZMGzPcw>VkX;;dWYN3@Rl74a?l$=a?4ha zZI`IcJRe_bTps96WnSN(Ylr;R?Wcw++yR_MeimTI$T7Y}YK|Y=6xV4nsl)KE$K`3^ zSI@t0-O$Fg>L<#=>_g-I3!=w@A6~+UreTAF|Gl532>epAM^q0WI(K!tUPu^LJXQv* zgm;K5CmTs`1t^2ZfW&D^)$hKwT#vF{515;OJ?tgek^Ca%dv;*e6$2SlF2vraMiL$* z!+xsB%&5N9sYBtd80qxx@H$G)Jfzz>P}vm7x%2z1xZm!ccuNndQ}r(j7H16zp>xr?Kx@x+Qwp5RR#pn~fXst6_V}*b&sohlfDKlWD8A2Bc6Mh|9${3Lak3~i^JnM@> zL^|J#T@tvTTT9CRXYR1+h@@ZVnsD%*(zd9~Yy_T}--(z#31$aEZ^PB+m@j8{Y>4)% z{%?(4cWs#^Y)7%vh|zCb-Vy>X%H#wTI;PW!gv4mj(L$}X=N;>2=2oY{OkqSDS$Gbt zSkTeHFbP1Ht)8Y+#?R!@iK<#ma*hp-li0>g5;?|x%W_=d$@WYgY^zsXF-9PX9!ug+ zf_lkp1ZkMg8OTdv{Oo040rdu3Z^sP(=&ovo-g57yuSb!iO`0YyO6TkPkRg1oTO%jB z_OJ7c`;l2uARo}os~>*7byM8ct=_+O`a6D~OzkW<+{G|}sP(u_kunyxKsbyeVkmB9 zG9$1+KKwZzs9EIw7k<#FWm&?%j6s4#^GLEHYWqx;^Ma}lUhy&0#A=`*F{|H?YyXI% z1-*GdoK8_WXRVnu#k*y5BK|v((WIzbMLu|79W48%M`!Il0t*lcht$Tkc2R)%7tJ;+ z4i_-5HJZfY#Mo>a082{k%%pa0uYpDZ-t}apDYtsp6VXB4{!{(SwYuX;FBsU}T5gd9 zWCGqm_hE)_$M4PQV^4-YIu}=A+yE!|alYyPSmb8h>}K8dX5GQ)3=B85fO!4b&!Gxj zoy$L#KEnUe_G6wSl_&od7i#;p*6B&;C_0^ImH*k#Ll$$|z)y9jV{{g}-sfqo^S=1y z{^Yz=;*-6{%kSiH`bxv%LhDX~dUxwVe!GtM6_#V>nIP5gmYMCe5FHs310dSHDcoE* z8>bBjB8m=)NaBe_()Si=CWa${!8(nav(pL5aJyF6sI&~C`rDs!5pBeKRfMXD5b4&F zJDC#4Nk!4bzS51`C>@cs-aMFW2MpJqeL2PLyJTB92b3pIcY!BWdunn(0{gG7=^9P1 zR`5G&G|DkicgQ=&tL}1)tgou}bIiX^^L=o6VmB(@y{`_z^so?k`xuYsZlqUBkTrqG z;5JfCeZZt{<8YtxJJ$15<$5uDN;jCmrJ(8E+Iv_`>EGqOLVe$mj}I{y8^{Ns-G1!o_f(=OaqA`|;@a`w#tqU236iMc9O`SI((COqmVnGl&K1 zHt+(mIw^%XQ-=abhe?R5RH9XJ)O>f_lRZNB(eGcbwl%kLw7AH)P_@FTaHv%Qp?};0 z-Fs~|g|h?Y9pG+0(09I=5HSkXwz>6oiXP;4GF3JaIbKV1lTTzzJ$Zm4sO z*W2${QToyo%b+oeGY)bPgh~{w&-~Vn`*wqE0+VWCgHYU0%8_pq>BrNoMs$FmZ%54g zI9SGQ{j6dd5alefG!dRm3hJ_8@&n_H1j2j~K74R-y^@YZaB^iAf{`hYVrB3?N&9`s zv<1^T>^3+aOVxr3$D_E`s#dYD4soLp3h`YZC1c)D=f~TS`eQinTP>#CAHa><+TC-u z&aoQx)y*~&3YII_X)XIOYW_qMN(fwr@v~~4d6^¨3VMOe{|O+UL|)u=ea7zKtQMC`!_(#Lz#$ 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