diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 7df8dff..0000000 --- a/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# generated files -bin/ -gen/ - -# Local configuration file (sdk path, etc) -project.properties -.settings/ -.classpath -.project diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 639900d..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 7800270..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/NOTICE b/NOTICE deleted file mode 100644 index 9a54521..0000000 --- a/NOTICE +++ /dev/null @@ -1,190 +0,0 @@ - - Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - diff --git a/Notes-master.iml b/Notes-master.iml deleted file mode 100644 index fc6ab80..0000000 --- a/Notes-master.iml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/README b/README deleted file mode 100644 index fc0d824..0000000 --- a/README +++ /dev/null @@ -1,23 +0,0 @@ -[中文] - -1. MiCode便签是小米便签的社区开源版,由MIUI团队(www.miui.com) 发起并贡献第一批代码,遵循NOTICE文件所描述的开源协议, - 今后为MiCode社区(www.micode.net) 拥有,并由社区发布和维护。 - -2. Bug反馈和跟踪,请访问Github, - https://github.com/MiCode/Notes/issues?sort=created&direction=desc&state=open - -3. 功能建议和综合讨论,请访问MiCode, - http://micode.net/forum.php?mod=forumdisplay&fid=38 - - -[English] - -1. MiCode Notes is open source edition of XM notepad, it's first initiated and sponsored by MIUI team (www.miui.com). - It's opened under license described by NOTICE file. It's owned by the MiCode community (www.micode.net). In future, - the MiCode community will release and maintain this project. - -2. Regarding issue tracking, please visit Github, - https://github.com/MiCode/Notes/issues?sort=created&direction=desc&state=open - -3. Regarding feature request and general discussion, please visit Micode forum, - http://micode.net/forum.php?mod=forumdisplay&fid=38 diff --git a/README.md b/README.md deleted file mode 100644 index 2f28cda..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# MI_Note Project - diff --git a/doc/泛读报告.docx b/doc/01_王霖康_泛读报告.docx similarity index 100% rename from doc/泛读报告.docx rename to doc/01_王霖康_泛读报告.docx diff --git a/doc/质量分析报告.docx b/doc/02_王霖康_质量分析报告.docx similarity index 100% rename from doc/质量分析报告.docx rename to doc/02_王霖康_质量分析报告.docx diff --git a/doc/小米便签维护需求与设计方案.docx b/doc/03_王霖康_维护需求与设计方案.docx similarity index 78% rename from doc/小米便签维护需求与设计方案.docx rename to doc/03_王霖康_维护需求与设计方案.docx index e9b591e..e4d2dcb 100644 Binary files a/doc/小米便签维护需求与设计方案.docx and b/doc/03_王霖康_维护需求与设计方案.docx differ diff --git a/doc/插入图片/UML类图.png b/doc/插入图片/UML类图.png deleted file mode 100644 index 00f060e..0000000 Binary files a/doc/插入图片/UML类图.png and /dev/null differ diff --git a/doc/精读报告/tool/BackupUtils.doc b/doc/精读报告/tool/BackupUtils.doc deleted file mode 100644 index 5abf325..0000000 --- a/doc/精读报告/tool/BackupUtils.doc +++ /dev/null @@ -1,345 +0,0 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package net.micode.notes.tool; - -import android.content.Context; -import android.database.Cursor; -import android.os.Environment; -import android.text.TextUtils; -import android.text.format.DateFormat; -import android.util.Log; - -import net.micode.notes.R; -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.DataColumns; -import net.micode.notes.data.Notes.DataConstants; -import net.micode.notes.data.Notes.NoteColumns; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.PrintStream; - - -public class BackupUtils { - private static final String TAG = "BackupUtils";//定义一个常量,用于日志输出的标签 - // Singleton stuff - private static BackupUtils sInstance; // 定义一个静态变量,用于保存单例对象的引用 - - public static synchronized BackupUtils getInstance(Context context) {// 定义一个静态同步方法,用于获取单例对象的实例 - if (sInstance == null) {// 如果单例对象还没有创建 - sInstance = new BackupUtils(context);// 就用传入的上下文参数创建一个新的单例对象 - } - return sInstance;// 返回单例对象的引用 - } - - /** - * Following states are signs to represents backup or restore - * status - */ - // Currently, the sdcard is not mounted - public static final int STATE_SD_CARD_UNMOUONTED = 0;// 定义一个常量,表示当前的状态是 SD 卡没有挂载 - // 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;// 定义一个私有变量,用于保存一个 TextExport 对象的引用 - - private BackupUtils(Context context) { - // 定义一个私有构造器,用于创建 BackupUtils 对象mTextExport = new TextExport(context);// 用传入的上下文参数创建一个 TextExport 对象,并赋值给 mTextExport 变量 - } - - private static boolean externalStorageAvailable() {// 定义一个私有静态方法,用于判断外部存储是否可用 - return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()); - } - - public int exportToText() { - // 定义一个公有方法,用于导出文本文件 - return mTextExport.exportToText();//调用 mTextExport 对象的 exportToText 方法,并返回其结果 - } - - public String getExportedTextFileName() {// 定义一个公有方法,用于获取导出的文本文件名 - return mTextExport.mFileName;// 返回 mTextExport 对象的 mFileName 变量的值 - } - - public String getExportedTextFileDir() {// 定义一个公有方法,用于获取导出的文本文件目录 - return mTextExport.mFileDirectory;// 返回 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;// 定义一个私有静态常量,表示笔记 ID 列在 NOTE_PROJECTION 数组中的索引 - - private static final int NOTE_COLUMN_MODIFIED_DATE = 1;// 定义一个私有静态常量,表示笔记修改日期列在 NOTE_PROJECTION 数组中的索引 - - private static final int NOTE_COLUMN_SNIPPET = 2; // 定义一个私有静态常量,表示笔记摘要列在 NOTE_PROJECTION 数组中的索引 - - 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;// 定义一个私有静态常量,表示数据内容列在 DATA_PROJECTION 数组中的索引 - - private static final int DATA_COLUMN_MIME_TYPE = 1;// 定义一个私有静态常量,表示数据 MIME 类型列在 DATA_PROJECTION 数组中的索引 - - private static final int DATA_COLUMN_CALL_DATE = 2;// 定义一个私有静态常量,表示数据 MIME 类型列在 DATA_PROJECTION 数组中的索引 - - private static final int DATA_COLUMN_PHONE_NUMBER = 4;// 定义一个私有静态常量,表示数据 3 列在 DATA_PROJECTION 数组中的索引,用于存储电话号码 - - private final String [] TEXT_FORMAT;// 定义一个私有不可变数组,用于存储文本文件的格式字符串 - private static final int FORMAT_FOLDER_NAME = 0;// 定义一个私有静态常量,表示文件夹名称格式在 TEXT_FORMAT 数组中的索引 - private static final int FORMAT_NOTE_DATE = 1;// 定义一个私有静态常量,表示笔记日期格式在 TEXT_FORMAT 数组中的索引 - private static final int FORMAT_NOTE_CONTENT = 2;// 定义一个私有静态常量,表示笔记内容格式在 TEXT_FORMAT 数组中的索引 - - private Context mContext;// 定义一个私有变量,用于保存上下文对象的引用 - private String mFileName;// 定义一个私有变量,用于保存导出的文本文件名 - private String mFileDirectory;// 定义一个私有变量,用于保存导出的文本文件目录 - - public TextExport(Context context) {// 定义一个公有构造器,用于创建 TextExport 对象 - TEXT_FORMAT = context.getResources().getStringArray(R.array.format_for_exported_note);// 用传入的上下文参数获取资源数组,并赋值给 TEXT_FORMAT 数组 - mContext = context; // 用传入的上下文参数赋值给 mContext 变量 - mFileName = "";// 初始化 mFileName 变量为空字符串 - mFileDirectory = "";// 初始化 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) {// 定义一个私有方法,用于导出指定文件夹 ID 的文本文件,需要传入文件夹 ID 和打印流对象作为参数 - // Query notes belong to this folder - Cursor notesCursor = mContext.getContentResolver().query(Notes.CONTENT_NOTE_URI,// 用 mContext 变量获取内容解析器,并查询笔记表的 URI - NOTE_PROJECTION, NoteColumns.PARENT_ID + "=?", new String[] {// 指定需要返回的列名数组为 NOTE_PROJECTION - folderId - }, null); - - if (notesCursor != null) { - if (notesCursor.moveToFirst()) { - do { - // Print note's last modified date - ps.println(String.format(getFormat(FORMAT_NOTE_DATE), DateFormat.format(// 用打印流对象打印一行字符串,格式化为笔记日期格式,内容为游标当前行的修改日期列的值,转换为指定的日期时间格式 - mContext.getString(R.string.format_datetime_mdhm), - notesCursor.getLong(NOTE_COLUMN_MODIFIED_DATE))));// 用游标获取当前行的修改日期列的值,转换为长整型 - // Query data belong to this note - String noteId = notesCursor.getString(NOTE_COLUMN_ID);// 用游标获取当前行的笔记 ID 列的值,转换为字符串,并赋值给 noteId 变量 - exportNoteToText(noteId, ps);// 调用 exportNoteToText 方法,传入笔记 ID 和打印流对象作为参数,导出该笔记的文本文件 - } while (notesCursor.moveToNext());// 循环条件为游标移动到下一行,直到没有更多行为止 - } - notesCursor.close();//关闭游标对象,释放资源 - } - } - - /** - * Export note identified by id to a print stream - */ - private void exportNoteToText(String noteId, PrintStream ps) { // 定义一个私有方法,用于导出指定笔记 ID 的文本文件,需要传入笔记 ID 和打印流对象作为参数 - Cursor dataCursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI,// 用 mContext 变量获取内容解析器,并查询数据表的 URI - DATA_PROJECTION, DataColumns.NOTE_ID + "=?", new String[] {// 指定查询条件为笔记 ID 等于传入的笔记 ID noteId }, null); // 指定排序方式为 null - noteId - }, null); - - if (dataCursor != null) { // 如果数据游标不为空 - if (dataCursor.moveToFirst()) { // 如果数据游标移动到第一行 - do { - String mimeType = dataCursor.getString(DATA_COLUMN_MIME_TYPE); // 获取数据的类型 - if (DataConstants.CALL_NOTE.equals(mimeType)) { // 如果数据是通话记录 - // 打印电话号码 - 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)); // 格式化并打印电话号码 - } - // 打印通话日期 - ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), DateFormat - .format(mContext.getString(R.string.format_datetime_mdhm), - callDate))); // 格式化并打印通话日期 - // 打印通话附件位置 - if (!TextUtils.isEmpty(location)) { // 如果通话附件位置不为空 - ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), - location)); // 格式化并打印通话附件位置 - } - } else if (DataConstants.NOTE.equals(mimeType)) { // 如果数据是便签 - String content = dataCursor.getString(DATA_COLUMN_CONTENT); // 获取便签内容 - if (!TextUtils.isEmpty(content)) { // 如果便签内容不为空 - ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), - content)); // 格式化并打印便签内容 - } - } - } while (dataCursor.moveToNext()); // 循环直到数据游标移动到最后一行 - } - dataCursor.close(); // 关闭数据游标 - } - // print a line separator between note - try { - ps.write(new byte[] { - Character.LINE_SEPARATOR, Character.LETTER_NUMBER - }); // 尝试写入一个字节数组,包含换行符和字母数字 - } catch (IOException e) { // 如果发生输入输出异常 - Log.e(TAG, e.toString()); // 打印错误日志 - } - } - - /** - * Note will be exported as text which is user readable - */ - public int exportToText() { // 定义一个导出文本的方法 - if (!externalStorageAvailable()) { // 如果外部存储不可用 - Log.d(TAG, "Media was not mounted"); // 打印调试日志 - return STATE_SD_CARD_UNMOUONTED; // 返回SD卡未挂载的状态 - } - - PrintStream ps = getExportToTextPrintStream(); // 获取导出文本的打印流 - if (ps == null) { // 如果打印流为空 - Log.e(TAG, "get print stream error"); // 打印错误日志 - return STATE_SYSTEM_ERROR; // 返回系统错误的状态 - } - // 首先导出文件夹和它们的便签 - 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 { - // 打印文件夹的名字 - 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); // 获取文件夹的ID - exportFolderToText(folderId, ps); // 调用导出文件夹到文本的方法,传入文件夹ID和打印流 - } 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)))); // 格式化并打印便签的修改日期 - // 查询属于这个便签的数据 - String noteId = noteCursor.getString(NOTE_COLUMN_ID); // 获取便签的ID - exportNoteToText(noteId, ps); // 调用导出便签到文本的方法,传入便签ID和打印流 - } 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); // 调用生成挂载在SD卡上的文件的方法,传入上下文,文件路径和文件名格式 - if (file == null) { // 如果文件为空 - Log.e(TAG, "create file to exported failed"); // 打印错误日志 - return null; // 返回空值 - } - mFileName = file.getName(); // 获取文件的名字 - mFileDirectory = mContext.getString(R.string.file_path); // 获取文件的目录 - PrintStream ps = null; // 声明一个打印流变量 - try { - FileOutputStream fos = new FileOutputStream(file); // 创建一个文件输出流,传入文件 - ps = new PrintStream(fos); // 创建一个打印流,传入文件输出流 - } catch (FileNotFoundException e) { // 如果发生文件未找到异常 - e.printStackTrace(); // 打印异常堆栈 - return null; // 返回空值 - } catch (NullPointerException e) { // 如果发生空指针异常 - e.printStackTrace(); // 打印异常堆栈 - return null; // 返回空值 - } - return ps; // 返回打印流 - } - } - - /** - * Generate the text file to store imported data - */ - private static File generateFileMountedOnSDcard(Context context, int filePathResId, int fileNameFormatResId) { // 定义一个生成挂载在SD卡上的文件的方法,传入上下文,文件路径资源ID和文件名格式资源ID - StringBuilder sb = new StringBuilder(); // 创建一个字符串构建器 - sb.append(Environment.getExternalStorageDirectory()); // 追加外部存储目录 - sb.append(context.getString(filePathResId)); // 追加文件路径字符串 - File filedir = new File(sb.toString()); // 创建一个文件目录对象,传入字符串构建器的内容 - sb.append(context.getString( - fileNameFormatResId, - DateFormat.format(context.getString(R.string.format_date_ymd), - System.currentTimeMillis()))); // 追加文件名字符串,根据日期格式化 - File file = new File(sb.toString()); // 创建一个文件对象,传入字符串构建器的内容 - - try { - if (!filedir.exists()) { // 如果文件目录不存在 - filedir.mkdir(); // 创建文件目录 - } - if (!file.exists()) { // 如果文件不存在 - file.createNewFile(); // 创建新文件 - } - return file; // 返回文件对象 - } catch (SecurityException e) { // 如果发生安全异常 - e.printStackTrace(); // 打印异常堆栈 - } catch (IOException e) { // 如果发生输入输出异常 - e.printStackTrace(); // 打印异常堆栈 - } - - return null; // 返回空值 - } -} - - diff --git a/doc/精读报告/tool/DataUtils.doc b/doc/精读报告/tool/DataUtils.doc deleted file mode 100644 index 472fd39..0000000 --- a/doc/精读报告/tool/DataUtils.doc +++ /dev/null @@ -1,306 +0,0 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package net.micode.notes.tool; - -import android.content.ContentProviderOperation; -import android.content.ContentProviderResult; -import android.content.ContentResolver; -import android.content.ContentUris; -import android.content.ContentValues; -import android.content.OperationApplicationException; -import android.database.Cursor; -import android.os.RemoteException; -import android.util.Log; - -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.CallNote; -import net.micode.notes.data.Notes.NoteColumns; -import net.micode.notes.ui.NotesListAdapter.AppWidgetAttribute; - -import java.util.ArrayList; -import java.util.HashSet; - - -public class DataUtils { // 定义一个数据工具类 - public static final String TAG = "DataUtils"; // 定义一个静态常量字符串,表示日志标签 - public static boolean batchDeleteNotes(ContentResolver resolver, HashSet ids) { // 定义一个静态方法,批量删除便签,传入内容解析器和便签ID的集合 - if (ids == null) { // 如果ID集合为空 - Log.d(TAG, "the ids is null"); // 打印调试日志 - return true; // 返回真值 - } - if (ids.size() == 0) { // 如果ID集合的大小为零 - Log.d(TAG, "no id is in the hashset"); // 打印调试日志 - return true; // 返回真值 - } - - ArrayList operationList = new ArrayList(); // 创建一个内容提供者操作的列表 - for (long id : ids) { // 遍历ID集合中的每个ID - if(id == Notes.ID_ROOT_FOLDER) { // 如果ID是根文件夹的ID - Log.e(TAG, "Don't delete system folder root"); // 打印错误日志 - continue; // 跳过本次循环 - } - ContentProviderOperation.Builder builder = ContentProviderOperation - .newDelete(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id)); // 创建一个内容提供者操作的构建器,指定删除便签的URI和ID - operationList.add(builder.build()); // 把构建器构建出来的操作添加到操作列表中 - } - try { - ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList); // 调用内容解析器的批量应用方法,传入便签的授权和操作列表,获取结果数组 - if (results == null || results.length == 0 || results[0] == null) { // 如果结果数组为空或长度为零或第一个元素为空 - Log.d(TAG, "delete notes failed, ids:" + ids.toString()); // 打印调试日志,显示失败的ID集合 - 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) { // 定义一个静态方法,移动便签到文件夹,传入内容解析器,便签ID,源文件夹ID和目标文件夹ID - ContentValues values = new ContentValues(); // 创建一个内容值对象 - values.put(NoteColumns.PARENT_ID, desFolderId); // 把目标文件夹ID作为父ID放入内容值中 - values.put(NoteColumns.ORIGIN_PARENT_ID, srcFolderId); // 把源文件夹ID作为原始父ID放入内容值中 - values.put(NoteColumns.LOCAL_MODIFIED, 1); // 把本地修改标志设为1放入内容值中 - resolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id), values, null, null); // 调用内容解析器的更新方法,传入便签的URI和ID,内容值,空的选择和选择参数 - } - - public static boolean batchMoveToFolder(ContentResolver resolver, HashSet ids, - long folderId) { // 定义一个静态方法,批量移动到文件夹,传入内容解析器,便签ID的集合和文件夹ID - if (ids == null) { // 如果ID集合为空 - Log.d(TAG, "the ids is null"); // 打印调试日志 - return true; // 返回真值 - } - - ArrayList operationList = new ArrayList(); // 创建一个内容提供者操作的列表 - for (long id : ids) { // 遍历ID集合中的每个ID - ContentProviderOperation.Builder builder = ContentProviderOperation - .newUpdate(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id)); // 创建一个内容提供者操作的构建器,指定更新便签的URI和ID - builder.withValue(NoteColumns.PARENT_ID, folderId); // 把文件夹ID作为父ID放入构建器中 - builder.withValue(NoteColumns.LOCAL_MODIFIED, 1); // 把本地修改标志设为1放入构建器中 - operationList.add(builder.build()); // 把构建器构建出来的操作添加到操作列表中 - } - - try { - ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList); // 调用内容解析器的批量应用方法,传入便签的授权和操作列表,获取结果数组 - if (results == null || results.length == 0 || results[0] == null) { // 如果结果数组为空或长度为零或第一个元素为空 - Log.d(TAG, "delete notes failed, ids:" + ids.toString()); // 打印调试日志,显示失败的ID集合 - 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); // 查询便签的URI,返回文件夹类型且不在回收站的便签的数量 - - 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) { // 定义一个静态方法,判断便签是否在数据库中可见,传入内容解析器,便签ID和类型 - Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), - null, - NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER, - new String [] {String.valueOf(type)}, - null); // 查询便签的URI和ID,返回指定类型且不在回收站的便签 - - boolean exist = false; // 声明一个布尔型变量,表示是否存在 - if (cursor != null) { // 如果游标不为空 - if (cursor.getCount() > 0) { // 如果游标的数量大于零 - exist = true; // 把存在设为真值 - } - cursor.close(); // 关闭游标 - } - return exist; // 返回是否存在 - } - - public static boolean existInNoteDatabase(ContentResolver resolver, long noteId) { - // 查询便签的URI和ID,返回便签的所有列 - 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) { - // 查询数据的URI和ID,返回数据的所有列 - 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) { - // 查询便签的URI,返回文件夹类型且不在回收站且名称等于指定值的便签 - 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) { - // 查询便签的URI,返回指定父ID的便签的小部件ID和类型 - Cursor c = resolver.query(Notes.CONTENT_NOTE_URI, - new String[] { NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE }, - NoteColumns.PARENT_ID + "=?", - new String[] { String.valueOf(folderId) }, - null); - - HashSet set = null; // 声明一个哈希集合,用于存储便签小部件的属性 - if (c != null) { // 如果游标不为空 - if (c.moveToFirst()) { // 如果游标移动到第一行 - set = new HashSet(); // 创建一个新的哈希集合 - do { - try { - AppWidgetAttribute widget = new AppWidgetAttribute(); // 创建一个新的便签小部件属性对象 - widget.widgetId = c.getInt(0); // 获取游标的第一列的值,即小部件ID - widget.widgetType = c.getInt(1); // 获取游标的第二列的值,即小部件类型 - set.add(widget); // 把便签小部件属性对象添加到哈希集合中 - } catch (IndexOutOfBoundsException e) { // 如果发生索引越界异常 - Log.e(TAG, e.toString()); // 打印错误日志,显示异常信息 - } - } while (c.moveToNext()); // 当游标移动到下一行时,重复上述操作 - } - c.close(); // 关闭游标 - } - return set; // 返回哈希集合 - } - - - public static String getCallNumberByNoteId(ContentResolver resolver, long noteId) { - // 查询数据的URI,返回指定便签ID和MIME类型的数据的电话号码 - 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) { - // 查询数据的URI,返回指定通话日期、MIME类型和电话号码的数据的便签ID - Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, - new String [] { CallNote.NOTE_ID }, - CallNote.CALL_DATE + "=? AND " + CallNote.MIME_TYPE + "=? AND PHONE_NUMBERS_EQUAL(" - + CallNote.PHONE_NUMBER + ",?)", - new String [] { String.valueOf(callDate), CallNote.CONTENT_ITEM_TYPE, phoneNumber }, - null); - - if (cursor != null) { // 如果游标不为空 - if (cursor.moveToFirst()) { // 如果游标移动到第一行 - try { - return cursor.getLong(0); // 返回游标的第一列的值,即便签ID - } catch (IndexOutOfBoundsException e) { // 如果发生索引越界异常 - Log.e(TAG, "Get call note id fails " + e.toString()); // 打印错误日志,显示异常信息 - } - } - cursor.close(); // 关闭游标 - } - return 0; // 返回0 - } - - - public static String getSnippetById(ContentResolver resolver, long noteId) { - // 查询便签的URI,返回指定ID的便签的摘要 - Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, - new String [] { NoteColumns.SNIPPET }, - NoteColumns.ID + "=?", - new String [] { String.valueOf(noteId)}, - null); - - if (cursor != null) { // 如果游标不为空 - String snippet = ""; // 声明一个字符串变量,表示摘要 - if (cursor.moveToFirst()) { // 如果游标移动到第一行 - snippet = cursor.getString(0); // 获取游标的第一列的值,即摘要 - } - cursor.close(); // 关闭游标 - return snippet; // 返回摘要 - } - throw new IllegalArgumentException("Note is not found with id: " + noteId); // 抛出非法参数异常,显示错误信息 - } - - - public static String getFormattedSnippet(String snippet) { - if (snippet != null) { // 如果摘要不为空 - snippet = snippet.trim(); // 去掉摘要两端的空格 - int index = snippet.indexOf('\n'); // 查找摘要中第一个换行符的位置 - if (index != -1) { // 如果找到了换行符 - snippet = snippet.substring(0, index); // 截取换行符之前的部分作为新的摘要 - } - } - return snippet; // 返回格式化后的摘要字符串 - } -} diff --git a/doc/精读报告/tool/ResourceParser.doc b/doc/精读报告/tool/ResourceParser.doc deleted file mode 100644 index 2708d61..0000000 --- a/doc/精读报告/tool/ResourceParser.doc +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package net.micode.notes.tool; - -import android.content.Context; -import android.preference.PreferenceManager; - -import net.micode.notes.R; -import net.micode.notes.ui.NotesPreferenceActivity; - -public class ResourceParser { - - // 定义一些常量整型,表示便签的背景颜色 - public static final int YELLOW = 0; - public static final int BLUE = 1; - public static final int WHITE = 2; - public static final int GREEN = 3; - public static final int RED = 4; - - // 定义一个常量整型,表示默认的背景颜色 - public static final int BG_DEFAULT_COLOR = YELLOW; - - // 定义一些常量整型,表示便签的文字大小 - public static final int TEXT_SMALL = 0; - public static final int TEXT_MEDIUM = 1; - public static final int TEXT_LARGE = 2; - public static final int TEXT_SUPER = 3; - - // 定义一个常量整型,表示默认的文字大小 - public static final int BG_DEFAULT_FONT_SIZE = TEXT_MEDIUM; - - // 定义一个静态内部类,用于存储便签的背景资源 - public static class NoteBgResources { - // 定义一个静态整型数组,表示编辑模式下的便签背景资源 - private final static int [] BG_EDIT_RESOURCES = new int [] { - R.drawable.edit_yellow, - R.drawable.edit_blue, - R.drawable.edit_white, - R.drawable.edit_green, - R.drawable.edit_red - }; - - // 定义一个静态整型数组,表示编辑模式下的便签标题背景资源 - private final static int [] BG_EDIT_TITLE_RESOURCES = new int [] { - R.drawable.edit_title_yellow, - R.drawable.edit_title_blue, - R.drawable.edit_title_white, - R.drawable.edit_title_green, - R.drawable.edit_title_red - }; - - // 定义一个静态方法,根据ID获取便签背景资源 - public static int getNoteBgResource(int id) { - return BG_EDIT_RESOURCES[id]; - } - - // 定义一个静态方法,根据ID获取便签标题背景资源 - public static int getNoteTitleBgResource(int id) { - return BG_EDIT_TITLE_RESOURCES[id]; - } - } - - // 定义一个静态方法,获取默认的背景ID - public static int getDefaultBgId(Context context) { - // 如果用户设置了随机背景颜色 - if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean( - NotesPreferenceActivity.PREFERENCE_SET_BG_COLOR_KEY, false)) { - // 返回一个随机的背景ID - return (int) (Math.random() * NoteBgResources.BG_EDIT_RESOURCES.length); - } else { - // 否则返回默认的背景ID - 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 - }; - - // 这是一个公共静态方法,用于根据id返回第一个笔记项的背景资源 - public static int getNoteBgFirstRes(int id) { - return BG_FIRST_RESOURCES[id]; - } - - // 这是一个公共静态方法,用于根据id返回最后一个笔记项的背景资源 - public static int getNoteBgLastRes(int id) { - return BG_LAST_RESOURCES[id]; - } - - // 这是一个公共静态方法,用于根据id返回单个笔记项的背景资源 - public static int getNoteBgSingleRes(int id) { - return BG_SINGLE_RESOURCES[id]; - } - - // 这是一个公共静态方法,用于根据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 { - // 这是一个整型数组,用于存储2x2小部件的背景资源 - 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, - }; - - // 这是一个公共静态方法,用于根据id返回2x2小部件的背景资源 - public static int getWidget2xBgResource(int id) { - return BG_2X_RESOURCES[id]; - } - - // 这是一个整型数组,用于存储4x4小部件的背景资源 - 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 - }; - - // 这是一个公共静态方法,用于根据id返回4x4小部件的背景资源 - 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; - } - } -} diff --git a/doc/精读报告/widget/NoteWidgetProvider_2x.doc b/doc/精读报告/widget/NoteWidgetProvider_2x.doc deleted file mode 100644 index 9933e13..0000000 --- a/doc/精读报告/widget/NoteWidgetProvider_2x.doc +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package net.micode.notes.widget; //声明package - -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 {//继承NoteWidgetProvider类 - - @Override - public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { - super.update(context, appWidgetManager, appWidgetIds); //调用NoteWidgetProvider的update方法 - } - - @Override - protected int getLayoutId() { //重写NoteWidgetProvider中的getLayoutId方法 - return R.layout.widget_2x; //返回 widget_2x 布局文件的ID - } - - @Override - protected int getBgResourceId(int bgId) { //重写NoteWidgetProvider中的getBgResourceId方法,接受传入的bgId参数 - return ResourceParser.WidgetBgResources.getWidget2xBgResource(bgId); //调用ResourceParser类中的getWidget2xBgResource(bgId)方法,返回该bgId对应的Widget2xBg资源ID - } - - @Override - protected int getWidgetType() { //重写NoteWidgetProvider中的getWidgetType方法 - return Notes.TYPE_WIDGET_2X; //返回Note中的TYPE_WIDGET_2X常量值 - } -} - diff --git a/doc/字符统计/UML类图.png b/model/字符统计/UML类图.png similarity index 100% rename from doc/字符统计/UML类图.png rename to model/字符统计/UML类图.png diff --git a/doc/字符统计/交互图.png b/model/字符统计/交互图.png similarity index 100% rename from doc/字符统计/交互图.png rename to model/字符统计/交互图.png diff --git a/doc/字符统计/字符界面.png b/model/字符统计/字符界面.png similarity index 100% rename from doc/字符统计/字符界面.png rename to model/字符统计/字符界面.png diff --git a/doc/字符统计/字符统计分析类图.png b/model/字符统计/字符统计分析类图.png similarity index 100% rename from doc/字符统计/字符统计分析类图.png rename to model/字符统计/字符统计分析类图.png diff --git a/doc/字符统计/活动图.jpg b/model/字符统计/活动图.jpg similarity index 100% rename from doc/字符统计/活动图.jpg rename to model/字符统计/活动图.jpg diff --git a/doc/字符统计/物理体系结构图.png b/model/字符统计/物理体系结构图.png similarity index 100% rename from doc/字符统计/物理体系结构图.png rename to model/字符统计/物理体系结构图.png diff --git a/doc/字符统计/用例描述.docx b/model/字符统计/用例描述.docx similarity index 100% rename from doc/字符统计/用例描述.docx rename to model/字符统计/用例描述.docx diff --git a/doc/字符统计/界面跳转顺序图模型.png b/model/字符统计/界面跳转顺序图模型.png similarity index 100% rename from doc/字符统计/界面跳转顺序图模型.png rename to model/字符统计/界面跳转顺序图模型.png diff --git a/doc/字符统计/逻辑体系结构图.png b/model/字符统计/逻辑体系结构图.png similarity index 100% rename from doc/字符统计/逻辑体系结构图.png rename to model/字符统计/逻辑体系结构图.png diff --git a/model/插入图片/UML类图.jpg b/model/插入图片/UML类图.jpg new file mode 100644 index 0000000..9c01662 Binary files /dev/null and b/model/插入图片/UML类图.jpg differ diff --git a/doc/插入图片/交互图.png b/model/插入图片/交互图.png similarity index 100% rename from doc/插入图片/交互图.png rename to model/插入图片/交互图.png diff --git a/doc/插入图片/插入图片.png b/model/插入图片/插入图片.png similarity index 100% rename from doc/插入图片/插入图片.png rename to model/插入图片/插入图片.png diff --git a/doc/插入图片/插入图片分析类图.png b/model/插入图片/插入图片分析类图.png similarity index 100% rename from doc/插入图片/插入图片分析类图.png rename to model/插入图片/插入图片分析类图.png diff --git a/doc/插入图片/活动图.jpg b/model/插入图片/活动图.jpg similarity index 100% rename from doc/插入图片/活动图.jpg rename to model/插入图片/活动图.jpg diff --git a/doc/插入图片/物理体系结构图.png b/model/插入图片/物理体系结构图.png similarity index 100% rename from doc/插入图片/物理体系结构图.png rename to model/插入图片/物理体系结构图.png diff --git a/doc/插入图片/用例描述 (1).docx b/model/插入图片/用例描述.docx similarity index 100% rename from doc/插入图片/用例描述 (1).docx rename to model/插入图片/用例描述.docx diff --git a/doc/插入图片/界面跳转顺序图.jpg b/model/插入图片/界面跳转顺序图.jpg similarity index 100% rename from doc/插入图片/界面跳转顺序图.jpg rename to model/插入图片/界面跳转顺序图.jpg diff --git a/doc/插入图片/逻辑体系结构图.png b/model/插入图片/逻辑体系结构图.png similarity index 100% rename from doc/插入图片/逻辑体系结构图.png rename to model/插入图片/逻辑体系结构图.png diff --git a/other/04_组长名_软件工程汇报PPT.pptx b/other/04_组长名_软件工程汇报PPT.pptx new file mode 100644 index 0000000..59aa5fb Binary files /dev/null and b/other/04_组长名_软件工程汇报PPT.pptx differ diff --git a/other/05_组长名_系统演示录屏.mp4 b/other/05_组长名_系统演示录屏.mp4 new file mode 100644 index 0000000..31ac9d1 Binary files /dev/null and b/other/05_组长名_系统演示录屏.mp4 differ diff --git a/other/06_组长名_贡献度Excel.xlsx b/other/06_组长名_贡献度Excel.xlsx new file mode 100644 index 0000000..8c5839f Binary files /dev/null and b/other/06_组长名_贡献度Excel.xlsx differ diff --git a/doc/精读报告/gtask/exception/ActionFailureException.doc b/other/07_210340120_唐志发_代码标注/exception/ActionFailureException.doc similarity index 100% rename from doc/精读报告/gtask/exception/ActionFailureException.doc rename to other/07_210340120_唐志发_代码标注/exception/ActionFailureException.doc diff --git a/doc/精读报告/gtask/exception/NetworkFailureException.doc b/other/07_210340120_唐志发_代码标注/exception/NetworkFailureException.doc similarity index 100% rename from doc/精读报告/gtask/exception/NetworkFailureException.doc rename to other/07_210340120_唐志发_代码标注/exception/NetworkFailureException.doc diff --git a/doc/精读报告/model/Note.doc b/other/07_210340120_唐志发_代码标注/model/Note.doc similarity index 100% rename from doc/精读报告/model/Note.doc rename to other/07_210340120_唐志发_代码标注/model/Note.doc diff --git a/doc/精读报告/model/WorkingNote.doc b/other/07_210340120_唐志发_代码标注/model/WorkingNote.doc similarity index 100% rename from doc/精读报告/model/WorkingNote.doc rename to other/07_210340120_唐志发_代码标注/model/WorkingNote.doc diff --git a/doc/精读报告/gtask/remote/GTaskASyncTask.doc b/other/07_210340120_唐志发_代码标注/remote/GTaskASyncTask.doc similarity index 100% rename from doc/精读报告/gtask/remote/GTaskASyncTask.doc rename to other/07_210340120_唐志发_代码标注/remote/GTaskASyncTask.doc diff --git a/doc/精读报告/gtask/remote/GTaskClient.doc b/other/07_210340120_唐志发_代码标注/remote/GTaskClient.doc similarity index 100% rename from doc/精读报告/gtask/remote/GTaskClient.doc rename to other/07_210340120_唐志发_代码标注/remote/GTaskClient.doc diff --git a/doc/精读报告/gtask/remote/GTaskManager.doc b/other/07_210340120_唐志发_代码标注/remote/GTaskManager.doc similarity index 100% rename from doc/精读报告/gtask/remote/GTaskManager.doc rename to other/07_210340120_唐志发_代码标注/remote/GTaskManager.doc diff --git a/doc/精读报告/gtask/remote/GTaskSyncService.doc b/other/07_210340120_唐志发_代码标注/remote/GTaskSyncService.doc similarity index 100% rename from doc/精读报告/gtask/remote/GTaskSyncService.doc rename to other/07_210340120_唐志发_代码标注/remote/GTaskSyncService.doc diff --git a/other/07_210340121_王霖康_代码标注/data/Contact.java b/other/07_210340121_王霖康_代码标注/data/Contact.java new file mode 100644 index 0000000..fc86dec Binary files /dev/null and b/other/07_210340121_王霖康_代码标注/data/Contact.java differ diff --git a/other/07_210340121_王霖康_代码标注/data/Notes.java b/other/07_210340121_王霖康_代码标注/data/Notes.java new file mode 100644 index 0000000..b711803 Binary files /dev/null and b/other/07_210340121_王霖康_代码标注/data/Notes.java differ diff --git a/other/07_210340121_王霖康_代码标注/data/NotesDatabaseHelper.java b/other/07_210340121_王霖康_代码标注/data/NotesDatabaseHelper.java new file mode 100644 index 0000000..c3abc6b Binary files /dev/null and b/other/07_210340121_王霖康_代码标注/data/NotesDatabaseHelper.java differ diff --git a/other/07_210340121_王霖康_代码标注/data/NotesProvider.java b/other/07_210340121_王霖康_代码标注/data/NotesProvider.java new file mode 100644 index 0000000..921721e Binary files /dev/null and b/other/07_210340121_王霖康_代码标注/data/NotesProvider.java differ diff --git a/other/07_210340121_王霖康_代码标注/gtask/data/MetaData.java b/other/07_210340121_王霖康_代码标注/gtask/data/MetaData.java new file mode 100644 index 0000000..fbe8da3 --- /dev/null +++ b/other/07_210340121_王霖康_代码标注/gtask/data/MetaData.java @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.data; + +import android.database.Cursor; +import android.util.Log; + +import net.micode.notes.tool.GTaskStringUtils; + +import org.json.JSONException; +import org.json.JSONObject; + + +public class MetaData extends Task { + /* + * 功能描述:得到类的简写名称存入字符串TAG中 + * 实现过程:调用getSimpleName ()函数 + */ + private final static String TAG = MetaData.class.getSimpleName(); + private String mRelatedGid = null; + /* + * 功能描述:设置数据,即生成元数据库 + * 实现过程:调用JSONObject库函数put (),Task类中的setNotes ()和setName ()函数 + */ + public void setMeta(String gid, JSONObject metaInfo) { + //对函数块进行注释 + try { + metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid); + /* + * 将这对键值放入metaInfo这个jsonobject对象中 + */ + } catch (JSONException e) { + Log.e(TAG, "failed to put related gid"); + /* + * 输出错误信息 + */ + } + setNotes(metaInfo.toString()); + setName(GTaskStringUtils.META_NOTE_NAME); + } + /* + * 功能描述:获取相关联的Gid + */ + public String getRelatedGid() { + return mRelatedGid; + } + /* + * 功能描述:判断当前数据是否为空,若为空则返回真即值得保存 + */ + @Override + public boolean isWorthSaving() { + return getNotes() != null; + } + /* + * 功能描述:使用远程json数据对象设置元数据内容 + * 实现过程:调用父类Task中的setContentByRemoteJSON ()函数 + */ + @Override + public void setContentByRemoteJSON(JSONObject js) { + super.setContentByRemoteJSON(js); + if (getNotes() != null) { + try { + JSONObject metaInfo = new JSONObject(getNotes().trim()); + mRelatedGid = metaInfo.getString(GTaskStringUtils.META_HEAD_GTASK_ID); + } catch (JSONException e) { + Log.w(TAG, "failed to get related gid"); + /* + * 输出警告信息 + */ + mRelatedGid = null; + } + } + } + /* + * 功能描述:使用本地json数据对象设置元数据内容,一般不会用到,若用到,则抛出异常 + */ + @Override + public void setContentByLocalJSON(JSONObject js) { + // this function should not be called + throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called"); + /* + * 传递非法参数异常 + */ + } + /* + * 功能描述:从元数据内容中获取本地json对象,一般不会用到,若用到,则抛出异常 + */ + @Override + public JSONObject getLocalJSONFromContent() { + throw new IllegalAccessError("MetaData:getLocalJSONFromContent should not be called"); + /* + * 传递非法参数异常 + */ + } + + @Override + public int getSyncAction(Cursor c) { + throw new IllegalAccessError("MetaData:getSyncAction should not be called"); + /* + * 传递非法参数异常 + */ + } + +} diff --git a/other/07_210340121_王霖康_代码标注/gtask/data/Node.java b/other/07_210340121_王霖康_代码标注/gtask/data/Node.java new file mode 100644 index 0000000..fabe296 --- /dev/null +++ b/other/07_210340121_王霖康_代码标注/gtask/data/Node.java @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.data; + +import android.database.Cursor; + +import org.json.JSONObject; +/* + * 应该是同步操作的基础数据类型,定义了相关指示同步操作的常量 +*/ +public abstract class Node { + //定义了各种用于表征同步状态的常量 + public static final int SYNC_ACTION_NONE = 0;// 本地和云端都无可更新内容(即本地和云端内容一致) + + public static final int SYNC_ACTION_ADD_REMOTE = 1;// 需要在远程云端增加内容 + + public static final int SYNC_ACTION_ADD_LOCAL = 2;// 需要在本地增加内容 + + public static final int SYNC_ACTION_DEL_REMOTE = 3;// 需要在远程云端删除内容 + + public static final int SYNC_ACTION_DEL_LOCAL = 4;// 需要在本地删除内容 + + public static final int SYNC_ACTION_UPDATE_REMOTE = 5;// 需要将本地内容更新到远程云端 + + public static final int SYNC_ACTION_UPDATE_LOCAL = 6;// 需要将远程云端内容更新到本地 + + public static final int SYNC_ACTION_UPDATE_CONFLICT = 7;// 同步出现冲突 + + public static final int SYNC_ACTION_ERROR = 8;// 同步出现错误 + + private String mGid; + + private String mName; + + private long mLastModified; + //记录最后一次修改时间 + private boolean mDeleted; + //表征是否被删除 + public Node() { + mGid = null; + mName = ""; + mLastModified = 0; + mDeleted = false; + } + + public abstract JSONObject getCreateAction(int actionId); + + public abstract JSONObject getUpdateAction(int actionId); + + public abstract void setContentByRemoteJSON(JSONObject js); + + public abstract void setContentByLocalJSON(JSONObject js); + + public abstract JSONObject getLocalJSONFromContent(); + + public abstract int getSyncAction(Cursor c); + + public void setGid(String gid) { + this.mGid = gid; + } + + public void setName(String name) { + this.mName = name; + } + + public void setLastModified(long lastModified) { + this.mLastModified = lastModified; + } + + public void setDeleted(boolean deleted) { + this.mDeleted = deleted; + } + + public String getGid() { + return this.mGid; + } + + public String getName() { + return this.mName; + } + + public long getLastModified() { + return this.mLastModified; + } + + public boolean getDeleted() { + return this.mDeleted; + } + +} diff --git a/other/07_210340121_王霖康_代码标注/gtask/data/SqlData.java b/other/07_210340121_王霖康_代码标注/gtask/data/SqlData.java new file mode 100644 index 0000000..ff9ab81 --- /dev/null +++ b/other/07_210340121_王霖康_代码标注/gtask/data/SqlData.java @@ -0,0 +1,218 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * Description:用于支持小米便签最底层的数据库相关操作,和sqlnote的关系上是子集关系,即data是note的子集(节点)。 + * SqlData其实就是也就是所谓数据中的数据 + */ +package net.micode.notes.gtask.data; + +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.net.Uri; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.DataConstants; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.data.NotesDatabaseHelper.TABLE; +import net.micode.notes.gtask.exception.ActionFailureException; + +import org.json.JSONException; +import org.json.JSONObject; + + +public class SqlData { + /* + * 功能描述:得到类的简写名称存入字符串TAG中 + * 实现过程:调用getSimpleName ()函数 + */ + private static final String TAG = SqlData.class.getSimpleName(); + + private static final int INVALID_ID = -99999; + /* + * 来自Notes类中定义的DataColumn中的一些常量 + */ + // 集合了interface DataColumns中所有SF常量 + public static final String[] PROJECTION_DATA = new String[] { + DataColumns.ID, DataColumns.MIME_TYPE, DataColumns.CONTENT, DataColumns.DATA1, + DataColumns.DATA3 + }; +/* + * 以下五个变量作为sql表中5列的编号 + */ + public static final int DATA_ID_COLUMN = 0; + + public static final int DATA_MIME_TYPE_COLUMN = 1; + + public static final int DATA_CONTENT_COLUMN = 2; + + public static final int DATA_CONTENT_DATA_1_COLUMN = 3; + + public static final int DATA_CONTENT_DATA_3_COLUMN = 4; + + private ContentResolver mContentResolver; + //判断是否直接用Content生成,是为true,否则为false + private boolean mIsCreate; + + private long mDataId; + + private String mDataMimeType; + + private String mDataContent; + + private long mDataContentData1; + + private String mDataContentData3; + + private ContentValues mDiffDataValues; + /* + * 功能描述:构造函数,用于初始化数据 + * 参数注解:mContentResolver用于获取ContentProvider提供的数据 + * 参数注解: mIsCreate表征当前数据是用哪种方式创建(两种构造函数的参数不同) + */ + public SqlData(Context context) { + mContentResolver = context.getContentResolver(); + mIsCreate = true; + mDataId = INVALID_ID; + mDataMimeType = DataConstants.NOTE; + mDataContent = ""; + mDataContentData1 = 0; + mDataContentData3 = ""; + mDiffDataValues = new ContentValues(); + } + + public SqlData(Context context, Cursor c) { + mContentResolver = context.getContentResolver(); + mIsCreate = false; + loadFromCursor(c); + mDiffDataValues = new ContentValues(); + } + /* + * 功能描述:从光标处加载数据 + * 从当前的光标处将五列的数据加载到该类的对象 + */ + private void loadFromCursor(Cursor c) { + mDataId = c.getLong(DATA_ID_COLUMN); + mDataMimeType = c.getString(DATA_MIME_TYPE_COLUMN); + mDataContent = c.getString(DATA_CONTENT_COLUMN); + mDataContentData1 = c.getLong(DATA_CONTENT_DATA_1_COLUMN); + mDataContentData3 = c.getString(DATA_CONTENT_DATA_3_COLUMN); + } + /* + * 功能描述:设置用于共享的数据,并提供异常抛出与处理机制 + */ + public void setContent(JSONObject js) throws JSONException { + //如果传入的JSONObject对象中有DataColumns.ID这一项,则设置,否则设为INVALID_ID + long dataId = js.has(DataColumns.ID) ? js.getLong(DataColumns.ID) : INVALID_ID; + if (mIsCreate || mDataId != dataId) { + mDiffDataValues.put(DataColumns.ID, dataId); + } + mDataId = dataId; + + String dataMimeType = js.has(DataColumns.MIME_TYPE) ? js.getString(DataColumns.MIME_TYPE) + : DataConstants.NOTE; + if (mIsCreate || !mDataMimeType.equals(dataMimeType)) { + mDiffDataValues.put(DataColumns.MIME_TYPE, dataMimeType); + } + mDataMimeType = dataMimeType; + + String dataContent = js.has(DataColumns.CONTENT) ? js.getString(DataColumns.CONTENT) : ""; + if (mIsCreate || !mDataContent.equals(dataContent)) { + mDiffDataValues.put(DataColumns.CONTENT, dataContent); + } + mDataContent = dataContent; + + long dataContentData1 = js.has(DataColumns.DATA1) ? js.getLong(DataColumns.DATA1) : 0; + if (mIsCreate || mDataContentData1 != dataContentData1) { + mDiffDataValues.put(DataColumns.DATA1, dataContentData1); + } + mDataContentData1 = dataContentData1; + + String dataContentData3 = js.has(DataColumns.DATA3) ? js.getString(DataColumns.DATA3) : ""; + if (mIsCreate || !mDataContentData3.equals(dataContentData3)) { + mDiffDataValues.put(DataColumns.DATA3, dataContentData3); + } + mDataContentData3 = dataContentData3; + } + /* + * 功能描述:获取共享的数据内容,并提供异常抛出与处理机制 + */ + public JSONObject getContent() throws JSONException { + if (mIsCreate) { + Log.e(TAG, "it seems that we haven't created this in database yet"); + return null; + //创建JSONObject对象。并将相关数据放入其中,并返回。 + } + JSONObject js = new JSONObject(); + js.put(DataColumns.ID, mDataId); + js.put(DataColumns.MIME_TYPE, mDataMimeType); + js.put(DataColumns.CONTENT, mDataContent); + js.put(DataColumns.DATA1, mDataContentData1); + js.put(DataColumns.DATA3, mDataContentData3); + return js; + } + /* + * 功能描述:commit函数用于把当前造作所做的修改保存到数据库 + */ + public void commit(long noteId, boolean validateVersion, long version) { + + if (mIsCreate) { + if (mDataId == INVALID_ID && mDiffDataValues.containsKey(DataColumns.ID)) { + mDiffDataValues.remove(DataColumns.ID); + } + + mDiffDataValues.put(DataColumns.NOTE_ID, noteId); + Uri uri = mContentResolver.insert(Notes.CONTENT_DATA_URI, mDiffDataValues); + try { + mDataId = Long.valueOf(uri.getPathSegments().get(1)); + } catch (NumberFormatException e) { + Log.e(TAG, "Get note id error :" + e.toString()); + throw new ActionFailureException("create note failed"); + } + } else { + if (mDiffDataValues.size() > 0) { + int result = 0; + if (!validateVersion) { + result = mContentResolver.update(ContentUris.withAppendedId( + Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, null, null); + } else { + result = mContentResolver.update(ContentUris.withAppendedId( + Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, + " ? in (SELECT " + NoteColumns.ID + " FROM " + TABLE.NOTE + + " WHERE " + NoteColumns.VERSION + "=?)", new String[] { + String.valueOf(noteId), String.valueOf(version) + }); + } + if (result == 0) { + Log.w(TAG, "there is no update. maybe user updates note when syncing"); + } + } + } + + mDiffDataValues.clear(); + mIsCreate = false; + } + /* + * 功能描述:获取当前id + */ + public long getId() { + return mDataId; + } +} diff --git a/other/07_210340121_王霖康_代码标注/gtask/data/SqlNote.java b/other/07_210340121_王霖康_代码标注/gtask/data/SqlNote.java new file mode 100644 index 0000000..6e3e842 --- /dev/null +++ b/other/07_210340121_王霖康_代码标注/gtask/data/SqlNote.java @@ -0,0 +1,566 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.data; + +import android.appwidget.AppWidgetManager; +import android.content.ContentResolver; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.net.Uri; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.exception.ActionFailureException; +import net.micode.notes.tool.GTaskStringUtils; +import net.micode.notes.tool.ResourceParser; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.ArrayList; + + +public class SqlNote { + /* + * 功能描述:得到类的简写名称存入字符串TAG中 + * 实现过程:调用getSimpleName ()函数 + */ + private static final String TAG = SqlNote.class.getSimpleName(); + + private static final int INVALID_ID = -99999; + // 集合了interface NoteColumns中所有SF常量(17个) + public static final String[] PROJECTION_NOTE = new String[] { + NoteColumns.ID, NoteColumns.ALERTED_DATE, NoteColumns.BG_COLOR_ID, + NoteColumns.CREATED_DATE, NoteColumns.HAS_ATTACHMENT, NoteColumns.MODIFIED_DATE, + NoteColumns.NOTES_COUNT, NoteColumns.PARENT_ID, NoteColumns.SNIPPET, NoteColumns.TYPE, + NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE, NoteColumns.SYNC_ID, + NoteColumns.LOCAL_MODIFIED, NoteColumns.ORIGIN_PARENT_ID, NoteColumns.GTASK_ID, + NoteColumns.VERSION + }; + + public static final int ID_COLUMN = 0; + + public static final int ALERTED_DATE_COLUMN = 1; + + public static final int BG_COLOR_ID_COLUMN = 2; + + public static final int CREATED_DATE_COLUMN = 3; + + public static final int HAS_ATTACHMENT_COLUMN = 4; + + public static final int MODIFIED_DATE_COLUMN = 5; + + public static final int NOTES_COUNT_COLUMN = 6; + + public static final int PARENT_ID_COLUMN = 7; + + public static final int SNIPPET_COLUMN = 8; + + public static final int TYPE_COLUMN = 9; + + public static final int WIDGET_ID_COLUMN = 10; + + public static final int WIDGET_TYPE_COLUMN = 11; + + public static final int SYNC_ID_COLUMN = 12; + + public static final int LOCAL_MODIFIED_COLUMN = 13; + + public static final int ORIGIN_PARENT_ID_COLUMN = 14; + + public static final int GTASK_ID_COLUMN = 15; + + public static final int VERSION_COLUMN = 16; + //一下定义了17个内部的变量,其中12个可以由content中获得,5个需要初始化为0或者new + private Context mContext; + + private ContentResolver mContentResolver; + + private boolean mIsCreate; + + private long mId; + + private long mAlertDate; + + private int mBgColorId; + + private long mCreatedDate; + + private int mHasAttachment; + + private long mModifiedDate; + + private long mParentId; + + private String mSnippet; + + private int mType; + + private int mWidgetId; + + private int mWidgetType; + + private long mOriginParent; + + private long mVersion; + + private ContentValues mDiffNoteValues; + + private ArrayList mDataList; + + + /* + * 功能描述:构造函数 + * 参数注解: mIsCreate用于标示构造方式 + */ + //构造函数只有context,对所有的变量进行初始化 + public SqlNote(Context context) { + mContext = context; + mContentResolver = context.getContentResolver(); + mIsCreate = true; + mId = INVALID_ID; + mAlertDate = 0; + mBgColorId = ResourceParser.getDefaultBgId(context); + mCreatedDate = System.currentTimeMillis();//调用系统函数获得创建时间 + mHasAttachment = 0; + mModifiedDate = System.currentTimeMillis();//最后一次修改时间初始化为创建时间 + mParentId = 0; + mSnippet = ""; + mType = Notes.TYPE_NOTE; + mWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; + mWidgetType = Notes.TYPE_WIDGET_INVALIDE; + mOriginParent = 0; + mVersion = 0; + mDiffNoteValues = new ContentValues(); + mDataList = new ArrayList(); + } + /* + * 功能描述:构造函数 + * 参数注解: mIsCreate用于标示构造方式 + */ + //构造函数有context和一个数据库的cursor,多数变量通过cursor指向的一条记录直接进行初始化 + public SqlNote(Context context, Cursor c) { + mContext = context; + mContentResolver = context.getContentResolver(); + mIsCreate = false; + loadFromCursor(c); + mDataList = new ArrayList(); + if (mType == Notes.TYPE_NOTE) + loadDataContent(); + mDiffNoteValues = new ContentValues(); + } + /* + * 功能描述:构造函数 + * 参数注解: mIsCreate用于标示构造方式 + */ + public SqlNote(Context context, long id) { + mContext = context; + mContentResolver = context.getContentResolver(); + mIsCreate = false; + loadFromCursor(id); + mDataList = new ArrayList(); + if (mType == Notes.TYPE_NOTE) + loadDataContent(); + mDiffNoteValues = new ContentValues(); + + } +/* + * 功能描述:通过id从光标处加载数据 +*/ + private void loadFromCursor(long id) { + Cursor c = null; + try { + c = mContentResolver.query(Notes.CONTENT_NOTE_URI, PROJECTION_NOTE, "(_id=?)", + new String[] { + String.valueOf(id) + }, null);//通过id获得对应的ContentResolver中的cursor + if (c != null) { + c.moveToNext(); + loadFromCursor(c);//然后加载数据进行初始化,这样函数 + + //SqlNote(Context context, long id)与SqlNote(Context context, long id)的实现方式基本相同 + } else { + Log.w(TAG, "loadFromCursor: cursor = null"); + } + } finally { + if (c != null) + c.close(); + } + } + /* + * 功能描述:通过游标从光标处加载数据 + */ + + private void loadFromCursor(Cursor c) { + //直接从一条记录中的获得以下变量的初始值 + mId = c.getLong(ID_COLUMN); + mAlertDate = c.getLong(ALERTED_DATE_COLUMN); + mBgColorId = c.getInt(BG_COLOR_ID_COLUMN); + mCreatedDate = c.getLong(CREATED_DATE_COLUMN); + mHasAttachment = c.getInt(HAS_ATTACHMENT_COLUMN); + mModifiedDate = c.getLong(MODIFIED_DATE_COLUMN); + mParentId = c.getLong(PARENT_ID_COLUMN); + mSnippet = c.getString(SNIPPET_COLUMN); + mType = c.getInt(TYPE_COLUMN); + mWidgetId = c.getInt(WIDGET_ID_COLUMN); + mWidgetType = c.getInt(WIDGET_TYPE_COLUMN); + mVersion = c.getLong(VERSION_COLUMN); + } + /* + * 功能描述:通过content机制获取共享数据并加载到数据库当前游标处 + */ + private void loadDataContent() { + Cursor c = null; + mDataList.clear(); + try { + c = mContentResolver.query(Notes.CONTENT_DATA_URI, SqlData.PROJECTION_DATA, + "(note_id=?)", new String[] { + String.valueOf(mId) + }, null); + if (c != null) { + if (c.getCount() == 0) { + Log.w(TAG, "it seems that the note has not data"); + return; + } + while (c.moveToNext()) { + SqlData data = new SqlData(mContext, c); + mDataList.add(data); + } + } else { + Log.w(TAG, "loadDataContent: cursor = null"); + } + } finally { + if (c != null) + c.close(); + } + } + /* + * 功能描述:设置通过content机制用于共享的数据信息 + + */ + public boolean setContent(JSONObject js) { + try { + JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_SYSTEM) { + Log.w(TAG, "cannot set system folder"); + } else if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_FOLDER) { + // for folder we can only update the snnipet and type + String snippet = note.has(NoteColumns.SNIPPET) ? note + .getString(NoteColumns.SNIPPET) : ""; + if (mIsCreate || !mSnippet.equals(snippet)) { + mDiffNoteValues.put(NoteColumns.SNIPPET, snippet); + } + mSnippet = snippet; + + int type = note.has(NoteColumns.TYPE) ? note.getInt(NoteColumns.TYPE) + : Notes.TYPE_NOTE; + if (mIsCreate || mType != type) { + mDiffNoteValues.put(NoteColumns.TYPE, type); + } + mType = type; + } else if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_NOTE) { + JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA); + long id = note.has(NoteColumns.ID) ? note.getLong(NoteColumns.ID) : INVALID_ID; + if (mIsCreate || mId != id) { + mDiffNoteValues.put(NoteColumns.ID, id); + } + mId = id; + + long alertDate = note.has(NoteColumns.ALERTED_DATE) ? note + .getLong(NoteColumns.ALERTED_DATE) : 0; + if (mIsCreate || mAlertDate != alertDate) { + mDiffNoteValues.put(NoteColumns.ALERTED_DATE, alertDate); + } + mAlertDate = alertDate; + + int bgColorId = note.has(NoteColumns.BG_COLOR_ID) ? note + .getInt(NoteColumns.BG_COLOR_ID) : ResourceParser.getDefaultBgId(mContext); + if (mIsCreate || mBgColorId != bgColorId) { + mDiffNoteValues.put(NoteColumns.BG_COLOR_ID, bgColorId); + } + mBgColorId = bgColorId; + + long createDate = note.has(NoteColumns.CREATED_DATE) ? note + .getLong(NoteColumns.CREATED_DATE) : System.currentTimeMillis(); + if (mIsCreate || mCreatedDate != createDate) { + mDiffNoteValues.put(NoteColumns.CREATED_DATE, createDate); + } + mCreatedDate = createDate; + + int hasAttachment = note.has(NoteColumns.HAS_ATTACHMENT) ? note + .getInt(NoteColumns.HAS_ATTACHMENT) : 0; + if (mIsCreate || mHasAttachment != hasAttachment) { + mDiffNoteValues.put(NoteColumns.HAS_ATTACHMENT, hasAttachment); + } + mHasAttachment = hasAttachment; + + long modifiedDate = note.has(NoteColumns.MODIFIED_DATE) ? note + .getLong(NoteColumns.MODIFIED_DATE) : System.currentTimeMillis(); + if (mIsCreate || mModifiedDate != modifiedDate) { + mDiffNoteValues.put(NoteColumns.MODIFIED_DATE, modifiedDate); + } + mModifiedDate = modifiedDate; + + long parentId = note.has(NoteColumns.PARENT_ID) ? note + .getLong(NoteColumns.PARENT_ID) : 0; + if (mIsCreate || mParentId != parentId) { + mDiffNoteValues.put(NoteColumns.PARENT_ID, parentId); + } + mParentId = parentId; + + String snippet = note.has(NoteColumns.SNIPPET) ? note + .getString(NoteColumns.SNIPPET) : ""; + if (mIsCreate || !mSnippet.equals(snippet)) { + mDiffNoteValues.put(NoteColumns.SNIPPET, snippet); + } + mSnippet = snippet; + + int type = note.has(NoteColumns.TYPE) ? note.getInt(NoteColumns.TYPE) + : Notes.TYPE_NOTE; + if (mIsCreate || mType != type) { + mDiffNoteValues.put(NoteColumns.TYPE, type); + } + mType = type; + + int widgetId = note.has(NoteColumns.WIDGET_ID) ? note.getInt(NoteColumns.WIDGET_ID) + : AppWidgetManager.INVALID_APPWIDGET_ID; + if (mIsCreate || mWidgetId != widgetId) { + mDiffNoteValues.put(NoteColumns.WIDGET_ID, widgetId); + } + mWidgetId = widgetId; + + int widgetType = note.has(NoteColumns.WIDGET_TYPE) ? note + .getInt(NoteColumns.WIDGET_TYPE) : Notes.TYPE_WIDGET_INVALIDE; + if (mIsCreate || mWidgetType != widgetType) { + mDiffNoteValues.put(NoteColumns.WIDGET_TYPE, widgetType); + } + mWidgetType = widgetType; + + long originParent = note.has(NoteColumns.ORIGIN_PARENT_ID) ? note + .getLong(NoteColumns.ORIGIN_PARENT_ID) : 0; + if (mIsCreate || mOriginParent != originParent) { + mDiffNoteValues.put(NoteColumns.ORIGIN_PARENT_ID, originParent); + } + mOriginParent = originParent; + + for (int i = 0; i < dataArray.length(); i++) { + JSONObject data = dataArray.getJSONObject(i); + SqlData sqlData = null; + if (data.has(DataColumns.ID)) { + long dataId = data.getLong(DataColumns.ID); + for (SqlData temp : mDataList) { + if (dataId == temp.getId()) { + sqlData = temp; + } + } + } + + if (sqlData == null) { + sqlData = new SqlData(mContext); + mDataList.add(sqlData); + } + + sqlData.setContent(data); + } + } + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + return false; + } + return true; + } + /* + * 功能描述:获取content机制提供的数据并加载到note中 + */ + public JSONObject getContent() { + try { + JSONObject js = new JSONObject(); + + if (mIsCreate) { + Log.e(TAG, "it seems that we haven't created this in database yet"); + return null; + } + + JSONObject note = new JSONObject(); + if (mType == Notes.TYPE_NOTE) { + //类型为note时 + note.put(NoteColumns.ID, mId); + note.put(NoteColumns.ALERTED_DATE, mAlertDate); + note.put(NoteColumns.BG_COLOR_ID, mBgColorId); + note.put(NoteColumns.CREATED_DATE, mCreatedDate); + note.put(NoteColumns.HAS_ATTACHMENT, mHasAttachment); + note.put(NoteColumns.MODIFIED_DATE, mModifiedDate); + note.put(NoteColumns.PARENT_ID, mParentId); + note.put(NoteColumns.SNIPPET, mSnippet); + note.put(NoteColumns.TYPE, mType); + note.put(NoteColumns.WIDGET_ID, mWidgetId); + note.put(NoteColumns.WIDGET_TYPE, mWidgetType); + note.put(NoteColumns.ORIGIN_PARENT_ID, mOriginParent); + js.put(GTaskStringUtils.META_HEAD_NOTE, note); + + JSONArray dataArray = new JSONArray(); + for (SqlData sqlData : mDataList) { + JSONObject data = sqlData.getContent(); + if (data != null) { + dataArray.put(data); + } + } + js.put(GTaskStringUtils.META_HEAD_DATA, dataArray); + } else if (mType == Notes.TYPE_FOLDER || mType == Notes.TYPE_SYSTEM) { + note.put(NoteColumns.ID, mId); + note.put(NoteColumns.TYPE, mType); + note.put(NoteColumns.SNIPPET, mSnippet); + js.put(GTaskStringUtils.META_HEAD_NOTE, note); + } + + return js; + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + } + return null; + } +/* + * 功能描述:给当前id设置父id + */ + public void setParentId(long id) { + mParentId = id; + mDiffNoteValues.put(NoteColumns.PARENT_ID, id); + } + + /* + * 功能描述:给当前id设置Gtaskid + */ + public void setGtaskId(String gid) { + mDiffNoteValues.put(NoteColumns.GTASK_ID, gid); + } + + /* + * 功能描述:给当前id设置同步id + + */ + public void setSyncId(long syncId) { + mDiffNoteValues.put(NoteColumns.SYNC_ID, syncId); + } + + /* + * 功能描述:初始化本地修改,即撤销所有当前修改 + */ + public void resetLocalModified() { + mDiffNoteValues.put(NoteColumns.LOCAL_MODIFIED, 0); + } + + /* + * 功能描述:获得当前id + */ + public long getId() { + return mId; + } + + /* + * 功能描述:获得当前id的父id + */ + public long getParentId() { + return mParentId; + } + + /* + * 功能描述:获取小片段即用于显示的部分便签内容 + */ + public String getSnippet() { + return mSnippet; + } + /* + * 功能描述:判断是否为便签类型 + */ + public boolean isNoteType() { + return mType == Notes.TYPE_NOTE; + } + + /* + * 功能描述:commit函数用于把当前造作所做的修改保存到数据库 + */ + public void commit(boolean validateVersion) { + if (mIsCreate) { + if (mId == INVALID_ID && mDiffNoteValues.containsKey(NoteColumns.ID)) { + mDiffNoteValues.remove(NoteColumns.ID); + } + + Uri uri = mContentResolver.insert(Notes.CONTENT_NOTE_URI, mDiffNoteValues); + try { + mId = Long.valueOf(uri.getPathSegments().get(1)); + } catch (NumberFormatException e) { + Log.e(TAG, "Get note id error :" + e.toString()); + throw new ActionFailureException("create note failed"); + } + if (mId == 0) { + throw new IllegalStateException("Create thread id failed"); + } + + if (mType == Notes.TYPE_NOTE) { + for (SqlData sqlData : mDataList) { + //直接使用sqldata中的实现 + sqlData.commit(mId, false, -1); + } + } + } else { + if (mId <= 0 && mId != Notes.ID_ROOT_FOLDER && mId != Notes.ID_CALL_RECORD_FOLDER) { + Log.e(TAG, "No such note"); + throw new IllegalStateException("Try to update note with invalid id"); + } + if (mDiffNoteValues.size() > 0) { + mVersion ++; + int result = 0; + if (!validateVersion) { + //构造字符串 + result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "(" + + NoteColumns.ID + "=?)", new String[] { + String.valueOf(mId) + }); + } else { + result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "(" + + NoteColumns.ID + "=?) AND (" + NoteColumns.VERSION + "<=?)", + new String[] { + String.valueOf(mId), String.valueOf(mVersion) + }); + } + if (result == 0) { + Log.w(TAG, "there is no update. maybe user updates note when syncing"); + } + } + + if (mType == Notes.TYPE_NOTE) { + for (SqlData sqlData : mDataList) { + sqlData.commit(mId, validateVersion, mVersion); + } + } + } + + // refresh local info + loadFromCursor(mId); + if (mType == Notes.TYPE_NOTE) + loadDataContent(); + + mDiffNoteValues.clear(); + mIsCreate = false; + } +} diff --git a/other/07_210340121_王霖康_代码标注/gtask/data/Task.java b/other/07_210340121_王霖康_代码标注/gtask/data/Task.java new file mode 100644 index 0000000..72068a0 --- /dev/null +++ b/other/07_210340121_王霖康_代码标注/gtask/data/Task.java @@ -0,0 +1,351 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.data; + +import android.database.Cursor; +import android.text.TextUtils; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.DataConstants; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.exception.ActionFailureException; +import net.micode.notes.tool.GTaskStringUtils; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + + +public class Task extends Node { + private static final String TAG = Task.class.getSimpleName(); + + private boolean mCompleted;//是否完成 + + private String mNotes; + + private JSONObject mMetaInfo;//将在实例中存储数据的类型 + + private Task mPriorSibling;//对应的优先兄弟Task的指针(待完善) + + private TaskList mParent;//所在的任务列表的指针 + + public Task() { + super(); + mCompleted = false; + mNotes = null; + mPriorSibling = null;//TaskList中当前Task前面的Task的指针 + mParent = null;//当前Task所在的TaskList + mMetaInfo = null; + } + + public JSONObject getCreateAction(int actionId) { + JSONObject js = new JSONObject(); + + try { + // action_type + js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, + GTaskStringUtils.GTASK_JSON_ACTION_TYPE_CREATE); + + // action_id + js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); + + // index + js.put(GTaskStringUtils.GTASK_JSON_INDEX, mParent.getChildTaskIndex(this)); + + // entity_delta + JSONObject entity = new JSONObject(); + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); + entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null"); + entity.put(GTaskStringUtils.GTASK_JSON_ENTITY_TYPE, + GTaskStringUtils.GTASK_JSON_TYPE_TASK); + if (getNotes() != null) { + entity.put(GTaskStringUtils.GTASK_JSON_NOTES, getNotes()); + } + js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); + + // parent_id + js.put(GTaskStringUtils.GTASK_JSON_PARENT_ID, mParent.getGid()); + + // dest_parent_type + js.put(GTaskStringUtils.GTASK_JSON_DEST_PARENT_TYPE, + GTaskStringUtils.GTASK_JSON_TYPE_GROUP); + + // list_id + js.put(GTaskStringUtils.GTASK_JSON_LIST_ID, mParent.getGid()); + + // prior_sibling_id + if (mPriorSibling != null) { + js.put(GTaskStringUtils.GTASK_JSON_PRIOR_SIBLING_ID, mPriorSibling.getGid()); + } + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to generate task-create jsonobject"); + } + + return js; + } + + public JSONObject getUpdateAction(int actionId) { + JSONObject js = new JSONObject(); + + try { + // action_type + js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, + GTaskStringUtils.GTASK_JSON_ACTION_TYPE_UPDATE); + + // action_id + js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); + + // id + js.put(GTaskStringUtils.GTASK_JSON_ID, getGid()); + + // entity_delta + JSONObject entity = new JSONObject(); + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); + if (getNotes() != null) { + entity.put(GTaskStringUtils.GTASK_JSON_NOTES, getNotes()); + } + entity.put(GTaskStringUtils.GTASK_JSON_DELETED, getDeleted()); + js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to generate task-update jsonobject"); + } + + return js; + } + + public void setContentByRemoteJSON(JSONObject js) { + if (js != null) { + try { + // id + if (js.has(GTaskStringUtils.GTASK_JSON_ID)) { + setGid(js.getString(GTaskStringUtils.GTASK_JSON_ID)); + } + + // last_modified + if (js.has(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)) { + setLastModified(js.getLong(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)); + } + + // name + if (js.has(GTaskStringUtils.GTASK_JSON_NAME)) { + setName(js.getString(GTaskStringUtils.GTASK_JSON_NAME)); + } + + // notes + if (js.has(GTaskStringUtils.GTASK_JSON_NOTES)) { + setNotes(js.getString(GTaskStringUtils.GTASK_JSON_NOTES)); + } + + // deleted + if (js.has(GTaskStringUtils.GTASK_JSON_DELETED)) { + setDeleted(js.getBoolean(GTaskStringUtils.GTASK_JSON_DELETED)); + } + + // completed + if (js.has(GTaskStringUtils.GTASK_JSON_COMPLETED)) { + setCompleted(js.getBoolean(GTaskStringUtils.GTASK_JSON_COMPLETED)); + } + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to get task content from jsonobject"); + } + } + } + + public void setContentByLocalJSON(JSONObject js) { + if (js == null || !js.has(GTaskStringUtils.META_HEAD_NOTE) + || !js.has(GTaskStringUtils.META_HEAD_DATA)) { + Log.w(TAG, "setContentByLocalJSON: nothing is avaiable"); + } + + try { + JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA); + + if (note.getInt(NoteColumns.TYPE) != Notes.TYPE_NOTE) { + Log.e(TAG, "invalid type"); + return; + } + + for (int i = 0; i < dataArray.length(); i++) { + JSONObject data = dataArray.getJSONObject(i); + if (TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) { + setName(data.getString(DataColumns.CONTENT)); + break; + } + } + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + } + } + + public JSONObject getLocalJSONFromContent() { + String name = getName(); + try { + if (mMetaInfo == null) { + // new task created from web + if (name == null) { + Log.w(TAG, "the note seems to be an empty one"); + return null; + } + + JSONObject js = new JSONObject(); + JSONObject note = new JSONObject(); + JSONArray dataArray = new JSONArray(); + JSONObject data = new JSONObject(); + data.put(DataColumns.CONTENT, name); + dataArray.put(data); + js.put(GTaskStringUtils.META_HEAD_DATA, dataArray); + note.put(NoteColumns.TYPE, Notes.TYPE_NOTE); + js.put(GTaskStringUtils.META_HEAD_NOTE, note); + return js; + } else { + // synced task + JSONObject note = mMetaInfo.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + JSONArray dataArray = mMetaInfo.getJSONArray(GTaskStringUtils.META_HEAD_DATA); + + for (int i = 0; i < dataArray.length(); i++) { + JSONObject data = dataArray.getJSONObject(i); + if (TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) { + data.put(DataColumns.CONTENT, getName()); + break; + } + } + + note.put(NoteColumns.TYPE, Notes.TYPE_NOTE); + return mMetaInfo; + } + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + return null; + } + } + + public void setMetaInfo(MetaData metaData) { + if (metaData != null && metaData.getNotes() != null) { + try { + mMetaInfo = new JSONObject(metaData.getNotes()); + } catch (JSONException e) { + Log.w(TAG, e.toString()); + mMetaInfo = null; + } + } + } + + public int getSyncAction(Cursor c) { + try { + JSONObject noteInfo = null; + if (mMetaInfo != null && mMetaInfo.has(GTaskStringUtils.META_HEAD_NOTE)) { + noteInfo = mMetaInfo.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + } + + if (noteInfo == null) { + Log.w(TAG, "it seems that note meta has been deleted"); + return SYNC_ACTION_UPDATE_REMOTE; + } + + if (!noteInfo.has(NoteColumns.ID)) { + Log.w(TAG, "remote note id seems to be deleted"); + return SYNC_ACTION_UPDATE_LOCAL; + } + + // validate the note id now + if (c.getLong(SqlNote.ID_COLUMN) != noteInfo.getLong(NoteColumns.ID)) { + Log.w(TAG, "note id doesn't match"); + return SYNC_ACTION_UPDATE_LOCAL; + } + + if (c.getInt(SqlNote.LOCAL_MODIFIED_COLUMN) == 0) { + // there is no local update + if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { + // no update both side + return SYNC_ACTION_NONE; + } else { + // apply remote to local + return SYNC_ACTION_UPDATE_LOCAL; + } + } else { + // validate gtask id + if (!c.getString(SqlNote.GTASK_ID_COLUMN).equals(getGid())) { + Log.e(TAG, "gtask id doesn't match"); + return SYNC_ACTION_ERROR; + } + if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { + // local modification only + return SYNC_ACTION_UPDATE_REMOTE; + } else { + return SYNC_ACTION_UPDATE_CONFLICT; + } + } + } catch (Exception e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + } + + return SYNC_ACTION_ERROR; + } + + public boolean isWorthSaving() { + return mMetaInfo != null || (getName() != null && getName().trim().length() > 0) + || (getNotes() != null && getNotes().trim().length() > 0); + } + + public void setCompleted(boolean completed) { + this.mCompleted = completed; + } + + public void setNotes(String notes) { + this.mNotes = notes; + } + + public void setPriorSibling(Task priorSibling) { + this.mPriorSibling = priorSibling; + } + + public void setParent(TaskList parent) { + this.mParent = parent; + } + + public boolean getCompleted() { + return this.mCompleted; + } + + public String getNotes() { + return this.mNotes; + } + + public Task getPriorSibling() { + return this.mPriorSibling; + } + + public TaskList getParent() { + return this.mParent; + } + +} diff --git a/other/07_210340121_王霖康_代码标注/gtask/data/TaskList.java b/other/07_210340121_王霖康_代码标注/gtask/data/TaskList.java new file mode 100644 index 0000000..37dad1c --- /dev/null +++ b/other/07_210340121_王霖康_代码标注/gtask/data/TaskList.java @@ -0,0 +1,401 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.data; + +import android.database.Cursor; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.exception.ActionFailureException; +import net.micode.notes.tool.GTaskStringUtils; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.ArrayList; + + +public class TaskList extends Node { + private static final String TAG = TaskList.class.getSimpleName();//tag标记 + + private int mIndex;//当前TaskList的指针 + + private ArrayList mChildren;//类中主要的保存数据的单元,用来实现一个以Task为元素的ArrayList + + public TaskList() { + super(); + mChildren = new ArrayList(); + mIndex = 1; + } + /* (non-Javadoc) + * @see net.micode.notes.gtask.data.Node#getCreateAction(int) + * 生成并返回一个包含了一定数据的JSONObject实体 + */ + public JSONObject getCreateAction(int actionId) { + JSONObject js = new JSONObject(); + + try { + // action_type + js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, + GTaskStringUtils.GTASK_JSON_ACTION_TYPE_CREATE); + + // action_id + js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); + + // index + js.put(GTaskStringUtils.GTASK_JSON_INDEX, mIndex); + + // entity_delta + JSONObject entity = new JSONObject(); + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); + entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null"); + entity.put(GTaskStringUtils.GTASK_JSON_ENTITY_TYPE, + GTaskStringUtils.GTASK_JSON_TYPE_GROUP); + js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to generate tasklist-create jsonobject"); + } + + return js; + } + + + /* (non-Javadoc) + * @see net.micode.notes.gtask.data.Node#getUpdateAction(int) + * 生成并返回一个包含了一定数据的JSONObject实体 + */ + public JSONObject getUpdateAction(int actionId) { + JSONObject js = new JSONObject(); + + try { + // action_type + js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, + GTaskStringUtils.GTASK_JSON_ACTION_TYPE_UPDATE); + + // action_id + js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); + + // id + js.put(GTaskStringUtils.GTASK_JSON_ID, getGid()); + + // entity_delta + JSONObject entity = new JSONObject(); + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); + entity.put(GTaskStringUtils.GTASK_JSON_DELETED, getDeleted()); + js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to generate tasklist-update jsonobject"); + } + + return js; + } + + public void setContentByRemoteJSON(JSONObject js) { + if (js != null) { + try { + // id + if (js.has(GTaskStringUtils.GTASK_JSON_ID)) { + setGid(js.getString(GTaskStringUtils.GTASK_JSON_ID)); + } + + // last_modified + if (js.has(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)) { + setLastModified(js.getLong(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)); + } + + // name + if (js.has(GTaskStringUtils.GTASK_JSON_NAME)) { + setName(js.getString(GTaskStringUtils.GTASK_JSON_NAME)); + } + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to get tasklist content from jsonobject"); + } + } + } + + public void setContentByLocalJSON(JSONObject js) { + if (js == null || !js.has(GTaskStringUtils.META_HEAD_NOTE)) { + Log.w(TAG, "setContentByLocalJSON: nothing is avaiable"); + } + + try { + JSONObject folder = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + + if (folder.getInt(NoteColumns.TYPE) == Notes.TYPE_FOLDER) { + String name = folder.getString(NoteColumns.SNIPPET); + setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + name); + } else if (folder.getInt(NoteColumns.TYPE) == Notes.TYPE_SYSTEM) { + if (folder.getLong(NoteColumns.ID) == Notes.ID_ROOT_FOLDER) + setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_DEFAULT); + else if (folder.getLong(NoteColumns.ID) == Notes.ID_CALL_RECORD_FOLDER) + setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + + GTaskStringUtils.FOLDER_CALL_NOTE); + else + Log.e(TAG, "invalid system folder"); + } else { + Log.e(TAG, "error type"); + } + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + } + } + + public JSONObject getLocalJSONFromContent() { + try { + JSONObject js = new JSONObject(); + JSONObject folder = new JSONObject(); + + String folderName = getName(); + if (getName().startsWith(GTaskStringUtils.MIUI_FOLDER_PREFFIX)) + folderName = folderName.substring(GTaskStringUtils.MIUI_FOLDER_PREFFIX.length(), + folderName.length()); + folder.put(NoteColumns.SNIPPET, folderName); + if (folderName.equals(GTaskStringUtils.FOLDER_DEFAULT) + || folderName.equals(GTaskStringUtils.FOLDER_CALL_NOTE)) + folder.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + else + folder.put(NoteColumns.TYPE, Notes.TYPE_FOLDER); + + js.put(GTaskStringUtils.META_HEAD_NOTE, folder); + + return js; + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + return null; + } + } + + public int getSyncAction(Cursor c) { + try { + if (c.getInt(SqlNote.LOCAL_MODIFIED_COLUMN) == 0) { + // there is no local update + if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { + // no update both side + return SYNC_ACTION_NONE; + } else { + // apply remote to local + return SYNC_ACTION_UPDATE_LOCAL; + } + } else { + // validate gtask id + if (!c.getString(SqlNote.GTASK_ID_COLUMN).equals(getGid())) { + Log.e(TAG, "gtask id doesn't match"); + return SYNC_ACTION_ERROR; + } + if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { + // local modification only + return SYNC_ACTION_UPDATE_REMOTE; + } else { + // for folder conflicts, just apply local modification + return SYNC_ACTION_UPDATE_REMOTE; + } + } + } catch (Exception e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + } + + return SYNC_ACTION_ERROR; + } + /* + * 功能:获得TaskList的大小,即mChildren的大小 + */ + public int getChildTaskCount() { + return mChildren.size(); + } + /** + * @param task + * @return 返回值为是否成功添加任务。 + * 功能:在当前任务表末尾添加新的任务。 + */ + public boolean addChildTask(Task task) { + boolean ret = false; + if (task != null && !mChildren.contains(task)) { + ret = mChildren.add(task); + if (ret) { + // need to set prior sibling and parent + task.setPriorSibling(mChildren.isEmpty() ? null : mChildren + .get(mChildren.size() - 1)); + task.setParent(this); + //注意:每一次ArrayList的变化都要紧跟相关Task中PriorSibling的更改 + //,接下来几个函数都有相关操作 + + } + } + return ret; + } + /** + * @param task + * @param index + * @return + * 功能:在当前任务表的指定位置添加新的任务。 + */ + public boolean addChildTask(Task task, int index) { + if (index < 0 || index > mChildren.size()) { + Log.e(TAG, "add child task: invalid index"); + return false; + } + + int pos = mChildren.indexOf(task); + if (task != null && pos == -1) { + mChildren.add(index, task); + + // update the task list + Task preTask = null; + Task afterTask = null; + if (index != 0) + preTask = mChildren.get(index - 1); + if (index != mChildren.size() - 1) + afterTask = mChildren.get(index + 1); + + task.setPriorSibling(preTask); + if (afterTask != null) + afterTask.setPriorSibling(task); + } + + return true; + } + /** + * @param task + * @return 返回删除是否成功 + * 功能:删除TaskList中的一个Task + */ + /** + * @param task + * @param index + * @return + * 功能:将当前TaskList中含有的某个Task移到index位置 + */ + public boolean removeChildTask(Task task) { + boolean ret = false; + int index = mChildren.indexOf(task); + if (index != -1) { + ret = mChildren.remove(task); + + if (ret) { + // reset prior sibling and parent + task.setPriorSibling(null); + task.setParent(null); + + // update the task list + if (index != mChildren.size()) { + mChildren.get(index).setPriorSibling( + index == 0 ? null : mChildren.get(index - 1)); + } + } + } + return ret; + } + /** + * @param gid + * @return返回寻找结果 + * 功能:按gid寻找Task + */ + public boolean moveChildTask(Task task, int index) { + + if (index < 0 || index >= mChildren.size()) { + Log.e(TAG, "move child task: invalid index"); + return false; + } + + int pos = mChildren.indexOf(task); + if (pos == -1) { + Log.e(TAG, "move child task: the task should in the list"); + return false; + } + + if (pos == index) + return true; + return (removeChildTask(task) && addChildTask(task, index)); + //利用已实现好的功能完成当下功能; + } + + + /** + * @param task + * @return + * 功能:返回指定Task的index + */ + public Task findChildTaskByGid(String gid) { + for (int i = 0; i < mChildren.size(); i++) { + Task t = mChildren.get(i); + if (t.getGid().equals(gid)) { + return t; + } + } + return null; + } + + + /** + * @param index + * @return + * 功能:返回指定index的Task + */ + public int getChildTaskIndex(Task task) { + return mChildren.indexOf(task); + } + + public Task getChildTaskByIndex(int index) { + if (index < 0 || index >= mChildren.size()) { + Log.e(TAG, "getTaskByIndex: invalid index"); + return null; + } + return mChildren.get(index); + } + + + /** + * @param gid + * @return + * 功能:返回指定gid的Task + */ + public Task getChilTaskByGid(String gid) { + for (Task task : mChildren) {//一种常见的ArrayList的遍历方法(四种,见精读笔记) + + if (task.getGid().equals(gid)) + return task; + } + return null; + } + + + + public ArrayList getChildTaskList() { + return this.mChildren; + } + + public void setIndex(int index) { + this.mIndex = index; + } + + public int getIndex() { + return this.mIndex; + } +} diff --git a/other/07_210340123_王秋林_代码标注/tool/BackupUtils.docx b/other/07_210340123_王秋林_代码标注/tool/BackupUtils.docx new file mode 100644 index 0000000..5b316fb Binary files /dev/null and b/other/07_210340123_王秋林_代码标注/tool/BackupUtils.docx differ diff --git a/other/07_210340123_王秋林_代码标注/tool/DataUtils.docx b/other/07_210340123_王秋林_代码标注/tool/DataUtils.docx new file mode 100644 index 0000000..092cc30 Binary files /dev/null and b/other/07_210340123_王秋林_代码标注/tool/DataUtils.docx differ diff --git a/other/07_210340123_王秋林_代码标注/tool/GTaskStringUtils.docx b/other/07_210340123_王秋林_代码标注/tool/GTaskStringUtils.docx new file mode 100644 index 0000000..14471ee Binary files /dev/null and b/other/07_210340123_王秋林_代码标注/tool/GTaskStringUtils.docx differ diff --git a/other/07_210340123_王秋林_代码标注/tool/ResourceParser.docx b/other/07_210340123_王秋林_代码标注/tool/ResourceParser.docx new file mode 100644 index 0000000..82e97f8 Binary files /dev/null and b/other/07_210340123_王秋林_代码标注/tool/ResourceParser.docx differ diff --git a/other/07_210340123_王秋林_代码标注/ui/NotesListActivity.docx b/other/07_210340123_王秋林_代码标注/ui/NotesListActivity.docx new file mode 100644 index 0000000..6263eea Binary files /dev/null and b/other/07_210340123_王秋林_代码标注/ui/NotesListActivity.docx differ diff --git a/other/07_210340123_王秋林_代码标注/widget/NoteWidgetProvider.docx b/other/07_210340123_王秋林_代码标注/widget/NoteWidgetProvider.docx new file mode 100644 index 0000000..76b47a4 Binary files /dev/null and b/other/07_210340123_王秋林_代码标注/widget/NoteWidgetProvider.docx differ diff --git a/other/07_210340123_王秋林_代码标注/widget/NoteWidgetProvider_2x.docx b/other/07_210340123_王秋林_代码标注/widget/NoteWidgetProvider_2x.docx new file mode 100644 index 0000000..9c7482e Binary files /dev/null and b/other/07_210340123_王秋林_代码标注/widget/NoteWidgetProvider_2x.docx differ diff --git a/other/07_210340123_王秋林_代码标注/widget/NoteWidgetProvider_4x.docx b/other/07_210340123_王秋林_代码标注/widget/NoteWidgetProvider_4x.docx new file mode 100644 index 0000000..b709a2d Binary files /dev/null and b/other/07_210340123_王秋林_代码标注/widget/NoteWidgetProvider_4x.docx differ diff --git a/other/07_210340124_王仕豪_代码标注/AlarmAlertActivity.docx b/other/07_210340124_王仕豪_代码标注/AlarmAlertActivity.docx new file mode 100644 index 0000000..f1f8cd3 Binary files /dev/null and b/other/07_210340124_王仕豪_代码标注/AlarmAlertActivity.docx differ diff --git a/other/07_210340124_王仕豪_代码标注/AlarmInitReceiver.docx b/other/07_210340124_王仕豪_代码标注/AlarmInitReceiver.docx new file mode 100644 index 0000000..1b488ee Binary files /dev/null and b/other/07_210340124_王仕豪_代码标注/AlarmInitReceiver.docx differ diff --git a/other/07_210340124_王仕豪_代码标注/AlarmReceiver.docx b/other/07_210340124_王仕豪_代码标注/AlarmReceiver.docx new file mode 100644 index 0000000..679dd95 Binary files /dev/null and b/other/07_210340124_王仕豪_代码标注/AlarmReceiver.docx differ diff --git a/other/07_210340124_王仕豪_代码标注/DateTimePicker.docx b/other/07_210340124_王仕豪_代码标注/DateTimePicker.docx new file mode 100644 index 0000000..c9c7b18 Binary files /dev/null and b/other/07_210340124_王仕豪_代码标注/DateTimePicker.docx differ diff --git a/other/07_210340124_王仕豪_代码标注/DateTimePickerDialog.docx b/other/07_210340124_王仕豪_代码标注/DateTimePickerDialog.docx new file mode 100644 index 0000000..3f57fcc Binary files /dev/null and b/other/07_210340124_王仕豪_代码标注/DateTimePickerDialog.docx differ diff --git a/other/07_210340124_王仕豪_代码标注/DropdownMenu.docx b/other/07_210340124_王仕豪_代码标注/DropdownMenu.docx new file mode 100644 index 0000000..df98458 Binary files /dev/null and b/other/07_210340124_王仕豪_代码标注/DropdownMenu.docx differ diff --git a/other/07_210340124_王仕豪_代码标注/FoldersListAdapter.docx b/other/07_210340124_王仕豪_代码标注/FoldersListAdapter.docx new file mode 100644 index 0000000..41f01b7 Binary files /dev/null and b/other/07_210340124_王仕豪_代码标注/FoldersListAdapter.docx differ diff --git a/other/07_210340124_王仕豪_代码标注/NoteEditText.docx b/other/07_210340124_王仕豪_代码标注/NoteEditText.docx new file mode 100644 index 0000000..61354be Binary files /dev/null and b/other/07_210340124_王仕豪_代码标注/NoteEditText.docx differ diff --git a/other/07_210340124_王仕豪_代码标注/NoteEditeActivity.docx b/other/07_210340124_王仕豪_代码标注/NoteEditeActivity.docx new file mode 100644 index 0000000..93944f4 Binary files /dev/null and b/other/07_210340124_王仕豪_代码标注/NoteEditeActivity.docx differ diff --git a/other/08_210340120_唐志发_实践总结报告.docx b/other/08_210340120_唐志发_实践总结报告.docx new file mode 100644 index 0000000..0fb7240 Binary files /dev/null and b/other/08_210340120_唐志发_实践总结报告.docx differ diff --git a/other/08_210340121_王霖康_实践总结报告.docx b/other/08_210340121_王霖康_实践总结报告.docx new file mode 100644 index 0000000..ebac0ff Binary files /dev/null and b/other/08_210340121_王霖康_实践总结报告.docx differ diff --git a/other/08_210340123_王秋林_实践总结报告.docx b/other/08_210340123_王秋林_实践总结报告.docx new file mode 100644 index 0000000..2a12900 Binary files /dev/null and b/other/08_210340123_王秋林_实践总结报告.docx differ diff --git a/other/08_210340124_王仕豪_实践总结报告.docx b/other/08_210340124_王仕豪_实践总结报告.docx new file mode 100644 index 0000000..f8ee03f Binary files /dev/null and b/other/08_210340124_王仕豪_实践总结报告.docx differ diff --git a/src/.gradle/7.5/checksums/checksums.lock b/src/.gradle/7.5/checksums/checksums.lock new file mode 100644 index 0000000..28d7553 Binary files /dev/null and b/src/.gradle/7.5/checksums/checksums.lock differ diff --git a/src/.gradle/7.5/checksums/md5-checksums.bin b/src/.gradle/7.5/checksums/md5-checksums.bin new file mode 100644 index 0000000..8b7837c Binary files /dev/null and b/src/.gradle/7.5/checksums/md5-checksums.bin differ diff --git a/src/.gradle/7.5/checksums/sha1-checksums.bin b/src/.gradle/7.5/checksums/sha1-checksums.bin new file mode 100644 index 0000000..f9747d6 Binary files /dev/null and b/src/.gradle/7.5/checksums/sha1-checksums.bin differ diff --git a/src/.gradle/7.5/dependencies-accessors/dependencies-accessors.lock b/src/.gradle/7.5/dependencies-accessors/dependencies-accessors.lock new file mode 100644 index 0000000..e50a688 Binary files /dev/null and b/src/.gradle/7.5/dependencies-accessors/dependencies-accessors.lock differ diff --git a/src/.gradle/7.5/dependencies-accessors/gc.properties b/src/.gradle/7.5/dependencies-accessors/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/src/.gradle/7.5/executionHistory/executionHistory.bin b/src/.gradle/7.5/executionHistory/executionHistory.bin new file mode 100644 index 0000000..0fffb11 Binary files /dev/null and b/src/.gradle/7.5/executionHistory/executionHistory.bin differ diff --git a/src/.gradle/7.5/executionHistory/executionHistory.lock b/src/.gradle/7.5/executionHistory/executionHistory.lock new file mode 100644 index 0000000..6568250 Binary files /dev/null and b/src/.gradle/7.5/executionHistory/executionHistory.lock differ diff --git a/src/.gradle/7.5/fileChanges/last-build.bin b/src/.gradle/7.5/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/src/.gradle/7.5/fileChanges/last-build.bin differ diff --git a/src/.gradle/7.5/fileHashes/fileHashes.bin b/src/.gradle/7.5/fileHashes/fileHashes.bin new file mode 100644 index 0000000..8d6f387 Binary files /dev/null and b/src/.gradle/7.5/fileHashes/fileHashes.bin differ diff --git a/src/.gradle/7.5/fileHashes/fileHashes.lock b/src/.gradle/7.5/fileHashes/fileHashes.lock new file mode 100644 index 0000000..08c2899 Binary files /dev/null and b/src/.gradle/7.5/fileHashes/fileHashes.lock differ diff --git a/src/.gradle/7.5/fileHashes/resourceHashesCache.bin b/src/.gradle/7.5/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000..a1edbe6 Binary files /dev/null and b/src/.gradle/7.5/fileHashes/resourceHashesCache.bin differ diff --git a/src/.gradle/7.5/gc.properties b/src/.gradle/7.5/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/src/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/src/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000..56d0f58 Binary files /dev/null and b/src/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/src/.gradle/buildOutputCleanup/cache.properties b/src/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..0527909 --- /dev/null +++ b/src/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Fri Apr 07 15:33:17 CST 2023 +gradle.version=7.5 diff --git a/src/.gradle/buildOutputCleanup/outputFiles.bin b/src/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000..91b3286 Binary files /dev/null and b/src/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/src/.gradle/file-system.probe b/src/.gradle/file-system.probe new file mode 100644 index 0000000..ef55c98 Binary files /dev/null and b/src/.gradle/file-system.probe differ diff --git a/src/.gradle/vcs-1/gc.properties b/src/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.idea/.gitignore b/src/.idea/.gitignore similarity index 100% rename from .idea/.gitignore rename to src/.idea/.gitignore diff --git a/src/.idea/compiler.xml b/src/.idea/compiler.xml new file mode 100644 index 0000000..fb7f4a8 --- /dev/null +++ b/src/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/.idea/gradle.xml b/src/.idea/gradle.xml new file mode 100644 index 0000000..227d6e9 --- /dev/null +++ b/src/.idea/gradle.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/src/.idea/jarRepositories.xml b/src/.idea/jarRepositories.xml new file mode 100644 index 0000000..a5f05cd --- /dev/null +++ b/src/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/.idea/misc.xml b/src/.idea/misc.xml new file mode 100644 index 0000000..fae0781 --- /dev/null +++ b/src/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/app/.idea/.gitignore b/src/app/.idea/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/src/app/.idea/gradle.xml b/src/app/.idea/gradle.xml new file mode 100644 index 0000000..1b19ff0 --- /dev/null +++ b/src/app/.idea/gradle.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/src/app/.idea/misc.xml b/src/app/.idea/misc.xml new file mode 100644 index 0000000..6ff4d26 --- /dev/null +++ b/src/app/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/app/.idea/workspace.xml b/src/app/.idea/workspace.xml new file mode 100644 index 0000000..67fbd60 --- /dev/null +++ b/src/app/.idea/workspace.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + 1682672845153 + + + + \ No newline at end of file diff --git a/src/app/build.gradle b/src/app/build.gradle new file mode 100644 index 0000000..2924db4 --- /dev/null +++ b/src/app/build.gradle @@ -0,0 +1,20 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 33 + buildToolsVersion "33.0.2" + useLibrary 'org.apache.http.legacy' + + defaultConfig { + applicationId "net.micode.notes" + minSdkVersion 14 + targetSdkVersion 14 + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } + } +} diff --git a/src/app/build/generated/source/buildConfig/debug/net/micode/notes/BuildConfig.java b/src/app/build/generated/source/buildConfig/debug/net/micode/notes/BuildConfig.java new file mode 100644 index 0000000..db17690 --- /dev/null +++ b/src/app/build/generated/source/buildConfig/debug/net/micode/notes/BuildConfig.java @@ -0,0 +1,12 @@ +/** + * Automatically generated file. DO NOT MODIFY + */ +package net.micode.notes; + +public final class BuildConfig { + public static final boolean DEBUG = Boolean.parseBoolean("true"); + public static final String APPLICATION_ID = "net.micode.notes"; + public static final String BUILD_TYPE = "debug"; + public static final int VERSION_CODE = 1; + public static final String VERSION_NAME = "0.1"; +} diff --git a/src/app/build/generated/source/buildConfig/release/net/micode/notes/BuildConfig.java b/src/app/build/generated/source/buildConfig/release/net/micode/notes/BuildConfig.java new file mode 100644 index 0000000..6faa0c2 --- /dev/null +++ b/src/app/build/generated/source/buildConfig/release/net/micode/notes/BuildConfig.java @@ -0,0 +1,12 @@ +/** + * Automatically generated file. DO NOT MODIFY + */ +package net.micode.notes; + +public final class BuildConfig { + public static final boolean DEBUG = false; + public static final String APPLICATION_ID = "net.micode.notes"; + public static final String BUILD_TYPE = "release"; + public static final int VERSION_CODE = 1; + public static final String VERSION_NAME = "0.1"; +} diff --git a/src/app/build/intermediates/annotation_processor_list/debug/annotationProcessors.json b/src/app/build/intermediates/annotation_processor_list/debug/annotationProcessors.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/src/app/build/intermediates/annotation_processor_list/debug/annotationProcessors.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/src/app/build/intermediates/annotation_processor_list/release/annotationProcessors.json b/src/app/build/intermediates/annotation_processor_list/release/annotationProcessors.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/src/app/build/intermediates/annotation_processor_list/release/annotationProcessors.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/src/app/build/intermediates/apk/debug/app-debug.apk b/src/app/build/intermediates/apk/debug/app-debug.apk new file mode 100644 index 0000000..00b2202 Binary files /dev/null and b/src/app/build/intermediates/apk/debug/app-debug.apk differ diff --git a/src/app/build/intermediates/apk/debug/output-metadata.json b/src/app/build/intermediates/apk/debug/output-metadata.json new file mode 100644 index 0000000..b2231b9 --- /dev/null +++ b/src/app/build/intermediates/apk/debug/output-metadata.json @@ -0,0 +1,20 @@ +{ + "version": 3, + "artifactType": { + "type": "APK", + "kind": "Directory" + }, + "applicationId": "net.micode.notes", + "variantName": "debug", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 1, + "versionName": "0.1", + "outputFile": "app-debug.apk" + } + ], + "elementType": "File" +} \ No newline at end of file diff --git a/src/app/build/intermediates/apk_ide_redirect_file/debug/redirect.txt b/src/app/build/intermediates/apk_ide_redirect_file/debug/redirect.txt new file mode 100644 index 0000000..46dacc6 --- /dev/null +++ b/src/app/build/intermediates/apk_ide_redirect_file/debug/redirect.txt @@ -0,0 +1,2 @@ +#- File Locator - +listingFile=../../apk/debug/output-metadata.json diff --git a/src/app/build/intermediates/apk_ide_redirect_file/release/redirect.txt b/src/app/build/intermediates/apk_ide_redirect_file/release/redirect.txt new file mode 100644 index 0000000..3716790 --- /dev/null +++ b/src/app/build/intermediates/apk_ide_redirect_file/release/redirect.txt @@ -0,0 +1,2 @@ +#- File Locator - +listingFile=../../../outputs/apk/release/output-metadata.json diff --git a/src/app/build/intermediates/app_metadata/debug/app-metadata.properties b/src/app/build/intermediates/app_metadata/debug/app-metadata.properties new file mode 100644 index 0000000..260f1ee --- /dev/null +++ b/src/app/build/intermediates/app_metadata/debug/app-metadata.properties @@ -0,0 +1,2 @@ +appMetadataVersion=1.1 +androidGradlePluginVersion=7.4.2 diff --git a/src/app/build/intermediates/app_metadata/release/app-metadata.properties b/src/app/build/intermediates/app_metadata/release/app-metadata.properties new file mode 100644 index 0000000..260f1ee --- /dev/null +++ b/src/app/build/intermediates/app_metadata/release/app-metadata.properties @@ -0,0 +1,2 @@ +appMetadataVersion=1.1 +androidGradlePluginVersion=7.4.2 diff --git a/src/app/build/intermediates/compatible_screen_manifest/debug/output-metadata.json b/src/app/build/intermediates/compatible_screen_manifest/debug/output-metadata.json new file mode 100644 index 0000000..714f651 --- /dev/null +++ b/src/app/build/intermediates/compatible_screen_manifest/debug/output-metadata.json @@ -0,0 +1,10 @@ +{ + "version": 3, + "artifactType": { + "type": "COMPATIBLE_SCREEN_MANIFEST", + "kind": "Directory" + }, + "applicationId": "net.micode.notes", + "variantName": "debug", + "elements": [] +} \ No newline at end of file diff --git a/src/app/build/intermediates/compatible_screen_manifest/release/output-metadata.json b/src/app/build/intermediates/compatible_screen_manifest/release/output-metadata.json new file mode 100644 index 0000000..53f799b --- /dev/null +++ b/src/app/build/intermediates/compatible_screen_manifest/release/output-metadata.json @@ -0,0 +1,10 @@ +{ + "version": 3, + "artifactType": { + "type": "COMPATIBLE_SCREEN_MANIFEST", + "kind": "Directory" + }, + "applicationId": "net.micode.notes", + "variantName": "release", + "elements": [] +} \ No newline at end of file diff --git a/src/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar b/src/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar new file mode 100644 index 0000000..8f2905d Binary files /dev/null and b/src/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar differ diff --git a/src/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/release/R.jar b/src/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/release/R.jar new file mode 100644 index 0000000..8f2905d Binary files /dev/null and b/src/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/release/R.jar differ diff --git a/src/app/build/intermediates/default_proguard_files/global/proguard-android-optimize.txt-7.4.2 b/src/app/build/intermediates/default_proguard_files/global/proguard-android-optimize.txt-7.4.2 new file mode 100644 index 0000000..de0b268 --- /dev/null +++ b/src/app/build/intermediates/default_proguard_files/global/proguard-android-optimize.txt-7.4.2 @@ -0,0 +1,117 @@ +# This is a configuration file for ProGuard. +# http://proguard.sourceforge.net/index.html#manual/usage.html +# +# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with +# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and +# will be ignored by new version of the Android plugin for Gradle. + +# Optimizations: If you don't want to optimize, use the proguard-android.txt configuration file +# instead of this one, which turns off the optimization flags. +# Adding optimization introduces certain risks, since for example not all optimizations performed by +# ProGuard works on all versions of Dalvik. The following flags turn off various optimizations +# known to have issues, but the list may not be complete or up to date. (The "arithmetic" +# optimization can be used if you are only targeting Android 2.0 or later.) Make sure you test +# thoroughly if you go this route. +-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* +-optimizationpasses 5 +-allowaccessmodification + +-dontusemixedcaseclassnames +-dontskipnonpubliclibraryclasses +-verbose + +# Preserve some attributes that may be required for reflection. +-keepattributes AnnotationDefault, + EnclosingMethod, + InnerClasses, + RuntimeVisibleAnnotations, + RuntimeVisibleParameterAnnotations, + RuntimeVisibleTypeAnnotations, + Signature + +-keep public class com.google.vending.licensing.ILicensingService +-keep public class com.android.vending.licensing.ILicensingService +-keep public class com.google.android.vending.licensing.ILicensingService +-dontnote com.android.vending.licensing.ILicensingService +-dontnote com.google.vending.licensing.ILicensingService +-dontnote com.google.android.vending.licensing.ILicensingService + +# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native +-keepclasseswithmembernames,includedescriptorclasses class * { + native ; +} + +# Keep setters in Views so that animations can still work. +-keepclassmembers public class * extends android.view.View { + void set*(***); + *** get*(); +} + +# We want to keep methods in Activity that could be used in the XML attribute onClick. +-keepclassmembers class * extends android.app.Activity { + public void *(android.view.View); +} + +# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations +-keepclassmembers enum * { + public static **[] values(); + public static ** valueOf(java.lang.String); +} + +-keepclassmembers class * implements android.os.Parcelable { + public static final ** CREATOR; +} + +# Preserve annotated Javascript interface methods. +-keepclassmembers class * { + @android.webkit.JavascriptInterface ; +} + +# The support libraries contains references to newer platform versions. +# Don't warn about those in case this app is linking against an older +# platform version. We know about them, and they are safe. +-dontnote android.support.** +-dontnote androidx.** +-dontwarn android.support.** +-dontwarn androidx.** + +# This class is deprecated, but remains for backward compatibility. +-dontwarn android.util.FloatMath + +# Understand the @Keep support annotation. +-keep class android.support.annotation.Keep +-keep class androidx.annotation.Keep + +-keep @android.support.annotation.Keep class * {*;} +-keep @androidx.annotation.Keep class * {*;} + +-keepclasseswithmembers class * { + @android.support.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @androidx.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @android.support.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @androidx.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @android.support.annotation.Keep (...); +} + +-keepclasseswithmembers class * { + @androidx.annotation.Keep (...); +} + +# These classes are duplicated between android.jar and org.apache.http.legacy.jar. +-dontnote org.apache.http.** +-dontnote android.net.http.** + +# These classes are duplicated between android.jar and core-lambda-stubs.jar. +-dontnote java.lang.invoke.** diff --git a/src/app/build/intermediates/default_proguard_files/global/proguard-android.txt-7.4.2 b/src/app/build/intermediates/default_proguard_files/global/proguard-android.txt-7.4.2 new file mode 100644 index 0000000..3ca0d03 --- /dev/null +++ b/src/app/build/intermediates/default_proguard_files/global/proguard-android.txt-7.4.2 @@ -0,0 +1,116 @@ +# This is a configuration file for ProGuard. +# http://proguard.sourceforge.net/index.html#manual/usage.html +# +# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with +# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and +# will be ignored by new version of the Android plugin for Gradle. + +# Optimization is turned off by default. Dex does not like code run +# through the ProGuard optimize steps (and performs some +# of these optimizations on its own). +# Note that if you want to enable optimization, you cannot just +# include optimization flags in your own project configuration file; +# instead you will need to point to the +# "proguard-android-optimize.txt" file instead of this one from your +# project.properties file. +-dontoptimize + +-dontusemixedcaseclassnames +-dontskipnonpubliclibraryclasses +-verbose + +# Preserve some attributes that may be required for reflection. +-keepattributes AnnotationDefault, + EnclosingMethod, + InnerClasses, + RuntimeVisibleAnnotations, + RuntimeVisibleParameterAnnotations, + RuntimeVisibleTypeAnnotations, + Signature + +-keep public class com.google.vending.licensing.ILicensingService +-keep public class com.android.vending.licensing.ILicensingService +-keep public class com.google.android.vending.licensing.ILicensingService +-dontnote com.android.vending.licensing.ILicensingService +-dontnote com.google.vending.licensing.ILicensingService +-dontnote com.google.android.vending.licensing.ILicensingService + +# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native +-keepclasseswithmembernames,includedescriptorclasses class * { + native ; +} + +# Keep setters in Views so that animations can still work. +-keepclassmembers public class * extends android.view.View { + void set*(***); + *** get*(); +} + +# We want to keep methods in Activity that could be used in the XML attribute onClick. +-keepclassmembers class * extends android.app.Activity { + public void *(android.view.View); +} + +# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations +-keepclassmembers enum * { + public static **[] values(); + public static ** valueOf(java.lang.String); +} + +-keepclassmembers class * implements android.os.Parcelable { + public static final ** CREATOR; +} + +# Preserve annotated Javascript interface methods. +-keepclassmembers class * { + @android.webkit.JavascriptInterface ; +} + +# The support libraries contains references to newer platform versions. +# Don't warn about those in case this app is linking against an older +# platform version. We know about them, and they are safe. +-dontnote android.support.** +-dontnote androidx.** +-dontwarn android.support.** +-dontwarn androidx.** + +# This class is deprecated, but remains for backward compatibility. +-dontwarn android.util.FloatMath + +# Understand the @Keep support annotation. +-keep class android.support.annotation.Keep +-keep class androidx.annotation.Keep + +-keep @android.support.annotation.Keep class * {*;} +-keep @androidx.annotation.Keep class * {*;} + +-keepclasseswithmembers class * { + @android.support.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @androidx.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @android.support.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @androidx.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @android.support.annotation.Keep (...); +} + +-keepclasseswithmembers class * { + @androidx.annotation.Keep (...); +} + +# These classes are duplicated between android.jar and org.apache.http.legacy.jar. +-dontnote org.apache.http.** +-dontnote android.net.http.** + +# These classes are duplicated between android.jar and core-lambda-stubs.jar. +-dontnote java.lang.invoke.** diff --git a/src/app/build/intermediates/default_proguard_files/global/proguard-defaults.txt-7.4.2 b/src/app/build/intermediates/default_proguard_files/global/proguard-defaults.txt-7.4.2 new file mode 100644 index 0000000..5fea5b5 --- /dev/null +++ b/src/app/build/intermediates/default_proguard_files/global/proguard-defaults.txt-7.4.2 @@ -0,0 +1,117 @@ +# This is a configuration file for ProGuard. +# http://proguard.sourceforge.net/index.html#manual/usage.html +# +# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with +# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and +# will be ignored by new version of the Android plugin for Gradle. + +# Optimizations can be turned on and off in the 'postProcessing' DSL block. +# The configuration below is applied if optimizations are enabled. +# Adding optimization introduces certain risks, since for example not all optimizations performed by +# ProGuard works on all versions of Dalvik. The following flags turn off various optimizations +# known to have issues, but the list may not be complete or up to date. (The "arithmetic" +# optimization can be used if you are only targeting Android 2.0 or later.) Make sure you test +# thoroughly if you go this route. +-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* +-optimizationpasses 5 +-allowaccessmodification + +-dontusemixedcaseclassnames +-dontskipnonpubliclibraryclasses +-verbose + +# Preserve some attributes that may be required for reflection. +-keepattributes AnnotationDefault, + EnclosingMethod, + InnerClasses, + RuntimeVisibleAnnotations, + RuntimeVisibleParameterAnnotations, + RuntimeVisibleTypeAnnotations, + Signature + +-keep public class com.google.vending.licensing.ILicensingService +-keep public class com.android.vending.licensing.ILicensingService +-keep public class com.google.android.vending.licensing.ILicensingService +-dontnote com.android.vending.licensing.ILicensingService +-dontnote com.google.vending.licensing.ILicensingService +-dontnote com.google.android.vending.licensing.ILicensingService + +# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native +-keepclasseswithmembernames,includedescriptorclasses class * { + native ; +} + +# Keep setters in Views so that animations can still work. +-keepclassmembers public class * extends android.view.View { + void set*(***); + *** get*(); +} + +# We want to keep methods in Activity that could be used in the XML attribute onClick. +-keepclassmembers class * extends android.app.Activity { + public void *(android.view.View); +} + +# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations +-keepclassmembers enum * { + public static **[] values(); + public static ** valueOf(java.lang.String); +} + +-keepclassmembers class * implements android.os.Parcelable { + public static final ** CREATOR; +} + +# Preserve annotated Javascript interface methods. +-keepclassmembers class * { + @android.webkit.JavascriptInterface ; +} + +# The support libraries contains references to newer platform versions. +# Don't warn about those in case this app is linking against an older +# platform version. We know about them, and they are safe. +-dontnote android.support.** +-dontnote androidx.** +-dontwarn android.support.** +-dontwarn androidx.** + +# This class is deprecated, but remains for backward compatibility. +-dontwarn android.util.FloatMath + +# Understand the @Keep support annotation. +-keep class android.support.annotation.Keep +-keep class androidx.annotation.Keep + +-keep @android.support.annotation.Keep class * {*;} +-keep @androidx.annotation.Keep class * {*;} + +-keepclasseswithmembers class * { + @android.support.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @androidx.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @android.support.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @androidx.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @android.support.annotation.Keep (...); +} + +-keepclasseswithmembers class * { + @androidx.annotation.Keep (...); +} + +# These classes are duplicated between android.jar and org.apache.http.legacy.jar. +-dontnote org.apache.http.** +-dontnote android.net.http.** + +# These classes are duplicated between android.jar and core-lambda-stubs.jar. +-dontnote java.lang.invoke.** diff --git a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_0/graph.bin b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_0/graph.bin new file mode 100644 index 0000000..c240668 Binary files /dev/null and b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_0/graph.bin differ diff --git a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_1/graph.bin b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_1/graph.bin new file mode 100644 index 0000000..f79a190 Binary files /dev/null and b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_1/graph.bin differ diff --git a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_2/graph.bin b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_2/graph.bin new file mode 100644 index 0000000..e41b458 Binary files /dev/null and b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_2/graph.bin differ diff --git a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_3/graph.bin b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_3/graph.bin new file mode 100644 index 0000000..d9be6d9 Binary files /dev/null and b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_3/graph.bin differ diff --git a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_0aa79164540ff7fe33f929fa5bbe9a8e991f523720658ab33dc6a2af5e4fa12a_bucket_0/graph.bin b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_0aa79164540ff7fe33f929fa5bbe9a8e991f523720658ab33dc6a2af5e4fa12a_bucket_0/graph.bin new file mode 100644 index 0000000..601f245 Binary files /dev/null and b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_0aa79164540ff7fe33f929fa5bbe9a8e991f523720658ab33dc6a2af5e4fa12a_bucket_0/graph.bin differ diff --git a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_0aa79164540ff7fe33f929fa5bbe9a8e991f523720658ab33dc6a2af5e4fa12a_bucket_1/graph.bin b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_0aa79164540ff7fe33f929fa5bbe9a8e991f523720658ab33dc6a2af5e4fa12a_bucket_1/graph.bin new file mode 100644 index 0000000..601f245 Binary files /dev/null and b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_0aa79164540ff7fe33f929fa5bbe9a8e991f523720658ab33dc6a2af5e4fa12a_bucket_1/graph.bin differ diff --git a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_0aa79164540ff7fe33f929fa5bbe9a8e991f523720658ab33dc6a2af5e4fa12a_bucket_2/graph.bin b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_0aa79164540ff7fe33f929fa5bbe9a8e991f523720658ab33dc6a2af5e4fa12a_bucket_2/graph.bin new file mode 100644 index 0000000..601f245 Binary files /dev/null and b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_0aa79164540ff7fe33f929fa5bbe9a8e991f523720658ab33dc6a2af5e4fa12a_bucket_2/graph.bin differ diff --git a/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_0aa79164540ff7fe33f929fa5bbe9a8e991f523720658ab33dc6a2af5e4fa12a_bucket_3/graph.bin b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_0aa79164540ff7fe33f929fa5bbe9a8e991f523720658ab33dc6a2af5e4fa12a_bucket_3/graph.bin new file mode 100644 index 0000000..601f245 Binary files /dev/null and b/src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_0aa79164540ff7fe33f929fa5bbe9a8e991f523720658ab33dc6a2af5e4fa12a_bucket_3/graph.bin differ diff --git a/src/app/build/intermediates/desugar_graph/release/out/currentProject/dirs_bucket_0/graph.bin b/src/app/build/intermediates/desugar_graph/release/out/currentProject/dirs_bucket_0/graph.bin new file mode 100644 index 0000000..1578147 Binary files /dev/null and b/src/app/build/intermediates/desugar_graph/release/out/currentProject/dirs_bucket_0/graph.bin differ diff --git a/src/app/build/intermediates/desugar_graph/release/out/currentProject/dirs_bucket_1/graph.bin b/src/app/build/intermediates/desugar_graph/release/out/currentProject/dirs_bucket_1/graph.bin new file mode 100644 index 0000000..96fe28c Binary files /dev/null and b/src/app/build/intermediates/desugar_graph/release/out/currentProject/dirs_bucket_1/graph.bin differ diff --git a/src/app/build/intermediates/desugar_graph/release/out/currentProject/dirs_bucket_2/graph.bin b/src/app/build/intermediates/desugar_graph/release/out/currentProject/dirs_bucket_2/graph.bin new file mode 100644 index 0000000..7d7a78a Binary files /dev/null and b/src/app/build/intermediates/desugar_graph/release/out/currentProject/dirs_bucket_2/graph.bin differ diff --git a/src/app/build/intermediates/desugar_graph/release/out/currentProject/dirs_bucket_3/graph.bin b/src/app/build/intermediates/desugar_graph/release/out/currentProject/dirs_bucket_3/graph.bin new file mode 100644 index 0000000..46ec8ff Binary files /dev/null and b/src/app/build/intermediates/desugar_graph/release/out/currentProject/dirs_bucket_3/graph.bin differ diff --git a/src/app/build/intermediates/desugar_graph/release/out/currentProject/jar_91083f3913aaa91130bd5c6485ada870ef45771d993fc4113d1bee0f8e243f91_bucket_0/graph.bin b/src/app/build/intermediates/desugar_graph/release/out/currentProject/jar_91083f3913aaa91130bd5c6485ada870ef45771d993fc4113d1bee0f8e243f91_bucket_0/graph.bin new file mode 100644 index 0000000..601f245 Binary files /dev/null and b/src/app/build/intermediates/desugar_graph/release/out/currentProject/jar_91083f3913aaa91130bd5c6485ada870ef45771d993fc4113d1bee0f8e243f91_bucket_0/graph.bin differ diff --git a/src/app/build/intermediates/desugar_graph/release/out/currentProject/jar_91083f3913aaa91130bd5c6485ada870ef45771d993fc4113d1bee0f8e243f91_bucket_1/graph.bin b/src/app/build/intermediates/desugar_graph/release/out/currentProject/jar_91083f3913aaa91130bd5c6485ada870ef45771d993fc4113d1bee0f8e243f91_bucket_1/graph.bin new file mode 100644 index 0000000..601f245 Binary files /dev/null and b/src/app/build/intermediates/desugar_graph/release/out/currentProject/jar_91083f3913aaa91130bd5c6485ada870ef45771d993fc4113d1bee0f8e243f91_bucket_1/graph.bin differ diff --git a/src/app/build/intermediates/desugar_graph/release/out/currentProject/jar_91083f3913aaa91130bd5c6485ada870ef45771d993fc4113d1bee0f8e243f91_bucket_2/graph.bin b/src/app/build/intermediates/desugar_graph/release/out/currentProject/jar_91083f3913aaa91130bd5c6485ada870ef45771d993fc4113d1bee0f8e243f91_bucket_2/graph.bin new file mode 100644 index 0000000..601f245 Binary files /dev/null and b/src/app/build/intermediates/desugar_graph/release/out/currentProject/jar_91083f3913aaa91130bd5c6485ada870ef45771d993fc4113d1bee0f8e243f91_bucket_2/graph.bin differ diff --git a/src/app/build/intermediates/desugar_graph/release/out/currentProject/jar_91083f3913aaa91130bd5c6485ada870ef45771d993fc4113d1bee0f8e243f91_bucket_3/graph.bin b/src/app/build/intermediates/desugar_graph/release/out/currentProject/jar_91083f3913aaa91130bd5c6485ada870ef45771d993fc4113d1bee0f8e243f91_bucket_3/graph.bin new file mode 100644 index 0000000..601f245 Binary files /dev/null and b/src/app/build/intermediates/desugar_graph/release/out/currentProject/jar_91083f3913aaa91130bd5c6485ada870ef45771d993fc4113d1bee0f8e243f91_bucket_3/graph.bin differ diff --git a/src/app/build/intermediates/dex/debug/mergeDexDebug/classes.dex b/src/app/build/intermediates/dex/debug/mergeDexDebug/classes.dex new file mode 100644 index 0000000..0690af2 Binary files /dev/null and b/src/app/build/intermediates/dex/debug/mergeDexDebug/classes.dex differ diff --git a/src/app/build/intermediates/dex/release/mergeDexRelease/classes.dex b/src/app/build/intermediates/dex/release/mergeDexRelease/classes.dex new file mode 100644 index 0000000..8054ee3 Binary files /dev/null and b/src/app/build/intermediates/dex/release/mergeDexRelease/classes.dex differ diff --git a/src/app/build/intermediates/dex_archive_input_jar_hashes/debug/out b/src/app/build/intermediates/dex_archive_input_jar_hashes/debug/out new file mode 100644 index 0000000..84353e3 Binary files /dev/null and b/src/app/build/intermediates/dex_archive_input_jar_hashes/debug/out differ diff --git a/src/app/build/intermediates/dex_archive_input_jar_hashes/release/out b/src/app/build/intermediates/dex_archive_input_jar_hashes/release/out new file mode 100644 index 0000000..59580d9 Binary files /dev/null and b/src/app/build/intermediates/dex_archive_input_jar_hashes/release/out differ diff --git a/src/app/build/intermediates/dex_number_of_buckets_file/debug/out b/src/app/build/intermediates/dex_number_of_buckets_file/debug/out new file mode 100644 index 0000000..bf0d87a --- /dev/null +++ b/src/app/build/intermediates/dex_number_of_buckets_file/debug/out @@ -0,0 +1 @@ +4 \ No newline at end of file diff --git a/src/app/build/intermediates/dex_number_of_buckets_file/release/out b/src/app/build/intermediates/dex_number_of_buckets_file/release/out new file mode 100644 index 0000000..bf0d87a --- /dev/null +++ b/src/app/build/intermediates/dex_number_of_buckets_file/release/out @@ -0,0 +1 @@ +4 \ No newline at end of file diff --git a/src/app/build/intermediates/incremental/debug-mergeJavaRes/merge-state b/src/app/build/intermediates/incremental/debug-mergeJavaRes/merge-state new file mode 100644 index 0000000..1c983fc Binary files /dev/null and b/src/app/build/intermediates/incremental/debug-mergeJavaRes/merge-state differ diff --git a/src/app/build/intermediates/incremental/debug/mergeDebugResources/compile-file-map.properties b/src/app/build/intermediates/incremental/debug/mergeDebugResources/compile-file-map.properties new file mode 100644 index 0000000..a94bdba --- /dev/null +++ b/src/app/build/intermediates/incremental/debug/mergeDebugResources/compile-file-map.properties @@ -0,0 +1,96 @@ +#Mon Jun 05 21:28:54 CST 2023 +net.micode.notes.app-main-7\:/drawable-hdpi/font_super.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_super.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/call_record.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_call_record.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/new_note_normal.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_new_note_normal.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_yellow.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_yellow.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_green.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_green.9.png.flat +net.micode.notes.app-main-7\:/menu/sub_folder.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\menu_sub_folder.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_yellow.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_yellow.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/font_small.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_small.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_white.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_white.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_white.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_white.9.png.flat +net.micode.notes.app-main-7\:/layout/account_dialog_title.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\layout_account_dialog_title.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_green.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_green.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_blue_down.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_blue_down.9.png.flat +net.micode.notes.app-main-7\:/color/secondary_text_dark.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\color_secondary_text_dark.xml.flat +net.micode.notes.app-main-7\:/layout/dialog_edit_text.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\layout_dialog_edit_text.xml.flat +net.micode.notes.app-main-7\:/layout/widget_4x.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\layout_widget_4x.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_yellow_middle.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_yellow_middle.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/menu_delete.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_menu_delete.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/clock.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_clock.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/font_normal.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_normal.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/dropdown_icon.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_dropdown_icon.9.png.flat +net.micode.notes.app-main-7\:/layout/note_edit.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\layout_note_edit.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_green.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_green.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_green_single.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_green_single.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_white_single.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_white_single.9.png.flat +net.micode.notes.app-main-7\:/raw-zh-rCN/introduction=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\raw-zh-rCN_introduction.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_green.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_green.png.flat +net.micode.notes.app-main-7\:/xml/preferences.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\xml_preferences.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_red_single.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_red_single.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/delete.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_delete.png.flat +net.micode.notes.app-main-7\:/menu/call_record_folder.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\menu_call_record_folder.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_red.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_red.png.flat +net.micode.notes.app-main-7\:/layout/widget_2x.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\layout_widget_2x.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/menu_move.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_menu_move.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_green_down.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_green_down.9.png.flat +net.micode.notes.app-main-7\:/layout/note_edit_list_item.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\layout_note_edit_list_item.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_blue.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_blue.png.flat +net.micode.notes.app-main-7\:/layout/add_account_text.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\layout_add_account_text.xml.flat +net.micode.notes.app-main-7\:/xml/widget_4x_info.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\xml_widget_4x_info.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/font_size_selector_bg.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_size_selector_bg.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/selected.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_selected.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/search_result.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_search_result.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_white.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_white.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_blue_middle.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_blue_middle.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_green_middle.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_green_middle.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_white_down.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_white_down.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_blue_single.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_blue_single.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/font_large.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_large.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_yellow_up.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_yellow_up.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_red_middle.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_red_middle.9.png.flat +net.micode.notes.app-main-7\:/layout/settings_header.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\layout_settings_header.xml.flat +net.micode.notes.app-main-7\:/menu/note_list.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\menu_note_list.xml.flat +net.micode.notes.app-main-7\:/menu/call_note_edit.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\menu_call_note_edit.xml.flat +net.micode.notes.app-main-7\:/drawable/new_note.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable_new_note.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_red.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_red.9.png.flat +net.micode.notes.app-main-7\:/layout/note_list.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\layout_note_list.xml.flat +net.micode.notes.app-main-7\:/color/primary_text_dark.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\color_primary_text_dark.xml.flat +net.micode.notes.app-main-7\:/layout/datetime_picker.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\layout_datetime_picker.xml.flat +net.micode.notes.app-main-7\:/raw/introduction=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\raw_introduction.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_yellow_single.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_yellow_single.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_yellow.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_yellow.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_red.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_red.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/title_alert.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_title_alert.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_red_down.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_red_down.9.png.flat +net.micode.notes.app-main-7\:/menu/note_list_options.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\menu_note_list_options.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_yellow.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_yellow.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/icon_app.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_icon_app.png.flat +net.micode.notes.app-main-7\:/layout/note_item.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\layout_note_item.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_background.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_background.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_red.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_red.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/title_bar_bg.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_title_bar_bg.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_footer_bg.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_footer_bg.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/new_note_pressed.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_new_note_pressed.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_green_up.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_green_up.9.png.flat +net.micode.notes.app-main-7\:/layout/note_list_dropdown_menu.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\layout_note_list_dropdown_menu.xml.flat +net.micode.notes.app-main-7\:/layout/note_list_footer.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\layout_note_list_footer.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_red_up.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_red_up.9.png.flat +net.micode.notes.app-main-7\:/menu/note_list_dropdown.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\menu_note_list_dropdown.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_white_up.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_white_up.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_blue.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_blue.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/bg_color_btn_mask.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_bg_color_btn_mask.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_blue.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_blue.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/bg_btn_set_color.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_bg_btn_set_color.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_white.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_white.9.png.flat +net.micode.notes.app-main-7\:/xml/searchable.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\xml_searchable.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/notification.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_notification.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_blue_up.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_blue_up.9.png.flat +net.micode.notes.app-main-7\:/xml/widget_2x_info.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\xml_widget_2x_info.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/note_edit_color_selector_panel.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_note_edit_color_selector_panel.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_white_middle.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_white_middle.9.png.flat +net.micode.notes.app-main-7\:/layout/folder_list_item.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\layout_folder_list_item.xml.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_folder.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_folder.9.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_blue.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_blue.png.flat +net.micode.notes.app-main-7\:/drawable-hdpi/list_yellow_down.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_yellow_down.9.png.flat +net.micode.notes.app-main-7\:/menu/note_edit.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\debug\\menu_note_edit.xml.flat diff --git a/src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml b/src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml new file mode 100644 index 0000000..d65e0cc --- /dev/null +++ b/src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml @@ -0,0 +1,108 @@ + + + + 短信 + 邮件 + + + %1$s 条符合“%2$s”的搜索结果 + + 确认删除文件夹及所包含的便签吗? + 确认要删除该条便签吗? + 确认要删除所选的 %d 条便签吗? + 删除 + 便签 + 便签2x2 + 便签4x4 + 删除 + 通话便签 + 取消 + 设置 + 成功删除提醒 + 不能为空便签设置闹钟提醒 + 不能将空便签发送到桌面 + 要查看的便签不存在 + 导出文本时发生错误,请检查SD卡 + SD卡被占用,不能操作 + 同步已取消 + 同步失败,发生内部错误 + 同步失败,请检查网络和帐号设置 + 导出失败 + 文件夹 %1$s 已存在,请重新命名 + yyyyMMdd + MM月dd日 kk:mm + 已将文本文件(%1$s)输出至SD卡(%2$s)目录 + 已将所选 %1$d 条便签移到 %2$s 文件夹 + 请输入名称 + 已添加到桌面 + 提醒我 + 新建文件夹 + 删除 + 取消全选 + 导出文本 + 修改文件夹名称 + 刪除文件夹 + 查看文件夹 + + 正常 + 文字大小 + + 超大 + 进入清单模式 + 移动到文件夹 + 上一级文件夹 + 退出清单模式 + 删除提醒 + 搜索 + 全选 + 没有选中项,操作无效 + 选中了 %d 项 + 发送到桌面 + 设置 + 分享 + 同步 + 取消同步 + 选择文件夹 + 已过期 + 发送邮件 + 打开地图 + 呼叫电话 + 浏览网页 + 查看 + 知道了 + 新建便签 + ... + 与google task同步便签记录 + 同步账号 + 添加账号 + 新建便签背景颜色随机 + 取消同步 + 立即同步 + 当前帐号 %1$s + 如更换同步帐号,过去的帐号同步信息将被清空,再次切换的同时可能会造成数据重复 + 请选择google帐号,便签将与该帐号的google task内容同步。 + 同步便签 + 上次同步于 %1$s + 取消 + 更换账号 + 删除账号 + 设置 + 正在同步中,不能修改同步帐号 + 同步帐号已设置为%1$s + 便签 + 搜索便签 + 正在搜索便签 + 便签中的文字 + 创建提醒 + 导出成功 + 与%1$s同步成功 + 正在获取服务器便签列表... + 登录%1$s... + 正在同步本地便签... + 同步已取消 + 同步失败 + 同步成功 + 同步便签... + 没有关联内容,点击新建便签。 + 访客模式下,便签内容不可见 + \ No newline at end of file diff --git a/src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml b/src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml new file mode 100644 index 0000000..226b5bc --- /dev/null +++ b/src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml @@ -0,0 +1,108 @@ + + + + 短信 + 郵件 + + + %1$s 條符合”%2$s“的搜尋結果 + + 確認刪除檔夾及所包含的便簽嗎? + 确认要删除該條便籤嗎? + 确认要刪除所選的 %d 條便籤嗎? + 刪除 + 便簽 + 便簽2x2 + 便簽4x4 + 刪除 + 通話便籤 + 取消 + 設置 + 成功刪除提醒 + 不能爲空便籤設置鬧鐘提醒 + 不能將空便籤發送到桌面 + 要查看的便籤不存在 + 導出TXT時發生錯誤,請檢查SD卡 + SD卡被佔用,不能操作 + 同步已取消 + 同步失敗,發生內部錯誤 + 同步失敗,請檢查網絡和帳號設置 + 導出失敗 + 文件夾 %1$s 已存在,請重新命名 + yyyyMMdd + MM月dd日 kk:mm + 已將文本文件(%1$s)導出至SD(%2$s)目錄 + 已將所選 %1$d 便籤移到 %2$s 文件夾 + 請輸入名稱 + 已添加到桌面 + 提醒我 + 新建文件夾 + 刪除 + 取消全選 + 導出文本 + 修改文件夾名稱 + 刪除文件夾 + 查看文件夾 + + 正常 + 文字大小 + + 超大 + 進入清單模式 + 移動到文件夾 + 上一級文件夾 + 退出清單模式 + 刪除提醒 + 搜尋 + 全選 + 沒有選中項,操作無效 + 選中了 %d 項 + 發送到桌面 + 設置 + 分享 + 同步 + 取消同步 + 選擇文件夾 + 已過期 + 發送郵件 + 打開地圖 + 呼叫電話 + 浏覽網頁 + 查看 + 知道了 + 新建便簽 + ... + 与google task同步便簽記錄 + 同步賬號 + 添加賬號 + 新建便籤背景顏色隨機 + 取消同步 + 立即同步 + 當前帳號 %1$s + 如更換同步帳號,過去的帳號同步信息將被清空,再次切換的同時可能會造成數據重復 + 請選擇google帳號,便簽將與該帳號的google task內容同步。 + 同步便簽 + 上次同步于 %1$s + 取消 + 更換賬號 + 刪除賬號 + 設置 + 正在同步中,不能修改同步帳號 + 同步帳號已設置為%1$s + 便籤 + 搜索便籤 + 正在搜索便籤 + 便籤中的文字 + 創建提醒 + 導出成功 + 與%1$s同步成功 + 正在獲取服務器便籤列表... + 登陸%1$s... + 正在同步本地便籤... + 同步已取消 + 同步失敗 + 同步成功 + 同步便簽... + 沒有關聯內容,點擊新建便簽。 + 訪客模式下,便籤內容不可見 + \ No newline at end of file diff --git a/src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values/values.xml b/src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values/values.xml new file mode 100644 index 0000000..c05f15a --- /dev/null +++ b/src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values/values.xml @@ -0,0 +1,169 @@ + + + + -%s + --%s + --%s + --%s + + + Messaging + Email + + #335b5b5b + 26sp + 20sp + 17sp + 14sp + 33sp + + %1$s result for \"%2$s\" + + %1$s results for \"%2$s\" + + Confirm to delete folder and its notes? + Confirm to delete this note? + Confirm to delete the selected %d notes? + Delete selected notes + Notes + Notes 2x2 + Notes 4x4 + Delete + Call notes + cancel + set + Delete reminder successfully + Sorry, can not set clock on empty note + Sorry, can not send and empty note to home + The note is not exist + Export failed, please check SD card + SD card busy, not available now + Sync is canceled + Sync failed, internal error occurs + Sync failed, please check network and account settings + Export fail + notes_%s.txt + /MIUI/notes/ + The folder %1$s exist, please rename + yyyyMMdd + MMMd kk:mm + Export text file (%1$s) to SD (%2$s) directory + (%d) + Have moved selected %1$d notes to %2$s folder + Input name + Note added to home + Remind me + New Folder + Delete + Deselect all + Export text + Change folder name + Delete folder + View folder + Large + Medium + Font size + Small + Super + Enter check list + Move to folder + Parent folder + Leave check list + Delete reminder + Search + Select all + Nothing selected, the operation is invalid + %d selected + Send to home + Settings + Share + Sync + Cancel syncing + Select folder + Expired + Send email + Open map + Call + Browse web + Take a look + Got it + Add note + ... + Sync notes with google task + Sync account + Add account + New note background color random + Cancel syncing + Sync immediately + Current account %1$s + All sync related information will be deleted, which may result in duplicated items sometime + Please select a google account. Local notes will be synced with google task. + Sync notes + Last sync time %1$s + yyyy-MM-dd hh:mm:ss + Cancel + Change sync account + Remove sync account + Settings + Cannot change the account because sync is in progress + %1$s has been set as the sync account + Notes + Search notes + Searching Notes + Text in your notes + Set reminder + Export successful + Sync is successful with account %1$s + Getting remote note list... + Logging into %1$s... + Synchronize local notes with Google Task... + Sync is canceled + Sync is failed + Sync is successful + Syncing notes... + No associated note found, click to create associated note. + Privacy mode,can not see note content + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/build/intermediates/incremental/debug/mergeDebugResources/merger.xml b/src/app/build/intermediates/incremental/debug/mergeDebugResources/merger.xml new file mode 100644 index 0000000..503b55e --- /dev/null +++ b/src/app/build/intermediates/incremental/debug/mergeDebugResources/merger.xml @@ -0,0 +1,56 @@ + + + -%s + --%s + --%s + --%s + + Messaging + Email + #335b5b5b33sp26sp20sp17sp14spNotesNotes 2x2Notes 4x4No associated note found, click to create associated note.Privacy mode,can not see note content...Add noteDelete reminder successfullySet reminderExpiredyyyyMMddMMMd kk:mmGot itTake a lookCallSend emailBrowse webOpen map/MIUI/notes/notes_%s.txt(%d)New FolderExport textSyncCancel syncingSettingsSearchDeleteMove to folder%d selectedNothing selected, the operation is invalidSelect allDeselect allFont sizeSmallMediumLargeSuperEnter check listLeave check listView folderDelete folderChange folder nameThe folder %1$s exist, please renameShareSend to homeRemind meDelete reminderSelect folderParent folderNote added to homeConfirm to delete folder and its notes?Delete selected notesConfirm to delete the selected %d notes?Confirm to delete this note?Have moved selected %1$d notes to %2$s folderSD card busy, not available nowExport failed, please check SD cardThe note is not existSorry, can not set clock on empty noteSorry, can not send and empty note to homeExport successfulExport failExport text file (%1$s) to SD (%2$s) directorySyncing notes...Sync is successfulSync is failedSync is canceledSync is successful with account %1$sSync failed, please check network and account settingsSync failed, internal error occursSync is canceledLogging into %1$s...Getting remote note list...Synchronize local notes with Google Task...SettingsSync accountSync notes with google taskLast sync time %1$syyyy-MM-dd hh:mm:ssAdd accountChange sync accountRemove sync accountCancelSync immediatelyCancel syncingCurrent account %1$sAll sync related information will be deleted, which may result in duplicated items sometimeSync notesPlease select a google account. Local notes will be synced with google task.Cannot change the account because sync is in progress%1$s has been set as the sync accountNew note background color randomDeleteCall notesInput nameSearching NotesSearch notesText in your notesNotessetcancel + %1$s result for \"%2$s\" + + %1$s results for \"%2$s\" + + 短信 + 邮件 + 便签便签2x2便签4x4没有关联内容,点击新建便签。访客模式下,便签内容不可见...新建便签成功删除提醒创建提醒已过期yyyyMMddMM月dd日 kk:mm知道了查看呼叫电话发送邮件浏览网页打开地图新建文件夹导出文本同步取消同步设置搜索删除移动到文件夹选中了 %d 项没有选中项,操作无效全选取消全选文字大小正常超大进入清单模式退出清单模式查看文件夹刪除文件夹修改文件夹名称文件夹 %1$s 已存在,请重新命名分享发送到桌面提醒我删除提醒选择文件夹上一级文件夹已添加到桌面删除确认要删除所选的 %d 条便签吗?确认要删除该条便签吗?确认删除文件夹及所包含的便签吗?已将所选 %1$d 条便签移到 %2$s 文件夹SD卡被占用,不能操作导出文本时发生错误,请检查SD卡要查看的便签不存在不能为空便签设置闹钟提醒不能将空便签发送到桌面导出成功导出失败已将文本文件(%1$s)输出至SD卡(%2$s)目录同步便签...同步成功同步失败同步已取消与%1$s同步成功同步失败,请检查网络和帐号设置同步失败,发生内部错误同步已取消登录%1$s...正在获取服务器便签列表...正在同步本地便签...设置同步账号与google task同步便签记录上次同步于 %1$s添加账号更换账号删除账号取消立即同步取消同步当前帐号 %1$s如更换同步帐号,过去的帐号同步信息将被清空,再次切换的同时可能会造成数据重复同步便签请选择google帐号,便签将与该帐号的google task内容同步。正在同步中,不能修改同步帐号同步帐号已设置为%1$s新建便签背景颜色随机删除通话便签请输入名称正在搜索便签搜索便签便签中的文字便签设置取消 + %1$s 条符合“%2$s”的搜索结果 + + 短信 + 郵件 + 便簽便簽2x2便簽4x4沒有關聯內容,點擊新建便簽。訪客模式下,便籤內容不可見...新建便簽成功刪除提醒創建提醒已過期yyyyMMddMM月dd日 kk:mm知道了查看呼叫電話發送郵件浏覽網頁打開地圖已將所選 %1$d 便籤移到 %2$s 文件夾新建文件夾導出文本同步取消同步設置搜尋刪除移動到文件夾選中了 %d 項沒有選中項,操作無效全選取消全選文字大小正常超大進入清單模式退出清單模式查看文件夾刪除文件夾修改文件夾名稱文件夾 %1$s 已存在,請重新命名分享發送到桌面提醒我刪除提醒選擇文件夾上一級文件夾已添加到桌面刪除确认要刪除所選的 %d 條便籤嗎?确认要删除該條便籤嗎?確認刪除檔夾及所包含的便簽嗎?SD卡被佔用,不能操作導出TXT時發生錯誤,請檢查SD卡要查看的便籤不存在不能爲空便籤設置鬧鐘提醒不能將空便籤發送到桌面導出成功導出失敗已將文本文件(%1$s)導出至SD(%2$s)目錄同步便簽...同步成功同步失敗同步已取消與%1$s同步成功同步失敗,請檢查網絡和帳號設置同步失敗,發生內部錯誤同步已取消登陸%1$s...正在獲取服務器便籤列表...正在同步本地便籤...設置同步賬號与google task同步便簽記錄上次同步于 %1$s添加賬號更換賬號刪除賬號取消立即同步取消同步當前帳號 %1$s如更換同步帳號,過去的帳號同步信息將被清空,再次切換的同時可能會造成數據重復同步便簽請選擇google帳號,便簽將與該帳號的google task內容同步。正在同步中,不能修改同步帳號同步帳號已設置為%1$s新建便籤背景顏色隨機刪除通話便籤請輸入名稱正在搜索便籤搜索便籤便籤中的文字便籤設置取消 + %1$s 條符合”%2$s“的搜尋結果 + \ No newline at end of file diff --git a/src/app/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml b/src/app/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml new file mode 100644 index 0000000..4c7da03 --- /dev/null +++ b/src/app/build/intermediates/incremental/lintVitalAnalyzeRelease/module.xml @@ -0,0 +1,19 @@ + + + + diff --git a/src/app/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml b/src/app/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml new file mode 100644 index 0000000..5b724e2 --- /dev/null +++ b/src/app/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-dependencies.xml @@ -0,0 +1,2 @@ + + diff --git a/src/app/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml b/src/app/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml new file mode 100644 index 0000000..8a67860 --- /dev/null +++ b/src/app/build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml @@ -0,0 +1,2 @@ + + diff --git a/src/app/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml b/src/app/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml new file mode 100644 index 0000000..990a98e --- /dev/null +++ b/src/app/build/intermediates/incremental/lintVitalAnalyzeRelease/release.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + diff --git a/src/app/build/intermediates/incremental/lintVitalReportRelease/module.xml b/src/app/build/intermediates/incremental/lintVitalReportRelease/module.xml new file mode 100644 index 0000000..4c7da03 --- /dev/null +++ b/src/app/build/intermediates/incremental/lintVitalReportRelease/module.xml @@ -0,0 +1,19 @@ + + + + diff --git a/src/app/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml b/src/app/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml new file mode 100644 index 0000000..5b724e2 --- /dev/null +++ b/src/app/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-dependencies.xml @@ -0,0 +1,2 @@ + + diff --git a/src/app/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml b/src/app/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml new file mode 100644 index 0000000..8a67860 --- /dev/null +++ b/src/app/build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml @@ -0,0 +1,2 @@ + + diff --git a/src/app/build/intermediates/incremental/lintVitalReportRelease/release.xml b/src/app/build/intermediates/incremental/lintVitalReportRelease/release.xml new file mode 100644 index 0000000..ab4981a --- /dev/null +++ b/src/app/build/intermediates/incremental/lintVitalReportRelease/release.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + diff --git a/src/app/build/intermediates/incremental/mergeDebugAssets/merger.xml b/src/app/build/intermediates/incremental/mergeDebugAssets/merger.xml new file mode 100644 index 0000000..7222e9e --- /dev/null +++ b/src/app/build/intermediates/incremental/mergeDebugAssets/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/app/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml b/src/app/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml new file mode 100644 index 0000000..56288a3 --- /dev/null +++ b/src/app/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/app/build/intermediates/incremental/mergeDebugShaders/merger.xml b/src/app/build/intermediates/incremental/mergeDebugShaders/merger.xml new file mode 100644 index 0000000..b4ec2f2 --- /dev/null +++ b/src/app/build/intermediates/incremental/mergeDebugShaders/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/app/build/intermediates/incremental/mergeReleaseAssets/merger.xml b/src/app/build/intermediates/incremental/mergeReleaseAssets/merger.xml new file mode 100644 index 0000000..2eea06f --- /dev/null +++ b/src/app/build/intermediates/incremental/mergeReleaseAssets/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/app/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml b/src/app/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml new file mode 100644 index 0000000..60aa55f --- /dev/null +++ b/src/app/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/app/build/intermediates/incremental/mergeReleaseShaders/merger.xml b/src/app/build/intermediates/incremental/mergeReleaseShaders/merger.xml new file mode 100644 index 0000000..e22ef3f --- /dev/null +++ b/src/app/build/intermediates/incremental/mergeReleaseShaders/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt b/src/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt new file mode 100644 index 0000000..c3f9fd9 --- /dev/null +++ b/src/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt @@ -0,0 +1,4 @@ +#Mon Jun 05 21:50:25 CST 2023 +base.0=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\dex\\debug\\mergeDexDebug\\classes.dex +renamed.0=classes.dex +path.0=classes.dex diff --git a/src/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/androidResources b/src/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/androidResources new file mode 100644 index 0000000..4a5f9d0 Binary files /dev/null and b/src/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/androidResources differ diff --git a/src/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/javaResources0 b/src/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/javaResources0 new file mode 100644 index 0000000..945a7c5 Binary files /dev/null and b/src/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/javaResources0 differ diff --git a/src/app/build/intermediates/incremental/packageRelease/tmp/release/dex-renamer-state.txt b/src/app/build/intermediates/incremental/packageRelease/tmp/release/dex-renamer-state.txt new file mode 100644 index 0000000..1635eed --- /dev/null +++ b/src/app/build/intermediates/incremental/packageRelease/tmp/release/dex-renamer-state.txt @@ -0,0 +1,4 @@ +#Mon Jun 05 21:29:34 CST 2023 +base.0=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\dex\\release\\mergeDexRelease\\classes.dex +renamed.0=classes.dex +path.0=classes.dex diff --git a/src/app/build/intermediates/incremental/packageRelease/tmp/release/zip-cache/androidResources b/src/app/build/intermediates/incremental/packageRelease/tmp/release/zip-cache/androidResources new file mode 100644 index 0000000..b7b5279 Binary files /dev/null and b/src/app/build/intermediates/incremental/packageRelease/tmp/release/zip-cache/androidResources differ diff --git a/src/app/build/intermediates/incremental/packageRelease/tmp/release/zip-cache/javaResources0 b/src/app/build/intermediates/incremental/packageRelease/tmp/release/zip-cache/javaResources0 new file mode 100644 index 0000000..945a7c5 Binary files /dev/null and b/src/app/build/intermediates/incremental/packageRelease/tmp/release/zip-cache/javaResources0 differ diff --git a/src/app/build/intermediates/incremental/release-mergeJavaRes/merge-state b/src/app/build/intermediates/incremental/release-mergeJavaRes/merge-state new file mode 100644 index 0000000..1c983fc Binary files /dev/null and b/src/app/build/intermediates/incremental/release-mergeJavaRes/merge-state differ diff --git a/src/app/build/intermediates/incremental/release/mergeReleaseResources/compile-file-map.properties b/src/app/build/intermediates/incremental/release/mergeReleaseResources/compile-file-map.properties new file mode 100644 index 0000000..d2bd4f6 --- /dev/null +++ b/src/app/build/intermediates/incremental/release/mergeReleaseResources/compile-file-map.properties @@ -0,0 +1,96 @@ +#Mon Jun 05 21:28:56 CST 2023 +net.micode.notes.app-main-6\:/drawable-hdpi/widget_4x_yellow.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_widget_4x_yellow.png.flat +net.micode.notes.app-main-6\:/menu/note_list_options.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\menu_note_list_options.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_green_middle.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_green_middle.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_red_middle.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_red_middle.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/search_result.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_search_result.png.flat +net.micode.notes.app-main-6\:/menu/note_edit.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\menu_note_edit.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/widget_2x_yellow.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_widget_2x_yellow.png.flat +net.micode.notes.app-main-6\:/menu/call_note_edit.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\menu_call_note_edit.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_blue_single.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_blue_single.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_white_down.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_white_down.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/edit_title_red.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_edit_title_red.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_footer_bg.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_footer_bg.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/widget_2x_green.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_widget_2x_green.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/new_note_pressed.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_new_note_pressed.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_white_up.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_white_up.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/title_alert.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_title_alert.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/icon_app.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_icon_app.png.flat +net.micode.notes.app-main-6\:/layout/account_dialog_title.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\layout_account_dialog_title.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/title_bar_bg.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_title_bar_bg.9.png.flat +net.micode.notes.app-main-6\:/layout/settings_header.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\layout_settings_header.xml.flat +net.micode.notes.app-main-6\:/xml/searchable.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\xml_searchable.xml.flat +net.micode.notes.app-main-6\:/layout/widget_4x.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\layout_widget_4x.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/notification.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_notification.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_green_single.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_green_single.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_blue_up.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_blue_up.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/edit_blue.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_edit_blue.9.png.flat +net.micode.notes.app-main-6\:/menu/note_list.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\menu_note_list.xml.flat +net.micode.notes.app-main-6\:/layout/dialog_edit_text.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\layout_dialog_edit_text.xml.flat +net.micode.notes.app-main-6\:/raw/introduction=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\raw_introduction.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_white_single.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_white_single.9.png.flat +net.micode.notes.app-main-6\:/xml/widget_2x_info.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\xml_widget_2x_info.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/edit_red.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_edit_red.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_red_up.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_red_up.9.png.flat +net.micode.notes.app-main-6\:/layout/note_list_footer.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\layout_note_list_footer.xml.flat +net.micode.notes.app-main-6\:/layout/folder_list_item.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\layout_folder_list_item.xml.flat +net.micode.notes.app-main-6\:/raw-zh-rCN/introduction=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\raw-zh-rCN_introduction.flat +net.micode.notes.app-main-6\:/drawable-hdpi/edit_title_white.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_edit_title_white.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_yellow_up.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_yellow_up.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/widget_4x_green.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_widget_4x_green.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/font_super.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_font_super.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_yellow_down.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_yellow_down.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_folder.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_folder.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_blue_down.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_blue_down.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_red_single.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_red_single.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_yellow_single.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_yellow_single.9.png.flat +net.micode.notes.app-main-6\:/layout/note_list_dropdown_menu.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\layout_note_list_dropdown_menu.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/dropdown_icon.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_dropdown_icon.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/delete.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_delete.png.flat +net.micode.notes.app-main-6\:/menu/note_list_dropdown.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\menu_note_list_dropdown.xml.flat +net.micode.notes.app-main-6\:/layout/widget_2x.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\layout_widget_2x.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_background.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_background.png.flat +net.micode.notes.app-main-6\:/xml/preferences.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\xml_preferences.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/bg_btn_set_color.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_bg_btn_set_color.png.flat +net.micode.notes.app-main-6\:/color/primary_text_dark.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\color_primary_text_dark.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_green_up.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_green_up.9.png.flat +net.micode.notes.app-main-6\:/menu/call_record_folder.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\menu_call_record_folder.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/edit_title_green.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_edit_title_green.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/edit_green.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_edit_green.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/edit_white.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_edit_white.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/edit_title_yellow.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_edit_title_yellow.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/note_edit_color_selector_panel.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_note_edit_color_selector_panel.png.flat +net.micode.notes.app-main-6\:/layout/note_edit.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\layout_note_edit.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/font_normal.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_font_normal.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_green_down.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_green_down.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/call_record.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_call_record.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/clock.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_clock.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/widget_4x_red.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_widget_4x_red.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/bg_color_btn_mask.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_bg_color_btn_mask.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/widget_4x_white.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_widget_4x_white.png.flat +net.micode.notes.app-main-6\:/layout/note_edit_list_item.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\layout_note_edit_list_item.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/widget_2x_blue.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_widget_2x_blue.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/font_large.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_font_large.png.flat +net.micode.notes.app-main-6\:/menu/sub_folder.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\menu_sub_folder.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/new_note_normal.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_new_note_normal.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/font_small.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_font_small.png.flat +net.micode.notes.app-main-6\:/layout/datetime_picker.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\layout_datetime_picker.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/widget_4x_blue.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_widget_4x_blue.png.flat +net.micode.notes.app-main-6\:/layout/add_account_text.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\layout_add_account_text.xml.flat +net.micode.notes.app-main-6\:/color/secondary_text_dark.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\color_secondary_text_dark.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/font_size_selector_bg.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_font_size_selector_bg.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/selected.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_selected.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/menu_delete.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_menu_delete.png.flat +net.micode.notes.app-main-6\:/layout/note_item.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\layout_note_item.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/widget_2x_red.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_widget_2x_red.png.flat +net.micode.notes.app-main-6\:/xml/widget_4x_info.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\xml_widget_4x_info.xml.flat +net.micode.notes.app-main-6\:/drawable/new_note.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable_new_note.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/widget_2x_white.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_widget_2x_white.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_red_down.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_red_down.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/menu_move.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_menu_move.png.flat +net.micode.notes.app-main-6\:/layout/note_list.xml=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\layout_note_list.xml.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_yellow_middle.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_yellow_middle.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/edit_yellow.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_edit_yellow.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/edit_title_blue.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_edit_title_blue.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_blue_middle.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_blue_middle.9.png.flat +net.micode.notes.app-main-6\:/drawable-hdpi/list_white_middle.9.png=D\:\\MI_Note\\Notes-master_01\\app\\build\\intermediates\\merged_res\\release\\drawable-hdpi_list_white_middle.9.png.flat diff --git a/src/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zh-rCN/values-zh-rCN.xml b/src/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zh-rCN/values-zh-rCN.xml new file mode 100644 index 0000000..d65e0cc --- /dev/null +++ b/src/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zh-rCN/values-zh-rCN.xml @@ -0,0 +1,108 @@ + + + + 短信 + 邮件 + + + %1$s 条符合“%2$s”的搜索结果 + + 确认删除文件夹及所包含的便签吗? + 确认要删除该条便签吗? + 确认要删除所选的 %d 条便签吗? + 删除 + 便签 + 便签2x2 + 便签4x4 + 删除 + 通话便签 + 取消 + 设置 + 成功删除提醒 + 不能为空便签设置闹钟提醒 + 不能将空便签发送到桌面 + 要查看的便签不存在 + 导出文本时发生错误,请检查SD卡 + SD卡被占用,不能操作 + 同步已取消 + 同步失败,发生内部错误 + 同步失败,请检查网络和帐号设置 + 导出失败 + 文件夹 %1$s 已存在,请重新命名 + yyyyMMdd + MM月dd日 kk:mm + 已将文本文件(%1$s)输出至SD卡(%2$s)目录 + 已将所选 %1$d 条便签移到 %2$s 文件夹 + 请输入名称 + 已添加到桌面 + 提醒我 + 新建文件夹 + 删除 + 取消全选 + 导出文本 + 修改文件夹名称 + 刪除文件夹 + 查看文件夹 + + 正常 + 文字大小 + + 超大 + 进入清单模式 + 移动到文件夹 + 上一级文件夹 + 退出清单模式 + 删除提醒 + 搜索 + 全选 + 没有选中项,操作无效 + 选中了 %d 项 + 发送到桌面 + 设置 + 分享 + 同步 + 取消同步 + 选择文件夹 + 已过期 + 发送邮件 + 打开地图 + 呼叫电话 + 浏览网页 + 查看 + 知道了 + 新建便签 + ... + 与google task同步便签记录 + 同步账号 + 添加账号 + 新建便签背景颜色随机 + 取消同步 + 立即同步 + 当前帐号 %1$s + 如更换同步帐号,过去的帐号同步信息将被清空,再次切换的同时可能会造成数据重复 + 请选择google帐号,便签将与该帐号的google task内容同步。 + 同步便签 + 上次同步于 %1$s + 取消 + 更换账号 + 删除账号 + 设置 + 正在同步中,不能修改同步帐号 + 同步帐号已设置为%1$s + 便签 + 搜索便签 + 正在搜索便签 + 便签中的文字 + 创建提醒 + 导出成功 + 与%1$s同步成功 + 正在获取服务器便签列表... + 登录%1$s... + 正在同步本地便签... + 同步已取消 + 同步失败 + 同步成功 + 同步便签... + 没有关联内容,点击新建便签。 + 访客模式下,便签内容不可见 + \ No newline at end of file diff --git a/src/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zh-rTW/values-zh-rTW.xml b/src/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zh-rTW/values-zh-rTW.xml new file mode 100644 index 0000000..226b5bc --- /dev/null +++ b/src/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zh-rTW/values-zh-rTW.xml @@ -0,0 +1,108 @@ + + + + 短信 + 郵件 + + + %1$s 條符合”%2$s“的搜尋結果 + + 確認刪除檔夾及所包含的便簽嗎? + 确认要删除該條便籤嗎? + 确认要刪除所選的 %d 條便籤嗎? + 刪除 + 便簽 + 便簽2x2 + 便簽4x4 + 刪除 + 通話便籤 + 取消 + 設置 + 成功刪除提醒 + 不能爲空便籤設置鬧鐘提醒 + 不能將空便籤發送到桌面 + 要查看的便籤不存在 + 導出TXT時發生錯誤,請檢查SD卡 + SD卡被佔用,不能操作 + 同步已取消 + 同步失敗,發生內部錯誤 + 同步失敗,請檢查網絡和帳號設置 + 導出失敗 + 文件夾 %1$s 已存在,請重新命名 + yyyyMMdd + MM月dd日 kk:mm + 已將文本文件(%1$s)導出至SD(%2$s)目錄 + 已將所選 %1$d 便籤移到 %2$s 文件夾 + 請輸入名稱 + 已添加到桌面 + 提醒我 + 新建文件夾 + 刪除 + 取消全選 + 導出文本 + 修改文件夾名稱 + 刪除文件夾 + 查看文件夾 + + 正常 + 文字大小 + + 超大 + 進入清單模式 + 移動到文件夾 + 上一級文件夾 + 退出清單模式 + 刪除提醒 + 搜尋 + 全選 + 沒有選中項,操作無效 + 選中了 %d 項 + 發送到桌面 + 設置 + 分享 + 同步 + 取消同步 + 選擇文件夾 + 已過期 + 發送郵件 + 打開地圖 + 呼叫電話 + 浏覽網頁 + 查看 + 知道了 + 新建便簽 + ... + 与google task同步便簽記錄 + 同步賬號 + 添加賬號 + 新建便籤背景顏色隨機 + 取消同步 + 立即同步 + 當前帳號 %1$s + 如更換同步帳號,過去的帳號同步信息將被清空,再次切換的同時可能會造成數據重復 + 請選擇google帳號,便簽將與該帳號的google task內容同步。 + 同步便簽 + 上次同步于 %1$s + 取消 + 更換賬號 + 刪除賬號 + 設置 + 正在同步中,不能修改同步帳號 + 同步帳號已設置為%1$s + 便籤 + 搜索便籤 + 正在搜索便籤 + 便籤中的文字 + 創建提醒 + 導出成功 + 與%1$s同步成功 + 正在獲取服務器便籤列表... + 登陸%1$s... + 正在同步本地便籤... + 同步已取消 + 同步失敗 + 同步成功 + 同步便簽... + 沒有關聯內容,點擊新建便簽。 + 訪客模式下,便籤內容不可見 + \ No newline at end of file diff --git a/src/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values/values.xml b/src/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values/values.xml new file mode 100644 index 0000000..c05f15a --- /dev/null +++ b/src/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values/values.xml @@ -0,0 +1,169 @@ + + + + -%s + --%s + --%s + --%s + + + Messaging + Email + + #335b5b5b + 26sp + 20sp + 17sp + 14sp + 33sp + + %1$s result for \"%2$s\" + + %1$s results for \"%2$s\" + + Confirm to delete folder and its notes? + Confirm to delete this note? + Confirm to delete the selected %d notes? + Delete selected notes + Notes + Notes 2x2 + Notes 4x4 + Delete + Call notes + cancel + set + Delete reminder successfully + Sorry, can not set clock on empty note + Sorry, can not send and empty note to home + The note is not exist + Export failed, please check SD card + SD card busy, not available now + Sync is canceled + Sync failed, internal error occurs + Sync failed, please check network and account settings + Export fail + notes_%s.txt + /MIUI/notes/ + The folder %1$s exist, please rename + yyyyMMdd + MMMd kk:mm + Export text file (%1$s) to SD (%2$s) directory + (%d) + Have moved selected %1$d notes to %2$s folder + Input name + Note added to home + Remind me + New Folder + Delete + Deselect all + Export text + Change folder name + Delete folder + View folder + Large + Medium + Font size + Small + Super + Enter check list + Move to folder + Parent folder + Leave check list + Delete reminder + Search + Select all + Nothing selected, the operation is invalid + %d selected + Send to home + Settings + Share + Sync + Cancel syncing + Select folder + Expired + Send email + Open map + Call + Browse web + Take a look + Got it + Add note + ... + Sync notes with google task + Sync account + Add account + New note background color random + Cancel syncing + Sync immediately + Current account %1$s + All sync related information will be deleted, which may result in duplicated items sometime + Please select a google account. Local notes will be synced with google task. + Sync notes + Last sync time %1$s + yyyy-MM-dd hh:mm:ss + Cancel + Change sync account + Remove sync account + Settings + Cannot change the account because sync is in progress + %1$s has been set as the sync account + Notes + Search notes + Searching Notes + Text in your notes + Set reminder + Export successful + Sync is successful with account %1$s + Getting remote note list... + Logging into %1$s... + Synchronize local notes with Google Task... + Sync is canceled + Sync is failed + Sync is successful + Syncing notes... + No associated note found, click to create associated note. + Privacy mode,can not see note content + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/build/intermediates/incremental/release/mergeReleaseResources/merger.xml b/src/app/build/intermediates/incremental/release/mergeReleaseResources/merger.xml new file mode 100644 index 0000000..f952d07 --- /dev/null +++ b/src/app/build/intermediates/incremental/release/mergeReleaseResources/merger.xml @@ -0,0 +1,56 @@ + + + -%s + --%s + --%s + --%s + + Messaging + Email + #335b5b5b33sp26sp20sp17sp14spNotesNotes 2x2Notes 4x4No associated note found, click to create associated note.Privacy mode,can not see note content...Add noteDelete reminder successfullySet reminderExpiredyyyyMMddMMMd kk:mmGot itTake a lookCallSend emailBrowse webOpen map/MIUI/notes/notes_%s.txt(%d)New FolderExport textSyncCancel syncingSettingsSearchDeleteMove to folder%d selectedNothing selected, the operation is invalidSelect allDeselect allFont sizeSmallMediumLargeSuperEnter check listLeave check listView folderDelete folderChange folder nameThe folder %1$s exist, please renameShareSend to homeRemind meDelete reminderSelect folderParent folderNote added to homeConfirm to delete folder and its notes?Delete selected notesConfirm to delete the selected %d notes?Confirm to delete this note?Have moved selected %1$d notes to %2$s folderSD card busy, not available nowExport failed, please check SD cardThe note is not existSorry, can not set clock on empty noteSorry, can not send and empty note to homeExport successfulExport failExport text file (%1$s) to SD (%2$s) directorySyncing notes...Sync is successfulSync is failedSync is canceledSync is successful with account %1$sSync failed, please check network and account settingsSync failed, internal error occursSync is canceledLogging into %1$s...Getting remote note list...Synchronize local notes with Google Task...SettingsSync accountSync notes with google taskLast sync time %1$syyyy-MM-dd hh:mm:ssAdd accountChange sync accountRemove sync accountCancelSync immediatelyCancel syncingCurrent account %1$sAll sync related information will be deleted, which may result in duplicated items sometimeSync notesPlease select a google account. Local notes will be synced with google task.Cannot change the account because sync is in progress%1$s has been set as the sync accountNew note background color randomDeleteCall notesInput nameSearching NotesSearch notesText in your notesNotessetcancel + %1$s result for \"%2$s\" + + %1$s results for \"%2$s\" + + 短信 + 邮件 + 便签便签2x2便签4x4没有关联内容,点击新建便签。访客模式下,便签内容不可见...新建便签成功删除提醒创建提醒已过期yyyyMMddMM月dd日 kk:mm知道了查看呼叫电话发送邮件浏览网页打开地图新建文件夹导出文本同步取消同步设置搜索删除移动到文件夹选中了 %d 项没有选中项,操作无效全选取消全选文字大小正常超大进入清单模式退出清单模式查看文件夹刪除文件夹修改文件夹名称文件夹 %1$s 已存在,请重新命名分享发送到桌面提醒我删除提醒选择文件夹上一级文件夹已添加到桌面删除确认要删除所选的 %d 条便签吗?确认要删除该条便签吗?确认删除文件夹及所包含的便签吗?已将所选 %1$d 条便签移到 %2$s 文件夹SD卡被占用,不能操作导出文本时发生错误,请检查SD卡要查看的便签不存在不能为空便签设置闹钟提醒不能将空便签发送到桌面导出成功导出失败已将文本文件(%1$s)输出至SD卡(%2$s)目录同步便签...同步成功同步失败同步已取消与%1$s同步成功同步失败,请检查网络和帐号设置同步失败,发生内部错误同步已取消登录%1$s...正在获取服务器便签列表...正在同步本地便签...设置同步账号与google task同步便签记录上次同步于 %1$s添加账号更换账号删除账号取消立即同步取消同步当前帐号 %1$s如更换同步帐号,过去的帐号同步信息将被清空,再次切换的同时可能会造成数据重复同步便签请选择google帐号,便签将与该帐号的google task内容同步。正在同步中,不能修改同步帐号同步帐号已设置为%1$s新建便签背景颜色随机删除通话便签请输入名称正在搜索便签搜索便签便签中的文字便签设置取消 + %1$s 条符合“%2$s”的搜索结果 + + 短信 + 郵件 + 便簽便簽2x2便簽4x4沒有關聯內容,點擊新建便簽。訪客模式下,便籤內容不可見...新建便簽成功刪除提醒創建提醒已過期yyyyMMddMM月dd日 kk:mm知道了查看呼叫電話發送郵件浏覽網頁打開地圖已將所選 %1$d 便籤移到 %2$s 文件夾新建文件夾導出文本同步取消同步設置搜尋刪除移動到文件夾選中了 %d 項沒有選中項,操作無效全選取消全選文字大小正常超大進入清單模式退出清單模式查看文件夾刪除文件夾修改文件夾名稱文件夾 %1$s 已存在,請重新命名分享發送到桌面提醒我刪除提醒選擇文件夾上一級文件夾已添加到桌面刪除确认要刪除所選的 %d 條便籤嗎?确认要删除該條便籤嗎?確認刪除檔夾及所包含的便簽嗎?SD卡被佔用,不能操作導出TXT時發生錯誤,請檢查SD卡要查看的便籤不存在不能爲空便籤設置鬧鐘提醒不能將空便籤發送到桌面導出成功導出失敗已將文本文件(%1$s)導出至SD(%2$s)目錄同步便簽...同步成功同步失敗同步已取消與%1$s同步成功同步失敗,請檢查網絡和帳號設置同步失敗,發生內部錯誤同步已取消登陸%1$s...正在獲取服務器便籤列表...正在同步本地便籤...設置同步賬號与google task同步便簽記錄上次同步于 %1$s添加賬號更換賬號刪除賬號取消立即同步取消同步當前帳號 %1$s如更換同步帳號,過去的帳號同步信息將被清空,再次切換的同時可能會造成數據重復同步便簽請選擇google帳號,便簽將與該帳號的google task內容同步。正在同步中,不能修改同步帳號同步帳號已設置為%1$s新建便籤背景顏色隨機刪除通話便籤請輸入名稱正在搜索便籤搜索便籤便籤中的文字便籤設置取消 + %1$s 條符合”%2$s“的搜尋結果 + \ No newline at end of file diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/BuildConfig.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/BuildConfig.class new file mode 100644 index 0000000..f98637b Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/BuildConfig.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Contact.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Contact.class new file mode 100644 index 0000000..6e28b50 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Contact.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$CallNote.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$CallNote.class new file mode 100644 index 0000000..534af6e Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$CallNote.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$DataColumns.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$DataColumns.class new file mode 100644 index 0000000..4be9a30 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$DataColumns.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$DataConstants.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$DataConstants.class new file mode 100644 index 0000000..0d9547b Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$DataConstants.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$NoteColumns.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$NoteColumns.class new file mode 100644 index 0000000..37c051d Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$NoteColumns.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$TextNote.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$TextNote.class new file mode 100644 index 0000000..a78b61a Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$TextNote.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes.class new file mode 100644 index 0000000..bdc56b1 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper$TABLE.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper$TABLE.class new file mode 100644 index 0000000..56d65f1 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper$TABLE.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper.class new file mode 100644 index 0000000..1f3ea0b Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class new file mode 100644 index 0000000..976265d Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/MetaData.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/MetaData.class new file mode 100644 index 0000000..0eccddf Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/MetaData.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/Node.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/Node.class new file mode 100644 index 0000000..54ec72a Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/Node.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlData.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlData.class new file mode 100644 index 0000000..49f64fc Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlData.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlNote.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlNote.class new file mode 100644 index 0000000..19d1ee5 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlNote.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/Task.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/Task.class new file mode 100644 index 0000000..d4e7deb Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/Task.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/TaskList.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/TaskList.class new file mode 100644 index 0000000..9d06aa6 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/TaskList.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/ActionFailureException.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/ActionFailureException.class new file mode 100644 index 0000000..3c7e5b6 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/ActionFailureException.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/NetworkFailureException.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/NetworkFailureException.class new file mode 100644 index 0000000..06827bd Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/NetworkFailureException.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskASyncTask$1.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskASyncTask$1.class new file mode 100644 index 0000000..b11e1dc Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskASyncTask$1.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskASyncTask$OnCompleteListener.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskASyncTask$OnCompleteListener.class new file mode 100644 index 0000000..fd895e5 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskASyncTask$OnCompleteListener.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskASyncTask.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskASyncTask.class new file mode 100644 index 0000000..9efbe31 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskASyncTask.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskClient.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskClient.class new file mode 100644 index 0000000..f305e18 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskClient.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskManager.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskManager.class new file mode 100644 index 0000000..f105e8c Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskManager.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskSyncService$1.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskSyncService$1.class new file mode 100644 index 0000000..cecf07f Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskSyncService$1.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskSyncService.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskSyncService.class new file mode 100644 index 0000000..5d5ada0 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/remote/GTaskSyncService.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note$NoteData.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note$NoteData.class new file mode 100644 index 0000000..30318fc Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note$NoteData.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note.class new file mode 100644 index 0000000..bbbea2e Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.class new file mode 100644 index 0000000..46734e7 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class new file mode 100644 index 0000000..a44b3a2 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils$TextExport.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils$TextExport.class new file mode 100644 index 0000000..bfb671c Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils$TextExport.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils.class new file mode 100644 index 0000000..ed4ac8e Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/DataUtils.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/DataUtils.class new file mode 100644 index 0000000..fc1d9a2 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/DataUtils.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/GTaskStringUtils.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/GTaskStringUtils.class new file mode 100644 index 0000000..d4500ff Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/GTaskStringUtils.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteBgResources.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteBgResources.class new file mode 100644 index 0000000..f1053bc Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteBgResources.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteItemBgResources.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteItemBgResources.class new file mode 100644 index 0000000..34b5c02 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteItemBgResources.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$TextAppearanceResources.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$TextAppearanceResources.class new file mode 100644 index 0000000..1714fc2 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$TextAppearanceResources.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$WidgetBgResources.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$WidgetBgResources.class new file mode 100644 index 0000000..595f36d Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$WidgetBgResources.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser.class new file mode 100644 index 0000000..7ded6f4 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class new file mode 100644 index 0000000..79598f6 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmInitReceiver.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmInitReceiver.class new file mode 100644 index 0000000..124eb6a Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmInitReceiver.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmReceiver.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmReceiver.class new file mode 100644 index 0000000..e8e0e45 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmReceiver.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$1.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$1.class new file mode 100644 index 0000000..c3ee8d8 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$1.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$2.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$2.class new file mode 100644 index 0000000..4812c99 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$2.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$3.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$3.class new file mode 100644 index 0000000..0754ffc Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$3.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$4.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$4.class new file mode 100644 index 0000000..dc60fe0 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$4.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.class new file mode 100644 index 0000000..6597282 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker.class new file mode 100644 index 0000000..0784dad Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog$1.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog$1.class new file mode 100644 index 0000000..75a9a17 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog$1.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.class new file mode 100644 index 0000000..fa573a1 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog.class new file mode 100644 index 0000000..81d6513 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu$1.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu$1.class new file mode 100644 index 0000000..66c9e6f Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu$1.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu.class new file mode 100644 index 0000000..86cabc1 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class new file mode 100644 index 0000000..615cdba Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter.class new file mode 100644 index 0000000..354ae8e Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class new file mode 100644 index 0000000..ec2c4f0 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class new file mode 100644 index 0000000..715563c Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class new file mode 100644 index 0000000..c456497 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$4.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$4.class new file mode 100644 index 0000000..eedbe67 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$4.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$5.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$5.class new file mode 100644 index 0000000..647e3a8 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$5.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class new file mode 100644 index 0000000..d806b4a Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class new file mode 100644 index 0000000..7b28b9c Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$1.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$1.class new file mode 100644 index 0000000..6e0f050 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$1.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.class new file mode 100644 index 0000000..1a3310a Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText.class new file mode 100644 index 0000000..93cd34b Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteItemData.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteItemData.class new file mode 100644 index 0000000..fea6568 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteItemData.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class new file mode 100644 index 0000000..e56515b Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class new file mode 100644 index 0000000..b11277d Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class new file mode 100644 index 0000000..828de9a Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class new file mode 100644 index 0000000..aaacef3 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class new file mode 100644 index 0000000..5e873cf Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class new file mode 100644 index 0000000..171f987 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class new file mode 100644 index 0000000..ec22b22 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class new file mode 100644 index 0000000..8b12d00 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class new file mode 100644 index 0000000..ebef777 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class new file mode 100644 index 0000000..b1e1063 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class new file mode 100644 index 0000000..b40ced9 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class new file mode 100644 index 0000000..c611459 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class new file mode 100644 index 0000000..249af2c Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class new file mode 100644 index 0000000..012efc4 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class new file mode 100644 index 0000000..80d68f0 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class new file mode 100644 index 0000000..c0ac39f Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class new file mode 100644 index 0000000..d1c19ed Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class new file mode 100644 index 0000000..5d8717b Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class new file mode 100644 index 0000000..b58eac3 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListItem.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListItem.class new file mode 100644 index 0000000..0d4836a Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListItem.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class new file mode 100644 index 0000000..7598ed0 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$2.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$2.class new file mode 100644 index 0000000..573ba34 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$2.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$3.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$3.class new file mode 100644 index 0000000..a1c7178 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$3.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$4.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$4.class new file mode 100644 index 0000000..c01fcae Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$4.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$5.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$5.class new file mode 100644 index 0000000..d7027b9 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$5.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$6.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$6.class new file mode 100644 index 0000000..eb4eff7 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$6.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$7.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$7.class new file mode 100644 index 0000000..245633b Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$7.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$8.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$8.class new file mode 100644 index 0000000..bcc1f6d Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$8.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class new file mode 100644 index 0000000..3b21f15 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity.class new file mode 100644 index 0000000..5361b59 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider.class new file mode 100644 index 0000000..9bfa2a5 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_2x.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_2x.class new file mode 100644 index 0000000..e33d1c0 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_2x.class differ diff --git a/src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_4x.class b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_4x.class new file mode 100644 index 0000000..e315716 Binary files /dev/null and b/src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_4x.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/BuildConfig.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/BuildConfig.class new file mode 100644 index 0000000..18da96c Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/BuildConfig.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Contact.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Contact.class new file mode 100644 index 0000000..6e28b50 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Contact.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes$CallNote.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes$CallNote.class new file mode 100644 index 0000000..534af6e Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes$CallNote.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes$DataColumns.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes$DataColumns.class new file mode 100644 index 0000000..4be9a30 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes$DataColumns.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes$DataConstants.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes$DataConstants.class new file mode 100644 index 0000000..0d9547b Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes$DataConstants.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes$NoteColumns.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes$NoteColumns.class new file mode 100644 index 0000000..37c051d Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes$NoteColumns.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes$TextNote.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes$TextNote.class new file mode 100644 index 0000000..a78b61a Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes$TextNote.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes.class new file mode 100644 index 0000000..bdc56b1 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/Notes.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/NotesDatabaseHelper$TABLE.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/NotesDatabaseHelper$TABLE.class new file mode 100644 index 0000000..56d65f1 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/NotesDatabaseHelper$TABLE.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/NotesDatabaseHelper.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/NotesDatabaseHelper.class new file mode 100644 index 0000000..1f3ea0b Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/NotesDatabaseHelper.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/NotesProvider.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/NotesProvider.class new file mode 100644 index 0000000..976265d Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/data/NotesProvider.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/MetaData.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/MetaData.class new file mode 100644 index 0000000..0eccddf Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/MetaData.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/Node.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/Node.class new file mode 100644 index 0000000..54ec72a Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/Node.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/SqlData.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/SqlData.class new file mode 100644 index 0000000..49f64fc Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/SqlData.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/SqlNote.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/SqlNote.class new file mode 100644 index 0000000..19d1ee5 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/SqlNote.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/Task.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/Task.class new file mode 100644 index 0000000..d4e7deb Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/Task.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/TaskList.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/TaskList.class new file mode 100644 index 0000000..9d06aa6 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/data/TaskList.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/exception/ActionFailureException.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/exception/ActionFailureException.class new file mode 100644 index 0000000..3c7e5b6 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/exception/ActionFailureException.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/exception/NetworkFailureException.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/exception/NetworkFailureException.class new file mode 100644 index 0000000..06827bd Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/exception/NetworkFailureException.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskASyncTask$1.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskASyncTask$1.class new file mode 100644 index 0000000..b11e1dc Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskASyncTask$1.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskASyncTask$OnCompleteListener.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskASyncTask$OnCompleteListener.class new file mode 100644 index 0000000..fd895e5 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskASyncTask$OnCompleteListener.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskASyncTask.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskASyncTask.class new file mode 100644 index 0000000..9efbe31 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskASyncTask.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskClient.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskClient.class new file mode 100644 index 0000000..f305e18 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskClient.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskManager.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskManager.class new file mode 100644 index 0000000..f105e8c Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskManager.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskSyncService$1.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskSyncService$1.class new file mode 100644 index 0000000..cecf07f Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskSyncService$1.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskSyncService.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskSyncService.class new file mode 100644 index 0000000..5d5ada0 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/gtask/remote/GTaskSyncService.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/model/Note$NoteData.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/model/Note$NoteData.class new file mode 100644 index 0000000..30318fc Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/model/Note$NoteData.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/model/Note.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/model/Note.class new file mode 100644 index 0000000..bbbea2e Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/model/Note.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.class new file mode 100644 index 0000000..46734e7 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/model/WorkingNote.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/model/WorkingNote.class new file mode 100644 index 0000000..e9f5b68 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/model/WorkingNote.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/BackupUtils$TextExport.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/BackupUtils$TextExport.class new file mode 100644 index 0000000..bfb671c Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/BackupUtils$TextExport.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/BackupUtils.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/BackupUtils.class new file mode 100644 index 0000000..ed4ac8e Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/BackupUtils.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/DataUtils.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/DataUtils.class new file mode 100644 index 0000000..fc1d9a2 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/DataUtils.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/GTaskStringUtils.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/GTaskStringUtils.class new file mode 100644 index 0000000..d4500ff Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/GTaskStringUtils.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/ResourceParser$NoteBgResources.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/ResourceParser$NoteBgResources.class new file mode 100644 index 0000000..f1053bc Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/ResourceParser$NoteBgResources.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/ResourceParser$NoteItemBgResources.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/ResourceParser$NoteItemBgResources.class new file mode 100644 index 0000000..34b5c02 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/ResourceParser$NoteItemBgResources.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/ResourceParser$TextAppearanceResources.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/ResourceParser$TextAppearanceResources.class new file mode 100644 index 0000000..1714fc2 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/ResourceParser$TextAppearanceResources.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/ResourceParser$WidgetBgResources.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/ResourceParser$WidgetBgResources.class new file mode 100644 index 0000000..595f36d Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/ResourceParser$WidgetBgResources.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/ResourceParser.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/ResourceParser.class new file mode 100644 index 0000000..7ded6f4 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/tool/ResourceParser.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/AlarmAlertActivity.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/AlarmAlertActivity.class new file mode 100644 index 0000000..79598f6 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/AlarmAlertActivity.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/AlarmInitReceiver.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/AlarmInitReceiver.class new file mode 100644 index 0000000..124eb6a Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/AlarmInitReceiver.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/AlarmReceiver.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/AlarmReceiver.class new file mode 100644 index 0000000..e8e0e45 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/AlarmReceiver.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker$1.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker$1.class new file mode 100644 index 0000000..c3ee8d8 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker$1.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker$2.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker$2.class new file mode 100644 index 0000000..4812c99 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker$2.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker$3.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker$3.class new file mode 100644 index 0000000..0754ffc Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker$3.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker$4.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker$4.class new file mode 100644 index 0000000..dc60fe0 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker$4.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.class new file mode 100644 index 0000000..6597282 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker.class new file mode 100644 index 0000000..0784dad Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePicker.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePickerDialog$1.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePickerDialog$1.class new file mode 100644 index 0000000..75a9a17 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePickerDialog$1.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.class new file mode 100644 index 0000000..fa573a1 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePickerDialog.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePickerDialog.class new file mode 100644 index 0000000..81d6513 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DateTimePickerDialog.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DropdownMenu$1.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DropdownMenu$1.class new file mode 100644 index 0000000..66c9e6f Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DropdownMenu$1.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DropdownMenu.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DropdownMenu.class new file mode 100644 index 0000000..86cabc1 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/DropdownMenu.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class new file mode 100644 index 0000000..615cdba Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/FoldersListAdapter.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/FoldersListAdapter.class new file mode 100644 index 0000000..354ae8e Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/FoldersListAdapter.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity$1.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity$1.class new file mode 100644 index 0000000..e587266 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity$1.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity$2.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity$2.class new file mode 100644 index 0000000..470d0ec Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity$2.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity$3.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity$3.class new file mode 100644 index 0000000..1aec744 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity$3.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity$4.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity$4.class new file mode 100644 index 0000000..73edd9c Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity$4.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class new file mode 100644 index 0000000..36d64dd Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity.class new file mode 100644 index 0000000..703de1e Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditActivity.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditText$1.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditText$1.class new file mode 100644 index 0000000..6e0f050 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditText$1.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.class new file mode 100644 index 0000000..1a3310a Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditText.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditText.class new file mode 100644 index 0000000..93cd34b Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteEditText.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteItemData.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteItemData.class new file mode 100644 index 0000000..fea6568 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NoteItemData.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$1.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$1.class new file mode 100644 index 0000000..e56515b Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$1.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$2.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$2.class new file mode 100644 index 0000000..b11277d Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$2.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$3.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$3.class new file mode 100644 index 0000000..828de9a Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$3.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$4.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$4.class new file mode 100644 index 0000000..aaacef3 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$4.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$5.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$5.class new file mode 100644 index 0000000..5e873cf Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$5.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$6.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$6.class new file mode 100644 index 0000000..171f987 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$6.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$7.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$7.class new file mode 100644 index 0000000..ec22b22 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$7.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$8.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$8.class new file mode 100644 index 0000000..8b12d00 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$8.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$9.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$9.class new file mode 100644 index 0000000..ebef777 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$9.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class new file mode 100644 index 0000000..b1e1063 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class new file mode 100644 index 0000000..b40ced9 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class new file mode 100644 index 0000000..c611459 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class new file mode 100644 index 0000000..249af2c Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class new file mode 100644 index 0000000..012efc4 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class new file mode 100644 index 0000000..80d68f0 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class new file mode 100644 index 0000000..c0ac39f Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity.class new file mode 100644 index 0000000..d1c19ed Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListActivity.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class new file mode 100644 index 0000000..5d8717b Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListAdapter.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListAdapter.class new file mode 100644 index 0000000..b58eac3 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListAdapter.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListItem.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListItem.class new file mode 100644 index 0000000..0d4836a Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesListItem.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class new file mode 100644 index 0000000..7598ed0 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$2.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$2.class new file mode 100644 index 0000000..573ba34 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$2.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$3.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$3.class new file mode 100644 index 0000000..a1c7178 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$3.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$4.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$4.class new file mode 100644 index 0000000..c01fcae Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$4.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$5.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$5.class new file mode 100644 index 0000000..d7027b9 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$5.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$6.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$6.class new file mode 100644 index 0000000..eb4eff7 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$6.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$7.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$7.class new file mode 100644 index 0000000..245633b Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$7.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$8.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$8.class new file mode 100644 index 0000000..bcc1f6d Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$8.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class new file mode 100644 index 0000000..3b21f15 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity.class new file mode 100644 index 0000000..5361b59 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/ui/NotesPreferenceActivity.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/widget/NoteWidgetProvider.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/widget/NoteWidgetProvider.class new file mode 100644 index 0000000..9bfa2a5 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/widget/NoteWidgetProvider.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/widget/NoteWidgetProvider_2x.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/widget/NoteWidgetProvider_2x.class new file mode 100644 index 0000000..e33d1c0 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/widget/NoteWidgetProvider_2x.class differ diff --git a/src/app/build/intermediates/javac/release/classes/net/micode/notes/widget/NoteWidgetProvider_4x.class b/src/app/build/intermediates/javac/release/classes/net/micode/notes/widget/NoteWidgetProvider_4x.class new file mode 100644 index 0000000..e315716 Binary files /dev/null and b/src/app/build/intermediates/javac/release/classes/net/micode/notes/widget/NoteWidgetProvider_4x.class differ diff --git a/src/app/build/intermediates/lint-cache/lint-cache-version.txt b/src/app/build/intermediates/lint-cache/lint-cache-version.txt new file mode 100644 index 0000000..5246384 --- /dev/null +++ b/src/app/build/intermediates/lint-cache/lint-cache-version.txt @@ -0,0 +1 @@ +Cache for Android Lint30.4.2 diff --git a/src/app/build/intermediates/lint_vital_intermediate_text_report/release/lint-results-release.txt b/src/app/build/intermediates/lint_vital_intermediate_text_report/release/lint-results-release.txt new file mode 100644 index 0000000..1cb7b61 --- /dev/null +++ b/src/app/build/intermediates/lint_vital_intermediate_text_report/release/lint-results-release.txt @@ -0,0 +1,23 @@ +D:\MI_Note\Notes-master_01\app\build.gradle:11: Error: Google Play requires that apps target API level 31 or higher. + [ExpiredTargetSdkVersion] + targetSdkVersion 14 + ~~~~~~~~~~~~~~~~~~~ + + Explanation for issues of type "ExpiredTargetSdkVersion": + As of the second half of 2018, Google Play requires that new apps and app + updates target API level 26 or higher. + + Configuring your app to target a recent API level ensures that users + benefit from significant security and performance improvements, while still + allowing your app to run on older Android versions (down to the + minSdkVersion). + + To update your targetSdkVersion, follow the steps from "Meeting Google Play + requirements for target API level", + https://developer.android.com/distribute/best-practices/develop/target-sdk. + html + + https://support.google.com/googleplay/android-developer/answer/113469#targetsdk + https://developer.android.com/distribute/best-practices/develop/target-sdk.html + +1 errors, 0 warnings diff --git a/src/app/build/intermediates/lint_vital_partial_results/release/out/lint-provisional-release.xml b/src/app/build/intermediates/lint_vital_partial_results/release/out/lint-provisional-release.xml new file mode 100644 index 0000000..a063537 --- /dev/null +++ b/src/app/build/intermediates/lint_vital_partial_results/release/out/lint-provisional-release.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/src/app/build/intermediates/lint_vital_return_value/release/return-value-release.txt b/src/app/build/intermediates/lint_vital_return_value/release/return-value-release.txt new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/src/app/build/intermediates/lint_vital_return_value/release/return-value-release.txt @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/src/app/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt b/src/app/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt new file mode 100644 index 0000000..6e1b896 --- /dev/null +++ b/src/app/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt @@ -0,0 +1,271 @@ +1 +2 +17 +21 +22 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:5-44 +23 android:minSdkVersion="14" +23-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:15-41 +24 android:targetSdkVersion="14" /> +24-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:5-44 +25 +26 +26-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:25:5-81 +26-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:25:22-78 +27 +27-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:26:5-88 +27-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:26:22-85 +28 +28-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:27:5-67 +28-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:27:22-64 +29 +29-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:28:5-72 +29-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:28:22-69 +30 +30-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:29:5-74 +30-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:29:22-71 +31 +31-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:30:5-80 +31-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:30:22-77 +32 +32-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:31:5-71 +32-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:31:22-68 +33 +33-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:32:5-74 +33-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:32:22-71 +34 +34-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:33:5-81 +34-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:33:22-78 +35 +36 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:35:5-148:19 +37 android:debuggable="true" +38 android:icon="@drawable/icon_app" +38-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:36:9-42 +39 android:label="@string/app_name" +39-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:37:9-41 +40 android:testOnly="true" > +41 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:38:9-50:20 +42 android:name="net.micode.notes.ui.NotesListActivity" +42-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:39:13-49 +43 android:configChanges="keyboardHidden|orientation|screenSize" +43-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:40:13-74 +44 android:label="@string/app_name" +44-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:41:13-45 +45 android:launchMode="singleTop" +45-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:42:13-43 +46 android:theme="@style/NoteTheme" +46-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:43:13-45 +47 android:windowSoftInputMode="adjustPan" > +47-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:44:13-52 +48 +48-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:46:13-49:29 +49 +49-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:47:17-69 +49-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:47:25-66 +50 +51 +51-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:48:17-77 +51-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:48:27-74 +52 +53 +54 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:52:9-80:20 +55 android:name="net.micode.notes.ui.NoteEditActivity" +55-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:53:13-48 +56 android:configChanges="keyboardHidden|orientation|screenSize" +56-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:54:13-74 +57 android:launchMode="singleTop" +57-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:55:13-43 +58 android:theme="@style/NoteTheme" > +58-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:56:13-45 +59 +59-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:58:13-63:29 +60 +60-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:59:17-69 +60-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:59:25-66 +61 +62 +62-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:60:17-76 +62-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:60:27-73 +63 +64 +64-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:17-78 +64-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:23-75 +65 +65-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:17-78 +65-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:23-75 +66 +67 +67-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:65:13-70:29 +68 +68-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:66:17-79 +68-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:66:25-76 +69 +70 +70-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:60:17-76 +70-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:60:27-73 +71 +72 +72-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:17-78 +72-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:23-75 +73 +73-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:17-78 +73-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:23-75 +74 +75 +75-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:72:13-75:29 +76 +76-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:73:17-71 +76-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:73:25-68 +77 +78 +78-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:60:17-76 +78-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:60:27-73 +79 +80 +81 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:77:13-79:54 +82 android:name="android.app.searchable" +82-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:78:17-54 +83 android:resource="@xml/searchable" /> +83-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:79:17-51 +84 +85 +86 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:82:9-85:43 +87 android:name="net.micode.notes.data.NotesProvider" +87-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:83:13-63 +88 android:authorities="micode_notes" +88-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:84:13-47 +89 android:multiprocess="true" /> +89-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:85:13-40 +90 +91 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:87:9-99:20 +92 android:name="net.micode.notes.widget.NoteWidgetProvider_2x" +92-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:88:13-57 +93 android:label="@string/app_widget2x2" > +93-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:89:13-50 +94 +94-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:90:13-94:29 +95 +95-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:91:17-84 +95-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:91:25-81 +96 +96-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:92:17-85 +96-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:92:25-82 +97 +97-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:93:17-85 +97-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:93:25-82 +98 +99 +100 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:96:13-98:58 +101 android:name="android.appwidget.provider" +101-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:97:17-58 +102 android:resource="@xml/widget_2x_info" /> +102-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:98:17-55 +103 +104 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:100:9-113:20 +105 android:name="net.micode.notes.widget.NoteWidgetProvider_4x" +105-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:101:13-57 +106 android:label="@string/app_widget4x4" > +106-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:102:13-50 +107 +107-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:90:13-94:29 +108 +108-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:91:17-84 +108-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:91:25-81 +109 +109-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:92:17-85 +109-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:92:25-82 +110 +110-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:93:17-85 +110-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:93:25-82 +111 +112 +113 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:96:13-98:58 +114 android:name="android.appwidget.provider" +114-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:97:17-58 +115 android:resource="@xml/widget_4x_info" /> +115-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:98:17-55 +116 +117 +117-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:115:9-119:20 +117-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:115:19-55 +118 +118-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:116:13-118:29 +119 +119-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:117:17-79 +119-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:117:25-76 +120 +121 +122 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:121:9-124:20 +123 android:name="net.micode.notes.ui.AlarmReceiver" +123-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:122:13-61 +124 android:process=":remote" > +124-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:123:13-38 +125 +126 +127 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:126:9-131:20 +128 android:name="net.micode.notes.ui.AlarmAlertActivity" +128-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:127:13-50 +129 android:label="@string/app_name" +129-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:128:13-45 +130 android:launchMode="singleInstance" +130-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:129:13-48 +131 android:theme="@android:style/Theme.Holo.Wallpaper.NoTitleBar" > +131-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:130:13-75 +132 +133 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:133:9-138:20 +134 android:name="net.micode.notes.ui.NotesPreferenceActivity" +134-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:134:13-71 +135 android:label="@string/preferences_title" +135-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:135:13-54 +136 android:launchMode="singleTop" +136-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:136:13-43 +137 android:theme="@android:style/Theme.Holo.Light" > +137-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:137:13-60 +138 +139 +140 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:140:9-143:19 +141 android:name="net.micode.notes.gtask.remote.GTaskSyncService" +141-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:141:13-74 +142 android:exported="false" > +142-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:142:13-37 +143 +144 +145 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:145:9-147:52 +146 android:name="android.app.default_searchable" +146-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:146:13-58 +147 android:value=".ui.NoteEditActivity" /> +147-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:147:13-49 +148 +149 +150 diff --git a/src/app/build/intermediates/manifest_merge_blame_file/release/manifest-merger-blame-release-report.txt b/src/app/build/intermediates/manifest_merge_blame_file/release/manifest-merger-blame-release-report.txt new file mode 100644 index 0000000..e206437 --- /dev/null +++ b/src/app/build/intermediates/manifest_merge_blame_file/release/manifest-merger-blame-release-report.txt @@ -0,0 +1,269 @@ +1 +2 +17 +21 +22 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:5-44 +23 android:minSdkVersion="14" +23-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:15-41 +24 android:targetSdkVersion="14" /> +24-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:5-44 +25 +26 +26-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:25:5-81 +26-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:25:22-78 +27 +27-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:26:5-88 +27-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:26:22-85 +28 +28-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:27:5-67 +28-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:27:22-64 +29 +29-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:28:5-72 +29-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:28:22-69 +30 +30-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:29:5-74 +30-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:29:22-71 +31 +31-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:30:5-80 +31-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:30:22-77 +32 +32-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:31:5-71 +32-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:31:22-68 +33 +33-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:32:5-74 +33-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:32:22-71 +34 +34-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:33:5-81 +34-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:33:22-78 +35 +36 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:35:5-148:19 +37 android:icon="@drawable/icon_app" +37-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:36:9-42 +38 android:label="@string/app_name" > +38-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:37:9-41 +39 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:38:9-50:20 +40 android:name="net.micode.notes.ui.NotesListActivity" +40-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:39:13-49 +41 android:configChanges="keyboardHidden|orientation|screenSize" +41-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:40:13-74 +42 android:label="@string/app_name" +42-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:41:13-45 +43 android:launchMode="singleTop" +43-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:42:13-43 +44 android:theme="@style/NoteTheme" +44-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:43:13-45 +45 android:windowSoftInputMode="adjustPan" > +45-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:44:13-52 +46 +46-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:46:13-49:29 +47 +47-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:47:17-69 +47-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:47:25-66 +48 +49 +49-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:48:17-77 +49-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:48:27-74 +50 +51 +52 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:52:9-80:20 +53 android:name="net.micode.notes.ui.NoteEditActivity" +53-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:53:13-48 +54 android:configChanges="keyboardHidden|orientation|screenSize" +54-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:54:13-74 +55 android:launchMode="singleTop" +55-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:55:13-43 +56 android:theme="@style/NoteTheme" > +56-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:56:13-45 +57 +57-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:58:13-63:29 +58 +58-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:59:17-69 +58-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:59:25-66 +59 +60 +60-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:60:17-76 +60-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:60:27-73 +61 +62 +62-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:17-78 +62-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:23-75 +63 +63-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:17-78 +63-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:23-75 +64 +65 +65-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:65:13-70:29 +66 +66-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:66:17-79 +66-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:66:25-76 +67 +68 +68-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:60:17-76 +68-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:60:27-73 +69 +70 +70-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:17-78 +70-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:23-75 +71 +71-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:17-78 +71-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:23-75 +72 +73 +73-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:72:13-75:29 +74 +74-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:73:17-71 +74-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:73:25-68 +75 +76 +76-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:60:17-76 +76-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:60:27-73 +77 +78 +79 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:77:13-79:54 +80 android:name="android.app.searchable" +80-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:78:17-54 +81 android:resource="@xml/searchable" /> +81-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:79:17-51 +82 +83 +84 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:82:9-85:43 +85 android:name="net.micode.notes.data.NotesProvider" +85-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:83:13-63 +86 android:authorities="micode_notes" +86-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:84:13-47 +87 android:multiprocess="true" /> +87-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:85:13-40 +88 +89 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:87:9-99:20 +90 android:name="net.micode.notes.widget.NoteWidgetProvider_2x" +90-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:88:13-57 +91 android:label="@string/app_widget2x2" > +91-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:89:13-50 +92 +92-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:90:13-94:29 +93 +93-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:91:17-84 +93-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:91:25-81 +94 +94-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:92:17-85 +94-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:92:25-82 +95 +95-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:93:17-85 +95-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:93:25-82 +96 +97 +98 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:96:13-98:58 +99 android:name="android.appwidget.provider" +99-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:97:17-58 +100 android:resource="@xml/widget_2x_info" /> +100-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:98:17-55 +101 +102 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:100:9-113:20 +103 android:name="net.micode.notes.widget.NoteWidgetProvider_4x" +103-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:101:13-57 +104 android:label="@string/app_widget4x4" > +104-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:102:13-50 +105 +105-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:90:13-94:29 +106 +106-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:91:17-84 +106-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:91:25-81 +107 +107-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:92:17-85 +107-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:92:25-82 +108 +108-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:93:17-85 +108-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:93:25-82 +109 +110 +111 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:96:13-98:58 +112 android:name="android.appwidget.provider" +112-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:97:17-58 +113 android:resource="@xml/widget_4x_info" /> +113-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:98:17-55 +114 +115 +115-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:115:9-119:20 +115-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:115:19-55 +116 +116-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:116:13-118:29 +117 +117-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:117:17-79 +117-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:117:25-76 +118 +119 +120 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:121:9-124:20 +121 android:name="net.micode.notes.ui.AlarmReceiver" +121-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:122:13-61 +122 android:process=":remote" > +122-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:123:13-38 +123 +124 +125 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:126:9-131:20 +126 android:name="net.micode.notes.ui.AlarmAlertActivity" +126-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:127:13-50 +127 android:label="@string/app_name" +127-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:128:13-45 +128 android:launchMode="singleInstance" +128-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:129:13-48 +129 android:theme="@android:style/Theme.Holo.Wallpaper.NoTitleBar" > +129-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:130:13-75 +130 +131 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:133:9-138:20 +132 android:name="net.micode.notes.ui.NotesPreferenceActivity" +132-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:134:13-71 +133 android:label="@string/preferences_title" +133-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:135:13-54 +134 android:launchMode="singleTop" +134-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:136:13-43 +135 android:theme="@android:style/Theme.Holo.Light" > +135-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:137:13-60 +136 +137 +138 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:140:9-143:19 +139 android:name="net.micode.notes.gtask.remote.GTaskSyncService" +139-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:141:13-74 +140 android:exported="false" > +140-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:142:13-37 +141 +142 +143 D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:145:9-147:52 +144 android:name="android.app.default_searchable" +144-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:146:13-58 +145 android:value=".ui.NoteEditActivity" /> +145-->D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:147:13-49 +146 +147 +148 diff --git a/src/app/build/intermediates/merged_java_res/debug/base.jar b/src/app/build/intermediates/merged_java_res/debug/base.jar new file mode 100644 index 0000000..15cb0ec Binary files /dev/null and b/src/app/build/intermediates/merged_java_res/debug/base.jar differ diff --git a/src/app/build/intermediates/merged_java_res/release/base.jar b/src/app/build/intermediates/merged_java_res/release/base.jar new file mode 100644 index 0000000..15cb0ec Binary files /dev/null and b/src/app/build/intermediates/merged_java_res/release/base.jar differ diff --git a/src/app/build/intermediates/merged_manifest/debug/AndroidManifest.xml b/src/app/build/intermediates/merged_manifest/debug/AndroidManifest.xml new file mode 100644 index 0000000..5ffd361 --- /dev/null +++ b/src/app/build/intermediates/merged_manifest/debug/AndroidManifest.xml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/build/intermediates/merged_manifest/release/AndroidManifest.xml b/src/app/build/intermediates/merged_manifest/release/AndroidManifest.xml new file mode 100644 index 0000000..fbacd2a --- /dev/null +++ b/src/app/build/intermediates/merged_manifest/release/AndroidManifest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml b/src/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml new file mode 100644 index 0000000..5ffd361 --- /dev/null +++ b/src/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/build/intermediates/merged_manifests/debug/output-metadata.json b/src/app/build/intermediates/merged_manifests/debug/output-metadata.json new file mode 100644 index 0000000..a56d03a --- /dev/null +++ b/src/app/build/intermediates/merged_manifests/debug/output-metadata.json @@ -0,0 +1,20 @@ +{ + "version": 3, + "artifactType": { + "type": "MERGED_MANIFESTS", + "kind": "Directory" + }, + "applicationId": "net.micode.notes", + "variantName": "debug", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 1, + "versionName": "0.1", + "outputFile": "AndroidManifest.xml" + } + ], + "elementType": "File" +} \ No newline at end of file diff --git a/src/app/build/intermediates/merged_manifests/release/AndroidManifest.xml b/src/app/build/intermediates/merged_manifests/release/AndroidManifest.xml new file mode 100644 index 0000000..fbacd2a --- /dev/null +++ b/src/app/build/intermediates/merged_manifests/release/AndroidManifest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/build/intermediates/merged_manifests/release/output-metadata.json b/src/app/build/intermediates/merged_manifests/release/output-metadata.json new file mode 100644 index 0000000..dba4e33 --- /dev/null +++ b/src/app/build/intermediates/merged_manifests/release/output-metadata.json @@ -0,0 +1,20 @@ +{ + "version": 3, + "artifactType": { + "type": "MERGED_MANIFESTS", + "kind": "Directory" + }, + "applicationId": "net.micode.notes", + "variantName": "release", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 1, + "versionName": "0.1", + "outputFile": "AndroidManifest.xml" + } + ], + "elementType": "File" +} \ No newline at end of file diff --git a/src/app/build/intermediates/merged_res/debug/color_primary_text_dark.xml.flat b/src/app/build/intermediates/merged_res/debug/color_primary_text_dark.xml.flat new file mode 100644 index 0000000..802be34 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/color_primary_text_dark.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/color_secondary_text_dark.xml.flat b/src/app/build/intermediates/merged_res/debug/color_secondary_text_dark.xml.flat new file mode 100644 index 0000000..2d9ddb4 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/color_secondary_text_dark.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_bg_btn_set_color.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_bg_btn_set_color.png.flat new file mode 100644 index 0000000..a783113 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_bg_btn_set_color.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_bg_color_btn_mask.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_bg_color_btn_mask.png.flat new file mode 100644 index 0000000..a9576bb Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_bg_color_btn_mask.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_call_record.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_call_record.png.flat new file mode 100644 index 0000000..0692876 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_call_record.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_clock.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_clock.png.flat new file mode 100644 index 0000000..a5cd8ef Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_clock.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_delete.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_delete.png.flat new file mode 100644 index 0000000..b5e283d Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_delete.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_dropdown_icon.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_dropdown_icon.9.png.flat new file mode 100644 index 0000000..74c78c0 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_dropdown_icon.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_blue.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_blue.9.png.flat new file mode 100644 index 0000000..5436926 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_blue.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_green.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_green.9.png.flat new file mode 100644 index 0000000..4d95a89 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_green.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_red.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_red.9.png.flat new file mode 100644 index 0000000..ce52bc1 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_red.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_blue.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_blue.9.png.flat new file mode 100644 index 0000000..b376e80 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_blue.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_green.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_green.9.png.flat new file mode 100644 index 0000000..b8cc9ab Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_green.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_red.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_red.9.png.flat new file mode 100644 index 0000000..2af509b Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_red.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_white.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_white.9.png.flat new file mode 100644 index 0000000..f3a6c60 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_white.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_yellow.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_yellow.9.png.flat new file mode 100644 index 0000000..8828ae3 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_yellow.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_white.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_white.9.png.flat new file mode 100644 index 0000000..8a98c38 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_white.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_yellow.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_yellow.9.png.flat new file mode 100644 index 0000000..4c9bdf9 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_yellow.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_large.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_large.png.flat new file mode 100644 index 0000000..1422573 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_large.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_normal.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_normal.png.flat new file mode 100644 index 0000000..704993a Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_normal.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_size_selector_bg.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_size_selector_bg.9.png.flat new file mode 100644 index 0000000..9a4b989 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_size_selector_bg.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_small.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_small.png.flat new file mode 100644 index 0000000..11857a4 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_small.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_super.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_super.png.flat new file mode 100644 index 0000000..2227ab8 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_super.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_icon_app.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_icon_app.png.flat new file mode 100644 index 0000000..27a8412 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_icon_app.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_background.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_background.png.flat new file mode 100644 index 0000000..0bda0bc Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_background.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_down.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_down.9.png.flat new file mode 100644 index 0000000..75f3cd0 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_down.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_middle.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_middle.9.png.flat new file mode 100644 index 0000000..f82dd6d Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_middle.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_single.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_single.9.png.flat new file mode 100644 index 0000000..d57fe3a Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_single.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_up.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_up.9.png.flat new file mode 100644 index 0000000..683b6f1 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_up.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_folder.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_folder.9.png.flat new file mode 100644 index 0000000..e75e056 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_folder.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_footer_bg.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_footer_bg.9.png.flat new file mode 100644 index 0000000..3f89243 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_footer_bg.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_down.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_down.9.png.flat new file mode 100644 index 0000000..6b24efc Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_down.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_middle.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_middle.9.png.flat new file mode 100644 index 0000000..4f7fa61 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_middle.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_single.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_single.9.png.flat new file mode 100644 index 0000000..725a39f Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_single.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_up.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_up.9.png.flat new file mode 100644 index 0000000..f7b11e8 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_up.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_down.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_down.9.png.flat new file mode 100644 index 0000000..82de739 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_down.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_middle.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_middle.9.png.flat new file mode 100644 index 0000000..224f699 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_middle.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_single.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_single.9.png.flat new file mode 100644 index 0000000..6c1bc35 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_single.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_up.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_up.9.png.flat new file mode 100644 index 0000000..d29584e Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_up.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_down.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_down.9.png.flat new file mode 100644 index 0000000..394cf64 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_down.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_middle.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_middle.9.png.flat new file mode 100644 index 0000000..6a55c1f Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_middle.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_single.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_single.9.png.flat new file mode 100644 index 0000000..d3094aa Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_single.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_up.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_up.9.png.flat new file mode 100644 index 0000000..a3558dd Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_up.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_down.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_down.9.png.flat new file mode 100644 index 0000000..e9e827a Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_down.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_middle.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_middle.9.png.flat new file mode 100644 index 0000000..812fbce Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_middle.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_single.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_single.9.png.flat new file mode 100644 index 0000000..c4a34ba Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_single.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_up.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_up.9.png.flat new file mode 100644 index 0000000..a0b2963 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_up.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_menu_delete.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_menu_delete.png.flat new file mode 100644 index 0000000..0d0a7c7 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_menu_delete.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_menu_move.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_menu_move.png.flat new file mode 100644 index 0000000..7b7b9c9 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_menu_move.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_new_note_normal.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_new_note_normal.png.flat new file mode 100644 index 0000000..ac802ba Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_new_note_normal.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_new_note_pressed.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_new_note_pressed.png.flat new file mode 100644 index 0000000..ee82d6c Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_new_note_pressed.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_note_edit_color_selector_panel.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_note_edit_color_selector_panel.png.flat new file mode 100644 index 0000000..8d48e8e Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_note_edit_color_selector_panel.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_notification.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_notification.png.flat new file mode 100644 index 0000000..dbeee0b Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_notification.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_search_result.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_search_result.png.flat new file mode 100644 index 0000000..e55822d Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_search_result.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_selected.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_selected.png.flat new file mode 100644 index 0000000..be2aedd Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_selected.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_title_alert.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_title_alert.png.flat new file mode 100644 index 0000000..8f6daec Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_title_alert.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_title_bar_bg.9.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_title_bar_bg.9.png.flat new file mode 100644 index 0000000..87aeb20 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_title_bar_bg.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_blue.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_blue.png.flat new file mode 100644 index 0000000..825e93d Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_blue.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_green.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_green.png.flat new file mode 100644 index 0000000..e039b02 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_green.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_red.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_red.png.flat new file mode 100644 index 0000000..a2eb42b Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_red.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_white.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_white.png.flat new file mode 100644 index 0000000..c7eff78 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_white.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_yellow.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_yellow.png.flat new file mode 100644 index 0000000..decfaad Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_yellow.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_blue.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_blue.png.flat new file mode 100644 index 0000000..7c3cf3a Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_blue.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_green.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_green.png.flat new file mode 100644 index 0000000..1c75d02 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_green.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_red.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_red.png.flat new file mode 100644 index 0000000..e82e879 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_red.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_white.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_white.png.flat new file mode 100644 index 0000000..366fd2c Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_white.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_yellow.png.flat b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_yellow.png.flat new file mode 100644 index 0000000..ac23b11 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_yellow.png.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/drawable_new_note.xml.flat b/src/app/build/intermediates/merged_res/debug/drawable_new_note.xml.flat new file mode 100644 index 0000000..8b4b3a5 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/drawable_new_note.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/layout_account_dialog_title.xml.flat b/src/app/build/intermediates/merged_res/debug/layout_account_dialog_title.xml.flat new file mode 100644 index 0000000..5fdf154 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/layout_account_dialog_title.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/layout_add_account_text.xml.flat b/src/app/build/intermediates/merged_res/debug/layout_add_account_text.xml.flat new file mode 100644 index 0000000..f2fd34a Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/layout_add_account_text.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/layout_datetime_picker.xml.flat b/src/app/build/intermediates/merged_res/debug/layout_datetime_picker.xml.flat new file mode 100644 index 0000000..16cf2ef Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/layout_datetime_picker.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/layout_dialog_edit_text.xml.flat b/src/app/build/intermediates/merged_res/debug/layout_dialog_edit_text.xml.flat new file mode 100644 index 0000000..afee10f Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/layout_dialog_edit_text.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/layout_folder_list_item.xml.flat b/src/app/build/intermediates/merged_res/debug/layout_folder_list_item.xml.flat new file mode 100644 index 0000000..b3d34f5 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/layout_folder_list_item.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/layout_note_edit.xml.flat b/src/app/build/intermediates/merged_res/debug/layout_note_edit.xml.flat new file mode 100644 index 0000000..d70e725 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/layout_note_edit.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/layout_note_edit_list_item.xml.flat b/src/app/build/intermediates/merged_res/debug/layout_note_edit_list_item.xml.flat new file mode 100644 index 0000000..544cfb6 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/layout_note_edit_list_item.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/layout_note_item.xml.flat b/src/app/build/intermediates/merged_res/debug/layout_note_item.xml.flat new file mode 100644 index 0000000..2ae3d38 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/layout_note_item.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/layout_note_list.xml.flat b/src/app/build/intermediates/merged_res/debug/layout_note_list.xml.flat new file mode 100644 index 0000000..b092461 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/layout_note_list.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/layout_note_list_dropdown_menu.xml.flat b/src/app/build/intermediates/merged_res/debug/layout_note_list_dropdown_menu.xml.flat new file mode 100644 index 0000000..ef9a690 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/layout_note_list_dropdown_menu.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/layout_note_list_footer.xml.flat b/src/app/build/intermediates/merged_res/debug/layout_note_list_footer.xml.flat new file mode 100644 index 0000000..48aa960 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/layout_note_list_footer.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/layout_settings_header.xml.flat b/src/app/build/intermediates/merged_res/debug/layout_settings_header.xml.flat new file mode 100644 index 0000000..4b1a1cd Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/layout_settings_header.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/layout_widget_2x.xml.flat b/src/app/build/intermediates/merged_res/debug/layout_widget_2x.xml.flat new file mode 100644 index 0000000..c923e71 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/layout_widget_2x.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/layout_widget_4x.xml.flat b/src/app/build/intermediates/merged_res/debug/layout_widget_4x.xml.flat new file mode 100644 index 0000000..bd9974e Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/layout_widget_4x.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/menu_call_note_edit.xml.flat b/src/app/build/intermediates/merged_res/debug/menu_call_note_edit.xml.flat new file mode 100644 index 0000000..c89b09d Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/menu_call_note_edit.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/menu_call_record_folder.xml.flat b/src/app/build/intermediates/merged_res/debug/menu_call_record_folder.xml.flat new file mode 100644 index 0000000..504fc9c Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/menu_call_record_folder.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/menu_note_edit.xml.flat b/src/app/build/intermediates/merged_res/debug/menu_note_edit.xml.flat new file mode 100644 index 0000000..c2c61cc Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/menu_note_edit.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/menu_note_list.xml.flat b/src/app/build/intermediates/merged_res/debug/menu_note_list.xml.flat new file mode 100644 index 0000000..c138bc9 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/menu_note_list.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/menu_note_list_dropdown.xml.flat b/src/app/build/intermediates/merged_res/debug/menu_note_list_dropdown.xml.flat new file mode 100644 index 0000000..6e3c761 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/menu_note_list_dropdown.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/menu_note_list_options.xml.flat b/src/app/build/intermediates/merged_res/debug/menu_note_list_options.xml.flat new file mode 100644 index 0000000..60513de Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/menu_note_list_options.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/menu_sub_folder.xml.flat b/src/app/build/intermediates/merged_res/debug/menu_sub_folder.xml.flat new file mode 100644 index 0000000..4e4f099 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/menu_sub_folder.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/raw-zh-rCN_introduction.flat b/src/app/build/intermediates/merged_res/debug/raw-zh-rCN_introduction.flat new file mode 100644 index 0000000..e25eb7b Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/raw-zh-rCN_introduction.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/raw_introduction.flat b/src/app/build/intermediates/merged_res/debug/raw_introduction.flat new file mode 100644 index 0000000..608c6fd Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/raw_introduction.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/values-zh-rCN_values-zh-rCN.arsc.flat b/src/app/build/intermediates/merged_res/debug/values-zh-rCN_values-zh-rCN.arsc.flat new file mode 100644 index 0000000..035ddcd Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/values-zh-rCN_values-zh-rCN.arsc.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/values-zh-rTW_values-zh-rTW.arsc.flat b/src/app/build/intermediates/merged_res/debug/values-zh-rTW_values-zh-rTW.arsc.flat new file mode 100644 index 0000000..1043ced Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/values-zh-rTW_values-zh-rTW.arsc.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/values_values.arsc.flat b/src/app/build/intermediates/merged_res/debug/values_values.arsc.flat new file mode 100644 index 0000000..dd7f5ee Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/values_values.arsc.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/xml_preferences.xml.flat b/src/app/build/intermediates/merged_res/debug/xml_preferences.xml.flat new file mode 100644 index 0000000..e36a338 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/xml_preferences.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/xml_searchable.xml.flat b/src/app/build/intermediates/merged_res/debug/xml_searchable.xml.flat new file mode 100644 index 0000000..c4dc076 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/xml_searchable.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/xml_widget_2x_info.xml.flat b/src/app/build/intermediates/merged_res/debug/xml_widget_2x_info.xml.flat new file mode 100644 index 0000000..b960844 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/xml_widget_2x_info.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/debug/xml_widget_4x_info.xml.flat b/src/app/build/intermediates/merged_res/debug/xml_widget_4x_info.xml.flat new file mode 100644 index 0000000..1605ca0 Binary files /dev/null and b/src/app/build/intermediates/merged_res/debug/xml_widget_4x_info.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/color_primary_text_dark.xml.flat b/src/app/build/intermediates/merged_res/release/color_primary_text_dark.xml.flat new file mode 100644 index 0000000..e5df6da Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/color_primary_text_dark.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/color_secondary_text_dark.xml.flat b/src/app/build/intermediates/merged_res/release/color_secondary_text_dark.xml.flat new file mode 100644 index 0000000..8cc05db Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/color_secondary_text_dark.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_bg_btn_set_color.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_bg_btn_set_color.png.flat new file mode 100644 index 0000000..6ca369f Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_bg_btn_set_color.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_bg_color_btn_mask.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_bg_color_btn_mask.png.flat new file mode 100644 index 0000000..1b65ec7 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_bg_color_btn_mask.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_call_record.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_call_record.png.flat new file mode 100644 index 0000000..7d8d438 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_call_record.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_clock.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_clock.png.flat new file mode 100644 index 0000000..1cdbd6b Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_clock.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_delete.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_delete.png.flat new file mode 100644 index 0000000..9af501e Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_delete.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_dropdown_icon.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_dropdown_icon.9.png.flat new file mode 100644 index 0000000..f80e058 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_dropdown_icon.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_blue.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_blue.9.png.flat new file mode 100644 index 0000000..be22aa0 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_blue.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_green.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_green.9.png.flat new file mode 100644 index 0000000..2a07d4f Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_green.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_red.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_red.9.png.flat new file mode 100644 index 0000000..b71467d Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_red.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_title_blue.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_title_blue.9.png.flat new file mode 100644 index 0000000..9cf62b3 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_title_blue.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_title_green.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_title_green.9.png.flat new file mode 100644 index 0000000..f77ea7d Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_title_green.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_title_red.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_title_red.9.png.flat new file mode 100644 index 0000000..4b9e264 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_title_red.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_title_white.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_title_white.9.png.flat new file mode 100644 index 0000000..cbb044c Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_title_white.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_title_yellow.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_title_yellow.9.png.flat new file mode 100644 index 0000000..14d4feb Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_title_yellow.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_white.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_white.9.png.flat new file mode 100644 index 0000000..9226aa6 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_white.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_yellow.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_yellow.9.png.flat new file mode 100644 index 0000000..d49f07e Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_edit_yellow.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_font_large.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_font_large.png.flat new file mode 100644 index 0000000..6584cdc Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_font_large.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_font_normal.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_font_normal.png.flat new file mode 100644 index 0000000..72f899f Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_font_normal.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_font_size_selector_bg.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_font_size_selector_bg.9.png.flat new file mode 100644 index 0000000..0400aeb Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_font_size_selector_bg.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_font_small.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_font_small.png.flat new file mode 100644 index 0000000..b25dfab Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_font_small.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_font_super.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_font_super.png.flat new file mode 100644 index 0000000..d31dcb6 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_font_super.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_icon_app.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_icon_app.png.flat new file mode 100644 index 0000000..8bbb2f3 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_icon_app.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_background.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_background.png.flat new file mode 100644 index 0000000..534b0cf Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_background.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_blue_down.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_blue_down.9.png.flat new file mode 100644 index 0000000..ca41f40 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_blue_down.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_blue_middle.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_blue_middle.9.png.flat new file mode 100644 index 0000000..7302f30 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_blue_middle.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_blue_single.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_blue_single.9.png.flat new file mode 100644 index 0000000..02a4f77 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_blue_single.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_blue_up.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_blue_up.9.png.flat new file mode 100644 index 0000000..4382694 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_blue_up.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_folder.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_folder.9.png.flat new file mode 100644 index 0000000..b4e71dc Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_folder.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_footer_bg.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_footer_bg.9.png.flat new file mode 100644 index 0000000..b230b8f Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_footer_bg.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_green_down.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_green_down.9.png.flat new file mode 100644 index 0000000..633e0e7 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_green_down.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_green_middle.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_green_middle.9.png.flat new file mode 100644 index 0000000..d432a14 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_green_middle.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_green_single.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_green_single.9.png.flat new file mode 100644 index 0000000..5a72f21 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_green_single.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_green_up.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_green_up.9.png.flat new file mode 100644 index 0000000..3e628af Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_green_up.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_red_down.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_red_down.9.png.flat new file mode 100644 index 0000000..a4b4193 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_red_down.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_red_middle.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_red_middle.9.png.flat new file mode 100644 index 0000000..7ae0f98 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_red_middle.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_red_single.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_red_single.9.png.flat new file mode 100644 index 0000000..6cbb18b Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_red_single.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_red_up.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_red_up.9.png.flat new file mode 100644 index 0000000..a4a6692 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_red_up.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_white_down.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_white_down.9.png.flat new file mode 100644 index 0000000..9623c13 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_white_down.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_white_middle.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_white_middle.9.png.flat new file mode 100644 index 0000000..404ea2c Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_white_middle.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_white_single.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_white_single.9.png.flat new file mode 100644 index 0000000..4bb304b Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_white_single.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_white_up.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_white_up.9.png.flat new file mode 100644 index 0000000..449a2d8 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_white_up.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_yellow_down.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_yellow_down.9.png.flat new file mode 100644 index 0000000..74c5445 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_yellow_down.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_yellow_middle.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_yellow_middle.9.png.flat new file mode 100644 index 0000000..99bbe37 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_yellow_middle.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_yellow_single.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_yellow_single.9.png.flat new file mode 100644 index 0000000..cfab562 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_yellow_single.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_yellow_up.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_yellow_up.9.png.flat new file mode 100644 index 0000000..afdf9b0 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_list_yellow_up.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_menu_delete.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_menu_delete.png.flat new file mode 100644 index 0000000..94f1459 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_menu_delete.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_menu_move.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_menu_move.png.flat new file mode 100644 index 0000000..508aa13 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_menu_move.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_new_note_normal.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_new_note_normal.png.flat new file mode 100644 index 0000000..25d1ab6 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_new_note_normal.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_new_note_pressed.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_new_note_pressed.png.flat new file mode 100644 index 0000000..1a6ecf8 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_new_note_pressed.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_note_edit_color_selector_panel.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_note_edit_color_selector_panel.png.flat new file mode 100644 index 0000000..fedc87f Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_note_edit_color_selector_panel.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_notification.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_notification.png.flat new file mode 100644 index 0000000..92d3cad Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_notification.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_search_result.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_search_result.png.flat new file mode 100644 index 0000000..f8290b4 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_search_result.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_selected.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_selected.png.flat new file mode 100644 index 0000000..b42c32d Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_selected.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_title_alert.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_title_alert.png.flat new file mode 100644 index 0000000..8255468 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_title_alert.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_title_bar_bg.9.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_title_bar_bg.9.png.flat new file mode 100644 index 0000000..fb37689 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_title_bar_bg.9.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_2x_blue.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_2x_blue.png.flat new file mode 100644 index 0000000..cb34e2a Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_2x_blue.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_2x_green.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_2x_green.png.flat new file mode 100644 index 0000000..49c0b08 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_2x_green.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_2x_red.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_2x_red.png.flat new file mode 100644 index 0000000..466a0d7 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_2x_red.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_2x_white.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_2x_white.png.flat new file mode 100644 index 0000000..0ab58ed Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_2x_white.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_2x_yellow.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_2x_yellow.png.flat new file mode 100644 index 0000000..1af046e Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_2x_yellow.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_4x_blue.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_4x_blue.png.flat new file mode 100644 index 0000000..3490b10 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_4x_blue.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_4x_green.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_4x_green.png.flat new file mode 100644 index 0000000..cf47d36 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_4x_green.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_4x_red.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_4x_red.png.flat new file mode 100644 index 0000000..ba4bb3c Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_4x_red.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_4x_white.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_4x_white.png.flat new file mode 100644 index 0000000..fd9a34e Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_4x_white.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_4x_yellow.png.flat b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_4x_yellow.png.flat new file mode 100644 index 0000000..2519864 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable-hdpi_widget_4x_yellow.png.flat differ diff --git a/src/app/build/intermediates/merged_res/release/drawable_new_note.xml.flat b/src/app/build/intermediates/merged_res/release/drawable_new_note.xml.flat new file mode 100644 index 0000000..eec4deb Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/drawable_new_note.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/layout_account_dialog_title.xml.flat b/src/app/build/intermediates/merged_res/release/layout_account_dialog_title.xml.flat new file mode 100644 index 0000000..1bbe3ab Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/layout_account_dialog_title.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/layout_add_account_text.xml.flat b/src/app/build/intermediates/merged_res/release/layout_add_account_text.xml.flat new file mode 100644 index 0000000..305e7a6 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/layout_add_account_text.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/layout_datetime_picker.xml.flat b/src/app/build/intermediates/merged_res/release/layout_datetime_picker.xml.flat new file mode 100644 index 0000000..61742b5 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/layout_datetime_picker.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/layout_dialog_edit_text.xml.flat b/src/app/build/intermediates/merged_res/release/layout_dialog_edit_text.xml.flat new file mode 100644 index 0000000..78701a1 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/layout_dialog_edit_text.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/layout_folder_list_item.xml.flat b/src/app/build/intermediates/merged_res/release/layout_folder_list_item.xml.flat new file mode 100644 index 0000000..7b3fb68 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/layout_folder_list_item.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/layout_note_edit.xml.flat b/src/app/build/intermediates/merged_res/release/layout_note_edit.xml.flat new file mode 100644 index 0000000..8a8d942 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/layout_note_edit.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/layout_note_edit_list_item.xml.flat b/src/app/build/intermediates/merged_res/release/layout_note_edit_list_item.xml.flat new file mode 100644 index 0000000..006b151 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/layout_note_edit_list_item.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/layout_note_item.xml.flat b/src/app/build/intermediates/merged_res/release/layout_note_item.xml.flat new file mode 100644 index 0000000..1c3342f Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/layout_note_item.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/layout_note_list.xml.flat b/src/app/build/intermediates/merged_res/release/layout_note_list.xml.flat new file mode 100644 index 0000000..8f48256 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/layout_note_list.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/layout_note_list_dropdown_menu.xml.flat b/src/app/build/intermediates/merged_res/release/layout_note_list_dropdown_menu.xml.flat new file mode 100644 index 0000000..749f04b Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/layout_note_list_dropdown_menu.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/layout_note_list_footer.xml.flat b/src/app/build/intermediates/merged_res/release/layout_note_list_footer.xml.flat new file mode 100644 index 0000000..98f56f4 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/layout_note_list_footer.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/layout_settings_header.xml.flat b/src/app/build/intermediates/merged_res/release/layout_settings_header.xml.flat new file mode 100644 index 0000000..9caf2e6 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/layout_settings_header.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/layout_widget_2x.xml.flat b/src/app/build/intermediates/merged_res/release/layout_widget_2x.xml.flat new file mode 100644 index 0000000..a74989a Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/layout_widget_2x.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/layout_widget_4x.xml.flat b/src/app/build/intermediates/merged_res/release/layout_widget_4x.xml.flat new file mode 100644 index 0000000..94470b7 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/layout_widget_4x.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/menu_call_note_edit.xml.flat b/src/app/build/intermediates/merged_res/release/menu_call_note_edit.xml.flat new file mode 100644 index 0000000..7b10945 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/menu_call_note_edit.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/menu_call_record_folder.xml.flat b/src/app/build/intermediates/merged_res/release/menu_call_record_folder.xml.flat new file mode 100644 index 0000000..5cbb9e9 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/menu_call_record_folder.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/menu_note_edit.xml.flat b/src/app/build/intermediates/merged_res/release/menu_note_edit.xml.flat new file mode 100644 index 0000000..c025a60 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/menu_note_edit.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/menu_note_list.xml.flat b/src/app/build/intermediates/merged_res/release/menu_note_list.xml.flat new file mode 100644 index 0000000..4316da7 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/menu_note_list.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/menu_note_list_dropdown.xml.flat b/src/app/build/intermediates/merged_res/release/menu_note_list_dropdown.xml.flat new file mode 100644 index 0000000..7d74a65 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/menu_note_list_dropdown.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/menu_note_list_options.xml.flat b/src/app/build/intermediates/merged_res/release/menu_note_list_options.xml.flat new file mode 100644 index 0000000..9210c15 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/menu_note_list_options.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/menu_sub_folder.xml.flat b/src/app/build/intermediates/merged_res/release/menu_sub_folder.xml.flat new file mode 100644 index 0000000..ad66757 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/menu_sub_folder.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/raw-zh-rCN_introduction.flat b/src/app/build/intermediates/merged_res/release/raw-zh-rCN_introduction.flat new file mode 100644 index 0000000..00291c5 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/raw-zh-rCN_introduction.flat differ diff --git a/src/app/build/intermediates/merged_res/release/raw_introduction.flat b/src/app/build/intermediates/merged_res/release/raw_introduction.flat new file mode 100644 index 0000000..02a9e4e Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/raw_introduction.flat differ diff --git a/src/app/build/intermediates/merged_res/release/values-zh-rCN_values-zh-rCN.arsc.flat b/src/app/build/intermediates/merged_res/release/values-zh-rCN_values-zh-rCN.arsc.flat new file mode 100644 index 0000000..0513a6a Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/values-zh-rCN_values-zh-rCN.arsc.flat differ diff --git a/src/app/build/intermediates/merged_res/release/values-zh-rTW_values-zh-rTW.arsc.flat b/src/app/build/intermediates/merged_res/release/values-zh-rTW_values-zh-rTW.arsc.flat new file mode 100644 index 0000000..f664064 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/values-zh-rTW_values-zh-rTW.arsc.flat differ diff --git a/src/app/build/intermediates/merged_res/release/values_values.arsc.flat b/src/app/build/intermediates/merged_res/release/values_values.arsc.flat new file mode 100644 index 0000000..89214e9 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/values_values.arsc.flat differ diff --git a/src/app/build/intermediates/merged_res/release/xml_preferences.xml.flat b/src/app/build/intermediates/merged_res/release/xml_preferences.xml.flat new file mode 100644 index 0000000..752f47f Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/xml_preferences.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/xml_searchable.xml.flat b/src/app/build/intermediates/merged_res/release/xml_searchable.xml.flat new file mode 100644 index 0000000..625e86f Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/xml_searchable.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/xml_widget_2x_info.xml.flat b/src/app/build/intermediates/merged_res/release/xml_widget_2x_info.xml.flat new file mode 100644 index 0000000..ad294be Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/xml_widget_2x_info.xml.flat differ diff --git a/src/app/build/intermediates/merged_res/release/xml_widget_4x_info.xml.flat b/src/app/build/intermediates/merged_res/release/xml_widget_4x_info.xml.flat new file mode 100644 index 0000000..4d8a2a5 Binary files /dev/null and b/src/app/build/intermediates/merged_res/release/xml_widget_4x_info.xml.flat differ diff --git a/src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/debug.json b/src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/debug.json new file mode 100644 index 0000000..c79322a --- /dev/null +++ b/src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/debug.json @@ -0,0 +1,341 @@ +{ + "logs": [ + { + "outputFile": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\values-zh-rCN_values-zh-rCN.arsc.flat", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rCN\\arrays.xml", + "from": { + "startLines": "-1", + "startColumns": "-1", + "startOffsets": "-1" + }, + "to": { + "startLines": "2", + "startColumns": "4", + "startOffsets": "105", + "endLines": "5", + "endColumns": "19", + "endOffsets": "210" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rCN\\strings.xml", + "from": { + "startLines": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,38,37,-1,-1,-1,-1,40,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,125,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,4,-1,-1,-1,-1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1819,1768,-1,-1,-1,-1,1912,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6706,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endColumns": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,61,50,-1,-1,-1,-1,58,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,43,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endOffsets": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1876,1814,-1,-1,-1,-1,1966,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6745,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "215,384,457,523,596,646,686,734,782,827,884,938,988,1050,1118,1195,1254,1319,1382,1437,1497,1560,1614,1676,1727,1787,1840,1902,1987,2046,2127,2177,2236,2279,2332,2375,2426,2476,2536,2589,2640,2686,2734,2782,2828,2875,2925,2970,3029,3081,3133,3176,3223,3279,3334,3389,3433,3475,3516,3566,3625,3676,3720,3769,3818,3865,3912,3959,4004,4055,4108,4183,4242,4299,4373,4437,4506,4584,4694,4798,4871,4937,4992,5057,5122,5171,5254,5332,5370,5415,5463,5525,5582,5637,5696,5763,5821,5883,5931,5976,6024,6075,6141", + "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110", + "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,61,50,59,52,61,84,58,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,43,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "379,452,518,591,641,681,729,777,822,879,933,983,1045,1113,1190,1249,1314,1377,1432,1492,1555,1609,1671,1722,1782,1835,1897,1982,2041,2122,2172,2231,2274,2327,2370,2421,2471,2531,2584,2635,2681,2729,2777,2823,2870,2920,2965,3024,3076,3128,3171,3218,3274,3329,3384,3428,3470,3511,3561,3620,3671,3715,3764,3813,3860,3907,3954,3999,4050,4103,4178,4237,4294,4368,4432,4501,4579,4689,4793,4866,4932,4987,5052,5117,5166,5249,5327,5365,5410,5458,5520,5577,5632,5691,5758,5816,5878,5926,5971,6019,6070,6136,6202" + } + } + ] + }, + { + "outputFile": "net.micode.notes.app-merged_res-5:/values-zh-rCN_values-zh-rCN.arsc.flat", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rCN\\arrays.xml", + "from": { + "startLines": "-1", + "startColumns": "-1", + "startOffsets": "-1" + }, + "to": { + "startLines": "2", + "startColumns": "4", + "startOffsets": "105", + "endLines": "5", + "endColumns": "19", + "endOffsets": "210" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rCN\\strings.xml", + "from": { + "startLines": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "215,384,457,523,596,646,686,734,782,827,884,938,988,1050,1118,1195,1254,1319,1382,1437,1497,1560,1614,1674,1727,1789,1874,1955,2005,2064,2107,2160,2203,2254,2304,2364,2417,2468,2514,2562,2610,2656,2703,2753,2798,2857,2909,2961,3004,3051,3107,3162,3217,3261,3303,3344,3394,3453,3504,3553,3602,3649,3696,3743,3788,3839,3892,3967,4026,4083,4157,4221,4290,4368,4478,4582,4655,4721,4776,4841,4906,4955,5038,5116,5154,5199,5247,5309,5366,5421,5480,5547,5605,5667,5715,5760,5808,5859,5925", + "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,59,52,61,84,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "379,452,518,591,641,681,729,777,822,879,933,983,1045,1113,1190,1249,1314,1377,1432,1492,1555,1609,1669,1722,1784,1869,1950,2000,2059,2102,2155,2198,2249,2299,2359,2412,2463,2509,2557,2605,2651,2698,2748,2793,2852,2904,2956,2999,3046,3102,3157,3212,3256,3298,3339,3389,3448,3499,3548,3597,3644,3691,3738,3783,3834,3887,3962,4021,4078,4152,4216,4285,4363,4473,4577,4650,4716,4771,4836,4901,4950,5033,5111,5149,5194,5242,5304,5361,5416,5475,5542,5600,5662,5710,5755,5803,5854,5920,5986" + } + } + ] + }, + { + "outputFile": "net.micode.notes.app-merged_res-5:/values_values.arsc.flat", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\strings.xml", + "from": { + "startLines": "128,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "8136,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endLines": "132,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endColumns": "14,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endOffsets": "8544,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "18,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "739,1092,1188,1271,1367,1436,1479,1531,1583,1632,1695,1753,1804,1888,1982,2090,2161,2245,2328,2394,2477,2579,2640,2702,2753,2831,2884,2944,3049,3108,3210,3265,3336,3385,3443,3490,3549,3606,3677,3738,3795,3845,3897,3950,4000,4050,4110,4163,4229,4291,4354,4401,4456,4544,4602,4664,4714,4759,4802,4862,4929,4984,5039,5092,5139,5192,5248,5296,5351,5404,5488,5555,5619,5715,5789,5870,5959,6122,6266,6345,6420,6502,6561,6641,6721,6776,6898,7001,7042,7095,7152,7226,7291,7359,7445,7525,7594,7688,7747,7802,7864,7924,8034", + "endLines": "22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124", + "endColumns": "14,95,82,95,68,42,51,51,48,62,57,50,83,93,107,70,83,82,65,82,101,60,61,50,77,52,59,104,58,101,54,70,48,57,46,58,56,70,60,56,49,51,52,49,49,59,52,65,61,62,46,54,87,57,61,49,44,42,59,66,54,54,52,46,52,55,47,54,52,83,66,63,95,73,80,88,162,143,78,74,81,58,79,79,54,121,102,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89", + "endOffsets": "1087,1183,1266,1362,1431,1474,1526,1578,1627,1690,1748,1799,1883,1977,2085,2156,2240,2323,2389,2472,2574,2635,2697,2748,2826,2879,2939,3044,3103,3205,3260,3331,3380,3438,3485,3544,3601,3672,3733,3790,3840,3892,3945,3995,4045,4105,4158,4224,4286,4349,4396,4451,4539,4597,4659,4709,4754,4797,4857,4924,4979,5034,5087,5134,5187,5243,5291,5346,5399,5483,5550,5614,5710,5784,5865,5954,6117,6261,6340,6415,6497,6556,6636,6716,6771,6893,6996,7037,7090,7147,7221,7286,7354,7440,7520,7589,7683,7742,7797,7859,7919,8029,8119" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\dimens.xml", + "from": { + "startLines": "-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "13,14,15,16,17", + "startColumns": "4,4,4,4,4", + "startOffsets": "477,529,582,635,687", + "endColumns": "51,52,52,51,51", + "endOffsets": "524,577,630,682,734" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\styles.xml", + "from": { + "startLines": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "125,129,133,137,140,144,148,152,156,160,164", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "8124,8328,8539,8751,8911,9094,9279,9464,9667,9873,10056", + "endLines": "128,132,136,139,143,147,151,155,159,163,167", + "endColumns": "12,12,12,12,12,12,12,12,12,12,12", + "endOffsets": "8323,8534,8746,8906,9089,9274,9459,9662,9868,10051,10252" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\colors.xml", + "from": { + "startLines": "-1", + "startColumns": "-1", + "startOffsets": "-1" + }, + "to": { + "startLines": "12", + "startColumns": "4", + "startOffsets": "420", + "endColumns": "56", + "endOffsets": "472" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\arrays.xml", + "from": { + "startLines": "19,-1", + "startColumns": "4,-1", + "startOffsets": "758,-1", + "endLines": "24,-1", + "endColumns": "19,-1", + "endOffsets": "1065,-1" + }, + "to": { + "startLines": "2,8", + "startColumns": "4,4", + "startOffsets": "105,300", + "endLines": "7,11", + "endColumns": "19,19", + "endOffsets": "295,415" + } + } + ] + }, + { + "outputFile": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\values-zh-rTW_values-zh-rTW.arsc.flat", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rTW\\arrays.xml", + "from": { + "startLines": "-1", + "startColumns": "-1", + "startOffsets": "-1" + }, + "to": { + "startLines": "2", + "startColumns": "4", + "startOffsets": "105", + "endLines": "5", + "endColumns": "19", + "endOffsets": "210" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rTW\\strings.xml", + "from": { + "startLines": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,123,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6508,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endColumns": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,43,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endOffsets": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6547,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "215,384,456,522,595,645,685,733,781,826,883,937,987,1049,1117,1194,1253,1319,1382,1437,1497,1560,1614,1674,1727,1789,1873,1953,2003,2062,2105,2158,2201,2252,2302,2362,2415,2466,2512,2560,2608,2654,2701,2751,2796,2855,2907,2959,3002,3049,3105,3160,3215,3259,3301,3342,3392,3451,3502,3546,3595,3644,3691,3738,3785,3830,3881,3934,4009,4068,4125,4199,4263,4332,4410,4520,4624,4697,4763,4818,4883,4948,4997,5080,5158,5196,5241,5289,5351,5408,5463,5522,5589,5647,5709,5757,5802,5850,5901,5967", + "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107", + "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,43,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "379,451,517,590,640,680,728,776,821,878,932,982,1044,1112,1189,1248,1314,1377,1432,1492,1555,1609,1669,1722,1784,1868,1948,1998,2057,2100,2153,2196,2247,2297,2357,2410,2461,2507,2555,2603,2649,2696,2746,2791,2850,2902,2954,2997,3044,3100,3155,3210,3254,3296,3337,3387,3446,3497,3541,3590,3639,3686,3733,3780,3825,3876,3929,4004,4063,4120,4194,4258,4327,4405,4515,4619,4692,4758,4813,4878,4943,4992,5075,5153,5191,5236,5284,5346,5403,5458,5517,5584,5642,5704,5752,5797,5845,5896,5962,6028" + } + } + ] + }, + { + "outputFile": "net.micode.notes.app-merged_res-5:/values-zh-rTW_values-zh-rTW.arsc.flat", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rTW\\arrays.xml", + "from": { + "startLines": "-1", + "startColumns": "-1", + "startOffsets": "-1" + }, + "to": { + "startLines": "2", + "startColumns": "4", + "startOffsets": "105", + "endLines": "5", + "endColumns": "19", + "endOffsets": "210" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rTW\\strings.xml", + "from": { + "startLines": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "215,384,456,522,595,645,685,733,781,826,883,937,987,1049,1117,1194,1253,1319,1382,1437,1497,1560,1614,1674,1727,1789,1873,1953,2003,2062,2105,2158,2201,2252,2302,2362,2415,2466,2512,2560,2608,2654,2701,2751,2796,2855,2907,2959,3002,3049,3105,3160,3215,3259,3301,3342,3392,3451,3502,3551,3600,3647,3694,3741,3786,3837,3890,3965,4024,4081,4155,4219,4288,4366,4476,4580,4653,4719,4774,4839,4904,4953,5036,5114,5152,5197,5245,5307,5364,5419,5478,5545,5603,5665,5713,5758,5806,5857,5923", + "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "379,451,517,590,640,680,728,776,821,878,932,982,1044,1112,1189,1248,1314,1377,1432,1492,1555,1609,1669,1722,1784,1868,1948,1998,2057,2100,2153,2196,2247,2297,2357,2410,2461,2507,2555,2603,2649,2696,2746,2791,2850,2902,2954,2997,3044,3100,3155,3210,3254,3296,3337,3387,3446,3497,3546,3595,3642,3689,3736,3781,3832,3885,3960,4019,4076,4150,4214,4283,4361,4471,4575,4648,4714,4769,4834,4899,4948,5031,5109,5147,5192,5240,5302,5359,5414,5473,5540,5598,5660,5708,5753,5801,5852,5918,5984" + } + } + ] + }, + { + "outputFile": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\values_values.arsc.flat", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\strings.xml", + "from": { + "startLines": "128,72,75,74,73,19,20,21,118,119,127,126,26,81,82,80,79,78,94,93,92,84,39,38,64,29,30,85,41,76,120,71,67,42,48,53,43,63,62,61,57,56,54,55,58,59,49,70,60,68,47,52,51,50,66,46,65,44,45,69,28,34,36,33,35,32,31,25,24,101,100,104,116,109,108,110,111,113,112,102,103,107,105,106,99,114,115,125,123,122,124,27,83,91,96,95,97,90,89,88,87,22,23", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "8008,3898,4159,4063,3994,827,870,922,7506,7555,7950,7899,1282,4613,4707,4542,4458,4375,5574,5491,5389,4883,2004,1953,3397,1486,1539,4944,2097,4242,7618,3827,3582,2156,2471,2772,2214,3326,3265,3208,2986,2934,2831,2884,3036,3086,2518,3761,3146,3631,2424,2717,2629,2571,3520,2374,3475,2271,2314,3694,1431,1750,1858,1703,1805,1647,1599,1227,1174,6030,5963,6271,7409,6635,6554,6709,6798,7040,6961,6114,6189,6495,6335,6415,5908,7184,7306,7858,7731,7674,7784,1366,4815,5303,5709,5640,5789,5244,5189,5127,5067,974,1084", + "endLines": "132,72,75,74,73,19,20,21,118,119,127,126,26,81,82,80,79,78,94,93,92,84,39,38,64,29,30,85,41,76,120,71,67,42,48,53,43,63,62,61,57,56,54,55,58,59,49,70,60,68,47,52,51,50,66,46,65,44,45,69,28,34,36,33,35,32,31,25,24,101,100,104,116,109,108,110,111,113,112,102,103,107,105,106,99,114,115,125,123,122,124,27,83,91,96,95,97,90,89,88,87,22,23", + "endColumns": "14,95,82,95,68,42,51,51,48,62,57,50,83,93,107,70,83,82,65,82,101,60,61,50,77,52,59,104,58,101,54,70,48,57,46,58,56,70,60,56,49,51,52,49,49,59,52,65,61,62,46,54,87,57,61,49,44,42,59,66,54,54,52,46,52,55,47,54,52,83,66,63,95,73,80,88,162,143,78,74,81,58,79,79,54,121,102,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89", + "endOffsets": "8412,3989,4237,4154,4058,865,917,969,7550,7613,8003,7945,1361,4702,4810,4608,4537,4453,5635,5569,5486,4939,2061,1999,3470,1534,1594,5044,2151,4339,7668,3893,3626,2209,2513,2826,2266,3392,3321,3260,3031,2981,2879,2929,3081,3141,2566,3822,3203,3689,2466,2767,2712,2624,3577,2419,3515,2309,2369,3756,1481,1800,1906,1745,1853,1698,1642,1277,1222,6109,6025,6330,7500,6704,6630,6793,6956,7179,7035,6184,6266,6549,6410,6490,5958,7301,7404,7894,7779,7726,7853,1426,4878,5384,5784,5704,5878,5298,5239,5184,5122,1079,1169" + }, + "to": { + "startLines": "18,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "739,1092,1188,1271,1367,1436,1479,1531,1583,1632,1695,1753,1804,1888,1982,2090,2161,2245,2328,2394,2477,2579,2640,2702,2753,2831,2884,2944,3049,3108,3210,3265,3336,3385,3443,3490,3549,3606,3677,3738,3795,3845,3897,3950,4000,4050,4110,4163,4229,4291,4354,4401,4456,4544,4602,4664,4714,4759,4802,4862,4929,4984,5039,5092,5139,5192,5248,5296,5351,5404,5488,5555,5619,5715,5789,5870,5959,6122,6266,6345,6420,6502,6561,6641,6721,6776,6898,7001,7042,7095,7152,7226,7291,7359,7445,7525,7594,7688,7747,7802,7864,7924,8034", + "endLines": "22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124", + "endColumns": "14,95,82,95,68,42,51,51,48,62,57,50,83,93,107,70,83,82,65,82,101,60,61,50,77,52,59,104,58,101,54,70,48,57,46,58,56,70,60,56,49,51,52,49,49,59,52,65,61,62,46,54,87,57,61,49,44,42,59,66,54,54,52,46,52,55,47,54,52,83,66,63,95,73,80,88,162,143,78,74,81,58,79,79,54,121,102,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89", + "endOffsets": "1087,1183,1266,1362,1431,1474,1526,1578,1627,1690,1748,1799,1883,1977,2085,2156,2240,2323,2389,2472,2574,2635,2697,2748,2826,2879,2939,3044,3103,3205,3260,3331,3380,3438,3485,3544,3601,3672,3733,3790,3840,3892,3945,3995,4045,4105,4158,4224,4286,4349,4396,4451,4539,4597,4659,4709,4754,4797,4857,4924,4979,5034,5087,5134,5187,5243,5291,5346,5399,5483,5550,5614,5710,5784,5865,5954,6117,6261,6340,6415,6497,6556,6636,6716,6771,6893,6996,7037,7090,7147,7221,7286,7354,7440,7520,7589,7683,7742,7797,7859,7919,8029,8119" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\dimens.xml", + "from": { + "startLines": "19,20,21,22,18", + "startColumns": "4,4,4,4,4", + "startOffsets": "764,816,869,922,712", + "endColumns": "51,52,52,51,51", + "endOffsets": "811,864,917,969,759" + }, + "to": { + "startLines": "13,14,15,16,17", + "startColumns": "4,4,4,4,4", + "startOffsets": "477,529,582,635,687", + "endColumns": "51,52,52,51,51", + "endOffsets": "524,577,630,682,734" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\styles.xml", + "from": { + "startLines": "50,55,64,60,22,26,30,35,40,18,45", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "2062,2267,2640,2479,895,1078,1263,1449,1653,712,1860", + "endLines": "53,58,67,62,25,29,33,38,43,21,48", + "endColumns": "12,12,12,12,12,12,12,12,12,12,12", + "endOffsets": "2261,2473,2848,2634,1073,1258,1443,1647,1854,890,2056" + }, + "to": { + "startLines": "125,129,133,137,140,144,148,152,156,160,164", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "8124,8328,8539,8751,8911,9094,9279,9464,9667,9873,10056", + "endLines": "128,132,136,139,143,147,151,155,159,163,167", + "endColumns": "12,12,12,12,12,12,12,12,12,12,12", + "endOffsets": "8323,8534,8746,8906,9089,9274,9459,9662,9868,10051,10252" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\colors.xml", + "from": { + "startLines": "18", + "startColumns": "4", + "startOffsets": "712", + "endColumns": "56", + "endOffsets": "764" + }, + "to": { + "startLines": "12", + "startColumns": "4", + "startOffsets": "420", + "endColumns": "56", + "endOffsets": "472" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\arrays.xml", + "from": { + "startLines": "19,26", + "startColumns": "4,4", + "startOffsets": "739,1047", + "endLines": "24,29", + "endColumns": "19,19", + "endOffsets": "1041,1162" + }, + "to": { + "startLines": "2,8", + "startColumns": "4,4", + "startOffsets": "105,300", + "endLines": "7,11", + "endColumns": "19,19", + "endOffsets": "295,415" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rCN.json b/src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rCN.json new file mode 100644 index 0000000..78908be --- /dev/null +++ b/src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rCN.json @@ -0,0 +1,84 @@ +{ + "logs": [ + { + "outputFile": "net.micode.notes.app-mergeDebugResources-3:/values-zh-rCN/values-zh-rCN.xml", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rCN\\arrays.xml", + "from": { + "startLines": "-1", + "startColumns": "-1", + "startOffsets": "-1" + }, + "to": { + "startLines": "2", + "startColumns": "4", + "startOffsets": "105", + "endLines": "5", + "endColumns": "19", + "endOffsets": "210" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rCN\\strings.xml", + "from": { + "startLines": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "215,384,457,523,596,646,686,734,782,827,884,938,988,1050,1118,1195,1254,1319,1382,1437,1497,1560,1614,1674,1727,1789,1874,1955,2005,2064,2107,2160,2203,2254,2304,2364,2417,2468,2514,2562,2610,2656,2703,2753,2798,2857,2909,2961,3004,3051,3107,3162,3217,3261,3303,3344,3394,3453,3504,3553,3602,3649,3696,3743,3788,3839,3892,3967,4026,4083,4157,4221,4290,4368,4478,4582,4655,4721,4776,4841,4906,4955,5038,5116,5154,5199,5247,5309,5366,5421,5480,5547,5605,5667,5715,5760,5808,5859,5925", + "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,59,52,61,84,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "379,452,518,591,641,681,729,777,822,879,933,983,1045,1113,1190,1249,1314,1377,1432,1492,1555,1609,1669,1722,1784,1869,1950,2000,2059,2102,2155,2198,2249,2299,2359,2412,2463,2509,2557,2605,2651,2698,2748,2793,2852,2904,2956,2999,3046,3102,3157,3212,3256,3298,3339,3389,3448,3499,3548,3597,3644,3691,3738,3783,3834,3887,3962,4021,4078,4152,4216,4285,4363,4473,4577,4650,4716,4771,4836,4901,4950,5033,5111,5149,5194,5242,5304,5361,5416,5475,5542,5600,5662,5710,5755,5803,5854,5920,5986" + } + } + ] + }, + { + "outputFile": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-mergeDebugResources-3:\\values-zh-rCN\\values-zh-rCN.xml", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rCN\\arrays.xml", + "from": { + "startLines": "18", + "startColumns": "4", + "startOffsets": "712", + "endLines": "21", + "endColumns": "19", + "endOffsets": "817" + }, + "to": { + "startLines": "2", + "startColumns": "4", + "startOffsets": "105", + "endLines": "5", + "endColumns": "19", + "endOffsets": "210" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rCN\\strings.xml", + "from": { + "startLines": "121,71,70,69,68,19,20,21,112,113,120,119,26,77,78,76,75,74,90,89,88,80,60,29,30,81,72,114,67,63,38,44,49,39,59,58,57,53,52,50,51,54,55,45,66,56,64,43,48,47,46,62,42,61,40,41,65,28,34,36,33,35,32,31,25,24,97,96,99,111,104,103,105,106,108,107,98,102,100,101,95,109,110,118,116,115,117,27,79,87,92,91,93,86,85,84,83,22,23", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "6532,3495,3429,3356,3306,827,867,915,6083,6128,6478,6428,1199,3861,3929,3802,3737,3674,4592,4532,4469,4061,2877,1369,1422,4115,3568,6185,3247,3034,1798,2079,2325,1851,2817,2764,2713,2518,2470,2376,2424,2564,2611,2122,3188,2661,3077,2036,2278,2222,2167,2979,1992,2937,1901,1942,3129,1318,1623,1719,1576,1672,1529,1484,1148,1095,4967,4908,5108,6009,5419,5350,5483,5561,5744,5671,5042,5295,5165,5230,4859,5848,5931,6390,6283,6235,6328,1261,4006,4410,4705,4647,4772,4362,4317,4269,4218,963,1029", + "endLines": "123,71,70,69,68,19,20,21,112,113,120,119,26,77,78,76,75,74,90,89,88,80,60,29,30,81,72,114,67,63,38,44,49,39,59,58,57,53,52,50,51,54,55,45,66,56,64,43,48,47,46,62,42,61,40,41,65,28,34,36,33,35,32,31,25,24,97,96,99,111,104,103,105,106,108,107,98,102,100,101,95,109,110,118,116,115,117,27,79,87,92,91,93,86,85,84,83,22,23", + "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,59,52,61,84,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "6704,3563,3490,3424,3351,862,910,958,6123,6180,6527,6473,1256,3924,4001,3856,3797,3732,4642,4587,4527,4110,2932,1417,1479,4195,3644,6230,3301,3072,1846,2117,2371,1896,2872,2812,2759,2559,2513,2419,2465,2606,2656,2162,3242,2708,3124,2074,2320,2273,2217,3029,2031,2974,1937,1987,3183,1364,1667,1763,1618,1714,1571,1524,1194,1143,5037,4962,5160,6078,5478,5414,5556,5666,5843,5739,5103,5345,5225,5290,4903,5926,6004,6423,6323,6278,6385,1313,4056,4464,4767,4700,4829,4405,4357,4312,4264,1024,1090" + }, + "to": { + "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "215,384,457,523,596,646,686,734,782,827,884,938,988,1050,1118,1195,1254,1319,1382,1437,1497,1560,1614,1674,1727,1789,1874,1955,2005,2064,2107,2160,2203,2254,2304,2364,2417,2468,2514,2562,2610,2656,2703,2753,2798,2857,2909,2961,3004,3051,3107,3162,3217,3261,3303,3344,3394,3453,3504,3553,3602,3649,3696,3743,3788,3839,3892,3967,4026,4083,4157,4221,4290,4368,4478,4582,4655,4721,4776,4841,4906,4955,5038,5116,5154,5199,5247,5309,5366,5421,5480,5547,5605,5667,5715,5760,5808,5859,5925", + "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,59,52,61,84,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "379,452,518,591,641,681,729,777,822,879,933,983,1045,1113,1190,1249,1314,1377,1432,1492,1555,1609,1669,1722,1784,1869,1950,2000,2059,2102,2155,2198,2249,2299,2359,2412,2463,2509,2557,2605,2651,2698,2748,2793,2852,2904,2956,2999,3046,3102,3157,3212,3256,3298,3339,3389,3448,3499,3548,3597,3644,3691,3738,3783,3834,3887,3962,4021,4078,4152,4216,4285,4363,4473,4577,4650,4716,4771,4836,4901,4950,5033,5111,5149,5194,5242,5304,5361,5416,5475,5542,5600,5662,5710,5755,5803,5854,5920,5986" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rTW.json b/src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rTW.json new file mode 100644 index 0000000..451fce6 --- /dev/null +++ b/src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rTW.json @@ -0,0 +1,84 @@ +{ + "logs": [ + { + "outputFile": "net.micode.notes.app-mergeDebugResources-3:/values-zh-rTW/values-zh-rTW.xml", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rTW\\arrays.xml", + "from": { + "startLines": "-1", + "startColumns": "-1", + "startOffsets": "-1" + }, + "to": { + "startLines": "2", + "startColumns": "4", + "startOffsets": "105", + "endLines": "5", + "endColumns": "19", + "endOffsets": "210" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rTW\\strings.xml", + "from": { + "startLines": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "215,384,456,522,595,645,685,733,781,826,883,937,987,1049,1117,1194,1253,1319,1382,1437,1497,1560,1614,1674,1727,1789,1873,1953,2003,2062,2105,2158,2201,2252,2302,2362,2415,2466,2512,2560,2608,2654,2701,2751,2796,2855,2907,2959,3002,3049,3105,3160,3215,3259,3301,3342,3392,3451,3502,3551,3600,3647,3694,3741,3786,3837,3890,3965,4024,4081,4155,4219,4288,4366,4476,4580,4653,4719,4774,4839,4904,4953,5036,5114,5152,5197,5245,5307,5364,5419,5478,5545,5603,5665,5713,5758,5806,5857,5923", + "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "379,451,517,590,640,680,728,776,821,878,932,982,1044,1112,1189,1248,1314,1377,1432,1492,1555,1609,1669,1722,1784,1868,1948,1998,2057,2100,2153,2196,2247,2297,2357,2410,2461,2507,2555,2603,2649,2696,2746,2791,2850,2902,2954,2997,3044,3100,3155,3210,3254,3296,3337,3387,3446,3497,3546,3595,3642,3689,3736,3781,3832,3885,3960,4019,4076,4150,4214,4283,4361,4471,4575,4648,4714,4769,4834,4899,4948,5031,5109,5147,5192,5240,5302,5359,5414,5473,5540,5598,5660,5708,5753,5801,5852,5918,5984" + } + } + ] + }, + { + "outputFile": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-mergeDebugResources-3:\\values-zh-rTW\\values-zh-rTW.xml", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rTW\\arrays.xml", + "from": { + "startLines": "18", + "startColumns": "4", + "startOffsets": "712", + "endLines": "21", + "endColumns": "19", + "endOffsets": "817" + }, + "to": { + "startLines": "2", + "startColumns": "4", + "startOffsets": "105", + "endLines": "5", + "endColumns": "19", + "endOffsets": "210" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rTW\\strings.xml", + "from": { + "startLines": "122,72,71,70,69,19,20,21,112,113,121,120,26,76,77,75,74,73,89,88,87,79,61,29,30,80,37,114,68,64,39,45,50,40,60,59,58,54,53,51,52,55,56,46,67,57,65,44,49,48,47,63,43,62,41,42,66,28,34,36,33,35,32,31,25,24,96,95,98,110,103,102,104,105,107,106,97,101,99,100,94,108,109,119,117,116,118,27,78,86,91,90,92,85,84,83,82,22,23", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "6507,3575,3509,3436,3386,827,867,915,6057,6102,6453,6403,1199,3835,3903,3776,3710,3647,4565,4505,4442,4035,2957,1369,1422,4089,1768,6159,3327,3114,1878,2159,2405,1931,2897,2844,2793,2598,2550,2456,2504,2644,2691,2202,3268,2741,3157,2116,2358,2302,2247,3059,2072,3017,1981,2022,3209,1318,1623,1719,1576,1672,1529,1484,1148,1095,4940,4881,5081,5982,5392,5323,5456,5534,5717,5644,5015,5268,5138,5203,4832,5821,5904,6365,6258,6210,6303,1261,3980,4383,4678,4620,4745,4335,4290,4242,4191,963,1029", + "endLines": "124,72,71,70,69,19,20,21,112,113,121,120,26,76,77,75,74,73,89,88,87,79,61,29,30,80,37,114,68,64,39,45,50,40,60,59,58,54,53,51,52,55,56,46,67,57,65,44,49,48,47,63,43,62,41,42,66,28,34,36,33,35,32,31,25,24,96,95,98,110,103,102,104,105,107,106,97,101,99,100,94,108,109,119,117,116,118,27,78,86,91,90,92,85,84,83,82,22,23", + "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "6679,3642,3570,3504,3431,862,910,958,6097,6154,6502,6448,1256,3898,3975,3830,3771,3705,4615,4560,4500,4084,3012,1417,1479,4168,1843,6204,3381,3152,1926,2197,2451,1976,2952,2892,2839,2639,2593,2499,2545,2686,2736,2242,3322,2788,3204,2154,2400,2353,2297,3109,2111,3054,2017,2067,3263,1364,1667,1763,1618,1714,1571,1524,1194,1143,5010,4935,5133,6051,5451,5387,5529,5639,5816,5712,5076,5318,5198,5263,4876,5899,5977,6398,6298,6253,6360,1313,4030,4437,4740,4673,4802,4378,4330,4285,4237,1024,1090" + }, + "to": { + "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "215,384,456,522,595,645,685,733,781,826,883,937,987,1049,1117,1194,1253,1319,1382,1437,1497,1560,1614,1674,1727,1789,1873,1953,2003,2062,2105,2158,2201,2252,2302,2362,2415,2466,2512,2560,2608,2654,2701,2751,2796,2855,2907,2959,3002,3049,3105,3160,3215,3259,3301,3342,3392,3451,3502,3551,3600,3647,3694,3741,3786,3837,3890,3965,4024,4081,4155,4219,4288,4366,4476,4580,4653,4719,4774,4839,4904,4953,5036,5114,5152,5197,5245,5307,5364,5419,5478,5545,5603,5665,5713,5758,5806,5857,5923", + "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "379,451,517,590,640,680,728,776,821,878,932,982,1044,1112,1189,1248,1314,1377,1432,1492,1555,1609,1669,1722,1784,1868,1948,1998,2057,2100,2153,2196,2247,2297,2357,2410,2461,2507,2555,2603,2649,2696,2746,2791,2850,2902,2954,2997,3044,3100,3155,3210,3254,3296,3337,3387,3446,3497,3546,3595,3642,3689,3736,3781,3832,3885,3960,4019,4076,4150,4214,4283,4361,4471,4575,4648,4714,4769,4834,4899,4948,5031,5109,5147,5192,5240,5302,5359,5414,5473,5540,5598,5660,5708,5753,5801,5852,5918,5984" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values.json b/src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values.json new file mode 100644 index 0000000..e5cdd83 --- /dev/null +++ b/src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values.json @@ -0,0 +1,189 @@ +{ + "logs": [ + { + "outputFile": "net.micode.notes.app-mergeDebugResources-3:/values/values.xml", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\strings.xml", + "from": { + "startLines": "128,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "8136,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endLines": "132,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endColumns": "14,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "endOffsets": "8544,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "18,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "739,1092,1188,1271,1367,1436,1479,1531,1583,1632,1695,1753,1804,1888,1982,2090,2161,2245,2328,2394,2477,2579,2640,2702,2753,2831,2884,2944,3049,3108,3210,3265,3336,3385,3443,3490,3549,3606,3677,3738,3795,3845,3897,3950,4000,4050,4110,4163,4229,4291,4354,4401,4456,4544,4602,4664,4714,4759,4802,4862,4929,4984,5039,5092,5139,5192,5248,5296,5351,5404,5488,5555,5619,5715,5789,5870,5959,6122,6266,6345,6420,6502,6561,6641,6721,6776,6898,7001,7042,7095,7152,7226,7291,7359,7445,7525,7594,7688,7747,7802,7864,7924,8034", + "endLines": "22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124", + "endColumns": "14,95,82,95,68,42,51,51,48,62,57,50,83,93,107,70,83,82,65,82,101,60,61,50,77,52,59,104,58,101,54,70,48,57,46,58,56,70,60,56,49,51,52,49,49,59,52,65,61,62,46,54,87,57,61,49,44,42,59,66,54,54,52,46,52,55,47,54,52,83,66,63,95,73,80,88,162,143,78,74,81,58,79,79,54,121,102,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89", + "endOffsets": "1087,1183,1266,1362,1431,1474,1526,1578,1627,1690,1748,1799,1883,1977,2085,2156,2240,2323,2389,2472,2574,2635,2697,2748,2826,2879,2939,3044,3103,3205,3260,3331,3380,3438,3485,3544,3601,3672,3733,3790,3840,3892,3945,3995,4045,4105,4158,4224,4286,4349,4396,4451,4539,4597,4659,4709,4754,4797,4857,4924,4979,5034,5087,5134,5187,5243,5291,5346,5399,5483,5550,5614,5710,5784,5865,5954,6117,6261,6340,6415,6497,6556,6636,6716,6771,6893,6996,7037,7090,7147,7221,7286,7354,7440,7520,7589,7683,7742,7797,7859,7919,8029,8119" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\dimens.xml", + "from": { + "startLines": "-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "13,14,15,16,17", + "startColumns": "4,4,4,4,4", + "startOffsets": "477,529,582,635,687", + "endColumns": "51,52,52,51,51", + "endOffsets": "524,577,630,682,734" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\styles.xml", + "from": { + "startLines": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startColumns": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1", + "startOffsets": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + }, + "to": { + "startLines": "125,129,133,137,140,144,148,152,156,160,164", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "8124,8328,8539,8751,8911,9094,9279,9464,9667,9873,10056", + "endLines": "128,132,136,139,143,147,151,155,159,163,167", + "endColumns": "12,12,12,12,12,12,12,12,12,12,12", + "endOffsets": "8323,8534,8746,8906,9089,9274,9459,9662,9868,10051,10252" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\colors.xml", + "from": { + "startLines": "-1", + "startColumns": "-1", + "startOffsets": "-1" + }, + "to": { + "startLines": "12", + "startColumns": "4", + "startOffsets": "420", + "endColumns": "56", + "endOffsets": "472" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\arrays.xml", + "from": { + "startLines": "19,-1", + "startColumns": "4,-1", + "startOffsets": "758,-1", + "endLines": "24,-1", + "endColumns": "19,-1", + "endOffsets": "1065,-1" + }, + "to": { + "startLines": "2,8", + "startColumns": "4,4", + "startOffsets": "105,300", + "endLines": "7,11", + "endColumns": "19,19", + "endOffsets": "295,415" + } + } + ] + }, + { + "outputFile": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-mergeDebugResources-3:\\values\\values.xml", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\strings.xml", + "from": { + "startLines": "128,72,75,74,73,19,20,21,118,119,127,126,26,81,82,80,79,78,94,93,92,84,39,38,64,29,30,85,41,76,120,71,67,42,48,53,43,63,62,61,57,56,54,55,58,59,49,70,60,68,47,52,51,50,66,46,65,44,45,69,28,34,36,33,35,32,31,25,24,101,100,104,116,109,108,110,111,113,112,102,103,107,105,106,99,114,115,125,123,122,124,27,83,91,96,95,97,90,89,88,87,22,23", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "8008,3898,4159,4063,3994,827,870,922,7506,7555,7950,7899,1282,4613,4707,4542,4458,4375,5574,5491,5389,4883,2004,1953,3397,1486,1539,4944,2097,4242,7618,3827,3582,2156,2471,2772,2214,3326,3265,3208,2986,2934,2831,2884,3036,3086,2518,3761,3146,3631,2424,2717,2629,2571,3520,2374,3475,2271,2314,3694,1431,1750,1858,1703,1805,1647,1599,1227,1174,6030,5963,6271,7409,6635,6554,6709,6798,7040,6961,6114,6189,6495,6335,6415,5908,7184,7306,7858,7731,7674,7784,1366,4815,5303,5709,5640,5789,5244,5189,5127,5067,974,1084", + "endLines": "132,72,75,74,73,19,20,21,118,119,127,126,26,81,82,80,79,78,94,93,92,84,39,38,64,29,30,85,41,76,120,71,67,42,48,53,43,63,62,61,57,56,54,55,58,59,49,70,60,68,47,52,51,50,66,46,65,44,45,69,28,34,36,33,35,32,31,25,24,101,100,104,116,109,108,110,111,113,112,102,103,107,105,106,99,114,115,125,123,122,124,27,83,91,96,95,97,90,89,88,87,22,23", + "endColumns": "14,95,82,95,68,42,51,51,48,62,57,50,83,93,107,70,83,82,65,82,101,60,61,50,77,52,59,104,58,101,54,70,48,57,46,58,56,70,60,56,49,51,52,49,49,59,52,65,61,62,46,54,87,57,61,49,44,42,59,66,54,54,52,46,52,55,47,54,52,83,66,63,95,73,80,88,162,143,78,74,81,58,79,79,54,121,102,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89", + "endOffsets": "8412,3989,4237,4154,4058,865,917,969,7550,7613,8003,7945,1361,4702,4810,4608,4537,4453,5635,5569,5486,4939,2061,1999,3470,1534,1594,5044,2151,4339,7668,3893,3626,2209,2513,2826,2266,3392,3321,3260,3031,2981,2879,2929,3081,3141,2566,3822,3203,3689,2466,2767,2712,2624,3577,2419,3515,2309,2369,3756,1481,1800,1906,1745,1853,1698,1642,1277,1222,6109,6025,6330,7500,6704,6630,6793,6956,7179,7035,6184,6266,6549,6410,6490,5958,7301,7404,7894,7779,7726,7853,1426,4878,5384,5784,5704,5878,5298,5239,5184,5122,1079,1169" + }, + "to": { + "startLines": "18,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "739,1092,1188,1271,1367,1436,1479,1531,1583,1632,1695,1753,1804,1888,1982,2090,2161,2245,2328,2394,2477,2579,2640,2702,2753,2831,2884,2944,3049,3108,3210,3265,3336,3385,3443,3490,3549,3606,3677,3738,3795,3845,3897,3950,4000,4050,4110,4163,4229,4291,4354,4401,4456,4544,4602,4664,4714,4759,4802,4862,4929,4984,5039,5092,5139,5192,5248,5296,5351,5404,5488,5555,5619,5715,5789,5870,5959,6122,6266,6345,6420,6502,6561,6641,6721,6776,6898,7001,7042,7095,7152,7226,7291,7359,7445,7525,7594,7688,7747,7802,7864,7924,8034", + "endLines": "22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124", + "endColumns": "14,95,82,95,68,42,51,51,48,62,57,50,83,93,107,70,83,82,65,82,101,60,61,50,77,52,59,104,58,101,54,70,48,57,46,58,56,70,60,56,49,51,52,49,49,59,52,65,61,62,46,54,87,57,61,49,44,42,59,66,54,54,52,46,52,55,47,54,52,83,66,63,95,73,80,88,162,143,78,74,81,58,79,79,54,121,102,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89", + "endOffsets": "1087,1183,1266,1362,1431,1474,1526,1578,1627,1690,1748,1799,1883,1977,2085,2156,2240,2323,2389,2472,2574,2635,2697,2748,2826,2879,2939,3044,3103,3205,3260,3331,3380,3438,3485,3544,3601,3672,3733,3790,3840,3892,3945,3995,4045,4105,4158,4224,4286,4349,4396,4451,4539,4597,4659,4709,4754,4797,4857,4924,4979,5034,5087,5134,5187,5243,5291,5346,5399,5483,5550,5614,5710,5784,5865,5954,6117,6261,6340,6415,6497,6556,6636,6716,6771,6893,6996,7037,7090,7147,7221,7286,7354,7440,7520,7589,7683,7742,7797,7859,7919,8029,8119" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\dimens.xml", + "from": { + "startLines": "19,20,21,22,18", + "startColumns": "4,4,4,4,4", + "startOffsets": "764,816,869,922,712", + "endColumns": "51,52,52,51,51", + "endOffsets": "811,864,917,969,759" + }, + "to": { + "startLines": "13,14,15,16,17", + "startColumns": "4,4,4,4,4", + "startOffsets": "477,529,582,635,687", + "endColumns": "51,52,52,51,51", + "endOffsets": "524,577,630,682,734" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\styles.xml", + "from": { + "startLines": "50,55,64,60,22,26,30,35,40,18,45", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "2062,2267,2640,2479,895,1078,1263,1449,1653,712,1860", + "endLines": "53,58,67,62,25,29,33,38,43,21,48", + "endColumns": "12,12,12,12,12,12,12,12,12,12,12", + "endOffsets": "2261,2473,2848,2634,1073,1258,1443,1647,1854,890,2056" + }, + "to": { + "startLines": "125,129,133,137,140,144,148,152,156,160,164", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "8124,8328,8539,8751,8911,9094,9279,9464,9667,9873,10056", + "endLines": "128,132,136,139,143,147,151,155,159,163,167", + "endColumns": "12,12,12,12,12,12,12,12,12,12,12", + "endOffsets": "8323,8534,8746,8906,9089,9274,9459,9662,9868,10051,10252" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\colors.xml", + "from": { + "startLines": "18", + "startColumns": "4", + "startOffsets": "712", + "endColumns": "56", + "endOffsets": "764" + }, + "to": { + "startLines": "12", + "startColumns": "4", + "startOffsets": "420", + "endColumns": "56", + "endOffsets": "472" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\arrays.xml", + "from": { + "startLines": "19,26", + "startColumns": "4,4", + "startOffsets": "739,1047", + "endLines": "24,29", + "endColumns": "19,19", + "endOffsets": "1041,1162" + }, + "to": { + "startLines": "2,8", + "startColumns": "4,4", + "startOffsets": "105,300", + "endLines": "7,11", + "endColumns": "19,19", + "endOffsets": "295,415" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/app/build/intermediates/merged_res_blame_folder/debug/out/single/debug.json b/src/app/build/intermediates/merged_res_blame_folder/debug/out/single/debug.json new file mode 100644 index 0000000..986174d --- /dev/null +++ b/src/app/build/intermediates/merged_res_blame_folder/debug/out/single/debug.json @@ -0,0 +1,498 @@ +[ + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_widget_2x.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\widget_2x.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_note_list_dropdown_menu.xml.flat", + "source": "net.micode.notes.app-main-7:/layout/note_list_dropdown_menu.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_red.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_red.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_folder_list_item.xml.flat", + "source": "net.micode.notes.app-main-7:/layout/folder_list_item.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_green_single.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_green_single.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\menu_call_record_folder.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\menu\\call_record_folder.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_background.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_background.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_blue_up.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_blue_up.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_4x_green.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_4x_green.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\menu_note_edit.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\menu\\note_edit.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/menu_sub_folder.xml.flat", + "source": "net.micode.notes.app-main-7:/menu/sub_folder.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_font_normal.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\font_normal.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_green_up.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_green_up.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\color_secondary_text_dark.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\color\\secondary_text_dark.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_green_down.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_green_down.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_title_red.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_title_red.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable_new_note.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable\\new_note.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_folder_list_item.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\folder_list_item.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_new_note_pressed.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\new_note_pressed.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\xml_widget_4x_info.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\xml\\widget_4x_info.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable_new_note.xml.flat", + "source": "net.micode.notes.app-main-7:/drawable/new_note.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_widget_2x.xml.flat", + "source": "net.micode.notes.app-main-7:/layout/widget_2x.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\menu_sub_folder.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\menu\\sub_folder.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_white_down.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_white_down.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/xml_widget_2x_info.xml.flat", + "source": "net.micode.notes.app-main-7:/xml/widget_2x_info.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_title_bar_bg.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\title_bar_bg.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/menu_call_record_folder.xml.flat", + "source": "net.micode.notes.app-main-7:/menu/call_record_folder.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_yellow_single.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_yellow_single.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/xml_preferences.xml.flat", + "source": "net.micode.notes.app-main-7:/xml/preferences.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_dialog_edit_text.xml.flat", + "source": "net.micode.notes.app-main-7:/layout/dialog_edit_text.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_red_single.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_red_single.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_bg_btn_set_color.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\bg_btn_set_color.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_delete.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\delete.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_datetime_picker.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\datetime_picker.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/color_secondary_text_dark.xml.flat", + "source": "net.micode.notes.app-main-7:/color/secondary_text_dark.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/xml_widget_4x_info.xml.flat", + "source": "net.micode.notes.app-main-7:/xml/widget_4x_info.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_clock.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\clock.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_green.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_green.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_blue_middle.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_blue_middle.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\xml_preferences.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\xml\\preferences.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_dialog_edit_text.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\dialog_edit_text.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_note_edit.xml.flat", + "source": "net.micode.notes.app-main-7:/layout/note_edit.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_widget_4x.xml.flat", + "source": "net.micode.notes.app-main-7:/layout/widget_4x.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_title_alert.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\title_alert.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_note_list.xml.flat", + "source": "net.micode.notes.app-main-7:/layout/note_list.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\xml_widget_2x_info.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\xml\\widget_2x_info.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_2x_yellow.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_2x_yellow.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_4x_blue.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_4x_blue.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_yellow_up.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_yellow_up.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_menu_delete.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\menu_delete.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_account_dialog_title.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\account_dialog_title.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/menu_note_list.xml.flat", + "source": "net.micode.notes.app-main-7:/menu/note_list.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_dropdown_icon.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\dropdown_icon.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_title_yellow.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_title_yellow.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_note_list_footer.xml.flat", + "source": "net.micode.notes.app-main-7:/layout/note_list_footer.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_red_down.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_red_down.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_font_super.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\font_super.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_title_blue.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_title_blue.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\raw-zh-rCN_introduction.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\raw-zh-rCN\\introduction" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_white_middle.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_white_middle.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_add_account_text.xml.flat", + "source": "net.micode.notes.app-main-7:/layout/add_account_text.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_datetime_picker.xml.flat", + "source": "net.micode.notes.app-main-7:/layout/datetime_picker.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_2x_white.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_2x_white.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_2x_green.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_2x_green.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_call_record.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\call_record.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_font_size_selector_bg.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\font_size_selector_bg.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/menu_note_edit.xml.flat", + "source": "net.micode.notes.app-main-7:/menu/note_edit.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_account_dialog_title.xml.flat", + "source": "net.micode.notes.app-main-7:/layout/account_dialog_title.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_add_account_text.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\add_account_text.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\menu_note_list_options.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\menu\\note_list_options.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\xml_searchable.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\xml\\searchable.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_bg_color_btn_mask.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\bg_color_btn_mask.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_yellow.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_yellow.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_menu_move.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\menu_move.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_green_middle.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_green_middle.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_note_list_footer.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\note_list_footer.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_note_edit_color_selector_panel.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\note_edit_color_selector_panel.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_search_result.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\search_result.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_note_list.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\note_list.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_note_item.xml.flat", + "source": "net.micode.notes.app-main-7:/layout/note_item.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_yellow_middle.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_yellow_middle.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_yellow_down.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_yellow_down.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_note_item.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\note_item.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_settings_header.xml.flat", + "source": "net.micode.notes.app-main-7:/layout/settings_header.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_icon_app.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\icon_app.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_font_large.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\font_large.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_white_single.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_white_single.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_widget_4x.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\widget_4x.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_red_middle.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_red_middle.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_red_up.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_red_up.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_selected.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\selected.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\menu_note_list_dropdown.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\menu\\note_list_dropdown.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_2x_blue.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_2x_blue.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_white.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_white.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\raw_introduction.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\raw\\introduction" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_4x_red.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_4x_red.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/raw-zh-rCN_introduction.flat", + "source": "net.micode.notes.app-main-7:/raw-zh-rCN/introduction" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_4x_yellow.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_4x_yellow.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_footer_bg.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_footer_bg.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_blue_single.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_blue_single.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_4x_white.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_4x_white.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_font_small.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\font_small.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/xml_searchable.xml.flat", + "source": "net.micode.notes.app-main-7:/xml/searchable.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_notification.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\notification.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\menu_call_note_edit.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\menu\\call_note_edit.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_widget_2x_red.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\widget_2x_red.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_title_white.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_title_white.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_folder.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_folder.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_note_list_dropdown_menu.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\note_list_dropdown_menu.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/menu_note_list_dropdown.xml.flat", + "source": "net.micode.notes.app-main-7:/menu/note_list_dropdown.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_settings_header.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\settings_header.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_note_edit_list_item.xml.flat", + "source": "net.micode.notes.app-main-7:/layout/note_edit_list_item.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_title_green.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_title_green.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_new_note_normal.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\new_note_normal.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_white_up.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_white_up.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\color_primary_text_dark.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\color\\primary_text_dark.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_note_edit_list_item.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\note_edit_list_item.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_list_blue_down.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\list_blue_down.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/menu_note_list_options.xml.flat", + "source": "net.micode.notes.app-main-7:/menu/note_list_options.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/menu_call_note_edit.xml.flat", + "source": "net.micode.notes.app-main-7:/menu/call_note_edit.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/color_primary_text_dark.xml.flat", + "source": "net.micode.notes.app-main-7:/color/primary_text_dark.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\layout_note_edit.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\layout\\note_edit.xml" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\drawable-hdpi_edit_blue.9.png.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\drawable-hdpi\\edit_blue.9.png" + }, + { + "merged": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-merged_res-5:\\menu_note_list.xml.flat", + "source": "D:\\MI_Note\\gradleRepository\\daemon\\7.5\\net.micode.notes.app-main-7:\\menu\\note_list.xml" + } +] \ No newline at end of file diff --git a/src/app/build/intermediates/merged_res_blame_folder/release/out/multi-v2/release.json b/src/app/build/intermediates/merged_res_blame_folder/release/out/multi-v2/release.json new file mode 100644 index 0000000..ebaa881 --- /dev/null +++ b/src/app/build/intermediates/merged_res_blame_folder/release/out/multi-v2/release.json @@ -0,0 +1,186 @@ +{ + "logs": [ + { + "outputFile": "net.micode.notes.app-merged_res-5:/values-zh-rCN_values-zh-rCN.arsc.flat", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rCN\\arrays.xml", + "from": { + "startLines": "18", + "startColumns": "4", + "startOffsets": "730", + "endLines": "21", + "endColumns": "19", + "endOffsets": "838" + }, + "to": { + "startLines": "2", + "startColumns": "4", + "startOffsets": "105", + "endLines": "5", + "endColumns": "19", + "endOffsets": "210" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rCN\\strings.xml", + "from": { + "startLines": "121,71,70,69,68,19,20,21,112,113,120,119,26,77,78,76,75,74,90,89,88,80,60,29,30,81,72,114,67,63,38,44,49,39,59,58,57,53,52,50,51,54,55,45,66,56,64,43,48,47,46,62,42,61,40,41,65,28,34,36,33,35,32,31,25,24,97,96,99,111,104,103,105,106,108,107,98,102,100,101,95,109,110,118,116,115,117,27,79,87,92,91,93,86,85,84,83,22,23", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "6653,3566,3499,3425,3374,846,887,936,6195,6241,6598,6547,1225,3938,4007,3878,3812,3748,4682,4621,4557,4141,2937,1398,1452,4196,3640,6299,3314,3097,1836,2123,2374,1890,2876,2822,2770,2571,2522,2426,2475,2618,2666,2167,3254,2717,3141,2079,2326,2269,2213,3041,2034,2998,1941,1983,3194,1346,1657,1755,1609,1707,1561,1515,1173,1119,5064,5004,5207,6120,5523,5453,5588,5667,5852,5778,5140,5397,5265,5331,4954,5957,6041,6508,6399,6350,6445,1288,4085,4497,4797,4738,4865,4448,4402,4353,4301,985,1052", + "endLines": "123,71,70,69,68,19,20,21,112,113,120,119,26,77,78,76,75,74,90,89,88,80,60,29,30,81,72,114,67,63,38,44,49,39,59,58,57,53,52,50,51,54,55,45,66,56,64,43,48,47,46,62,42,61,40,41,65,28,34,36,33,35,32,31,25,24,97,96,99,111,104,103,105,106,108,107,98,102,100,101,95,109,110,118,116,115,117,27,79,87,92,91,93,86,85,84,83,22,23", + "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,59,52,61,84,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "6827,3634,3560,3493,3419,881,930,979,6235,6293,6647,6592,1282,4001,4079,3932,3872,3806,4732,4676,4615,4190,2992,1446,1509,4276,3716,6344,3368,3135,1884,2161,2420,1935,2931,2870,2816,2612,2565,2469,2516,2660,2711,2207,3308,2764,3188,2117,2368,2320,2263,3091,2073,3035,1977,2028,3248,1392,1701,1799,1651,1749,1603,1555,1219,1167,5134,5058,5259,6189,5582,5517,5661,5772,5951,5846,5201,5447,5325,5391,4998,6035,6114,6541,6439,6393,6502,1340,4135,4551,4859,4791,4922,4491,4442,4396,4347,1046,1113" + }, + "to": { + "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "215,384,457,523,596,646,686,734,782,827,884,938,988,1050,1118,1195,1254,1319,1382,1437,1497,1560,1614,1674,1727,1789,1874,1955,2005,2064,2107,2160,2203,2254,2304,2364,2417,2468,2514,2562,2610,2656,2703,2753,2798,2857,2909,2961,3004,3051,3107,3162,3217,3261,3303,3344,3394,3453,3504,3553,3602,3649,3696,3743,3788,3839,3892,3967,4026,4083,4157,4221,4290,4368,4478,4582,4655,4721,4776,4841,4906,4955,5038,5116,5154,5199,5247,5309,5366,5421,5480,5547,5605,5667,5715,5760,5808,5859,5925", + "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,59,52,61,84,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "379,452,518,591,641,681,729,777,822,879,933,983,1045,1113,1190,1249,1314,1377,1432,1492,1555,1609,1669,1722,1784,1869,1950,2000,2059,2102,2155,2198,2249,2299,2359,2412,2463,2509,2557,2605,2651,2698,2748,2793,2852,2904,2956,2999,3046,3102,3157,3212,3256,3298,3339,3389,3448,3499,3548,3597,3644,3691,3738,3783,3834,3887,3962,4021,4078,4152,4216,4285,4363,4473,4577,4650,4716,4771,4836,4901,4950,5033,5111,5149,5194,5242,5304,5361,5416,5475,5542,5600,5662,5710,5755,5803,5854,5920,5986" + } + } + ] + }, + { + "outputFile": "net.micode.notes.app-merged_res-5:/values_values.arsc.flat", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\strings.xml", + "from": { + "startLines": "128,72,75,74,73,19,20,21,118,119,127,126,26,81,82,80,79,78,94,93,92,84,39,38,64,29,30,85,41,76,120,71,67,42,48,53,43,63,62,61,57,56,54,55,58,59,49,70,60,68,47,52,51,50,66,46,65,44,45,69,28,34,36,33,35,32,31,25,24,101,100,104,116,109,108,110,111,113,112,102,103,107,105,106,99,114,115,125,123,122,124,27,83,91,96,95,97,90,89,88,87,22,23", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "8136,3970,4234,4137,4067,846,890,943,7624,7674,8077,8025,1308,4694,4789,4622,4537,4453,5668,5584,5481,4967,2043,1991,3461,1515,1569,5029,2138,4318,7738,3898,3649,2198,2519,2825,2257,3389,3327,3269,3043,2990,2885,2939,3094,3145,2567,3831,3206,3699,2471,2769,2680,2621,3586,2420,3540,2315,2359,3763,1459,1784,1894,1736,1840,1679,1630,1252,1198,6131,6063,6375,7525,6744,6662,6819,6909,7153,7073,6216,6292,6602,6440,6521,6007,7298,7421,7983,7854,7796,7908,1393,4898,5394,5805,5735,5886,5334,5278,5215,5154,996,1107", + "endLines": "132,72,75,74,73,19,20,21,118,119,127,126,26,81,82,80,79,78,94,93,92,84,39,38,64,29,30,85,41,76,120,71,67,42,48,53,43,63,62,61,57,56,54,55,58,59,49,70,60,68,47,52,51,50,66,46,65,44,45,69,28,34,36,33,35,32,31,25,24,101,100,104,116,109,108,110,111,113,112,102,103,107,105,106,99,114,115,125,123,122,124,27,83,91,96,95,97,90,89,88,87,22,23", + "endColumns": "14,95,82,95,68,42,51,51,48,62,57,50,83,93,107,70,83,82,65,82,101,60,61,50,77,52,59,104,58,101,54,70,48,57,46,58,56,70,60,56,49,51,52,49,49,59,52,65,61,62,46,54,87,57,61,49,44,42,59,66,54,54,52,46,52,55,47,54,52,83,66,63,95,73,80,88,162,143,78,74,81,58,79,79,54,121,102,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89", + "endOffsets": "8544,4061,4312,4228,4131,884,937,990,7668,7732,8130,8071,1387,4783,4892,4688,4616,4531,5729,5662,5578,5023,2100,2037,3534,1563,1624,5129,2192,4415,7788,3964,3693,2251,2561,2879,2309,3455,3383,3321,3088,3037,2933,2984,3139,3200,2615,3892,3263,3757,2513,2819,2763,2674,3643,2465,3580,2353,2414,3825,1509,1834,1942,1778,1888,1730,1673,1302,1246,6210,6125,6434,7616,6813,6738,6903,7067,7292,7147,6286,6369,6656,6515,6596,6057,7415,7519,8019,7902,7848,7977,1453,4961,5475,5880,5799,5975,5388,5328,5272,5209,1101,1192" + }, + "to": { + "startLines": "18,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "739,1092,1188,1271,1367,1436,1479,1531,1583,1632,1695,1753,1804,1888,1982,2090,2161,2245,2328,2394,2477,2579,2640,2702,2753,2831,2884,2944,3049,3108,3210,3265,3336,3385,3443,3490,3549,3606,3677,3738,3795,3845,3897,3950,4000,4050,4110,4163,4229,4291,4354,4401,4456,4544,4602,4664,4714,4759,4802,4862,4929,4984,5039,5092,5139,5192,5248,5296,5351,5404,5488,5555,5619,5715,5789,5870,5959,6122,6266,6345,6420,6502,6561,6641,6721,6776,6898,7001,7042,7095,7152,7226,7291,7359,7445,7525,7594,7688,7747,7802,7864,7924,8034", + "endLines": "22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124", + "endColumns": "14,95,82,95,68,42,51,51,48,62,57,50,83,93,107,70,83,82,65,82,101,60,61,50,77,52,59,104,58,101,54,70,48,57,46,58,56,70,60,56,49,51,52,49,49,59,52,65,61,62,46,54,87,57,61,49,44,42,59,66,54,54,52,46,52,55,47,54,52,83,66,63,95,73,80,88,162,143,78,74,81,58,79,79,54,121,102,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89", + "endOffsets": "1087,1183,1266,1362,1431,1474,1526,1578,1627,1690,1748,1799,1883,1977,2085,2156,2240,2323,2389,2472,2574,2635,2697,2748,2826,2879,2939,3044,3103,3205,3260,3331,3380,3438,3485,3544,3601,3672,3733,3790,3840,3892,3945,3995,4045,4105,4158,4224,4286,4349,4396,4451,4539,4597,4659,4709,4754,4797,4857,4924,4979,5034,5087,5134,5187,5243,5291,5346,5399,5483,5550,5614,5710,5784,5865,5954,6117,6261,6340,6415,6497,6556,6636,6716,6771,6893,6996,7037,7090,7147,7221,7286,7354,7440,7520,7589,7683,7742,7797,7859,7919,8029,8119" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\dimens.xml", + "from": { + "startLines": "19,20,21,22,18", + "startColumns": "4,4,4,4,4", + "startOffsets": "783,836,890,944,730", + "endColumns": "51,52,52,51,51", + "endOffsets": "830,884,938,991,777" + }, + "to": { + "startLines": "13,14,15,16,17", + "startColumns": "4,4,4,4,4", + "startOffsets": "477,529,582,635,687", + "endColumns": "51,52,52,51,51", + "endOffsets": "524,577,630,682,734" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\styles.xml", + "from": { + "startLines": "50,55,64,60,22,26,30,35,40,18,45", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "2112,2322,2704,2539,917,1104,1293,1484,1693,730,1905", + "endLines": "53,58,67,62,25,29,33,38,43,21,48", + "endColumns": "12,12,12,12,12,12,12,12,12,12,12", + "endOffsets": "2314,2531,2915,2696,1098,1287,1476,1685,1897,911,2104" + }, + "to": { + "startLines": "125,129,133,137,140,144,148,152,156,160,164", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "8124,8328,8539,8751,8911,9094,9279,9464,9667,9873,10056", + "endLines": "128,132,136,139,143,147,151,155,159,163,167", + "endColumns": "12,12,12,12,12,12,12,12,12,12,12", + "endOffsets": "8323,8534,8746,8906,9089,9274,9459,9662,9868,10051,10252" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\colors.xml", + "from": { + "startLines": "18", + "startColumns": "4", + "startOffsets": "730", + "endColumns": "56", + "endOffsets": "782" + }, + "to": { + "startLines": "12", + "startColumns": "4", + "startOffsets": "420", + "endColumns": "56", + "endOffsets": "472" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\arrays.xml", + "from": { + "startLines": "19,26", + "startColumns": "4,4", + "startOffsets": "758,1073", + "endLines": "24,29", + "endColumns": "19,19", + "endOffsets": "1065,1191" + }, + "to": { + "startLines": "2,8", + "startColumns": "4,4", + "startOffsets": "105,300", + "endLines": "7,11", + "endColumns": "19,19", + "endOffsets": "295,415" + } + } + ] + }, + { + "outputFile": "net.micode.notes.app-merged_res-5:/values-zh-rTW_values-zh-rTW.arsc.flat", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rTW\\arrays.xml", + "from": { + "startLines": "18", + "startColumns": "4", + "startOffsets": "730", + "endLines": "21", + "endColumns": "19", + "endOffsets": "838" + }, + "to": { + "startLines": "2", + "startColumns": "4", + "startOffsets": "105", + "endLines": "5", + "endColumns": "19", + "endOffsets": "210" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rTW\\strings.xml", + "from": { + "startLines": "122,72,71,70,69,19,20,21,112,113,121,120,26,76,77,75,74,73,89,88,87,79,61,29,30,80,37,114,68,64,39,45,50,40,60,59,58,54,53,51,52,55,56,46,67,57,65,44,49,48,47,63,43,62,41,42,66,28,34,36,33,35,32,31,25,24,96,95,98,110,103,102,104,105,107,106,97,101,99,100,94,108,109,119,117,116,118,27,78,86,91,90,92,85,84,83,82,22,23", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "6645,3663,3596,3522,3471,862,903,952,6185,6231,6590,6539,1241,3927,3996,3867,3800,3736,4670,4609,4545,4130,3034,1414,1468,4185,1821,6289,3411,3194,1933,2220,2471,1987,2973,2919,2867,2668,2619,2523,2572,2715,2763,2264,3351,2814,3238,2176,2423,2366,2310,3138,2131,3095,2038,2080,3291,1362,1673,1771,1625,1723,1577,1531,1189,1135,5052,4992,5195,6108,5511,5441,5576,5655,5840,5766,5128,5385,5253,5319,4942,5945,6029,6500,6391,6342,6437,1304,4074,4485,4785,4726,4853,4436,4390,4341,4289,1001,1068", + "endLines": "124,72,71,70,69,19,20,21,112,113,121,120,26,76,77,75,74,73,89,88,87,79,61,29,30,80,37,114,68,64,39,45,50,40,60,59,58,54,53,51,52,55,56,46,67,57,65,44,49,48,47,63,43,62,41,42,66,28,34,36,33,35,32,31,25,24,96,95,98,110,103,102,104,105,107,106,97,101,99,100,94,108,109,119,117,116,118,27,78,86,91,90,92,85,84,83,82,22,23", + "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "6819,3730,3657,3590,3516,897,946,995,6225,6283,6639,6584,1298,3990,4068,3921,3861,3794,4720,4664,4603,4179,3089,1462,1525,4264,1896,6334,3465,3232,1981,2258,2517,2032,3028,2967,2913,2709,2662,2566,2613,2757,2808,2304,3405,2861,3285,2214,2465,2417,2360,3188,2170,3132,2074,2125,3345,1408,1717,1815,1667,1765,1619,1571,1235,1183,5122,5046,5247,6177,5570,5505,5649,5760,5939,5834,5189,5435,5313,5379,4986,6023,6102,6533,6431,6385,6494,1356,4124,4539,4847,4779,4910,4479,4430,4384,4335,1062,1129" + }, + "to": { + "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "215,384,456,522,595,645,685,733,781,826,883,937,987,1049,1117,1194,1253,1319,1382,1437,1497,1560,1614,1674,1727,1789,1873,1953,2003,2062,2105,2158,2201,2252,2302,2362,2415,2466,2512,2560,2608,2654,2701,2751,2796,2855,2907,2959,3002,3049,3105,3160,3215,3259,3301,3342,3392,3451,3502,3551,3600,3647,3694,3741,3786,3837,3890,3965,4024,4081,4155,4219,4288,4366,4476,4580,4653,4719,4774,4839,4904,4953,5036,5114,5152,5197,5245,5307,5364,5419,5478,5545,5603,5665,5713,5758,5806,5857,5923", + "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "379,451,517,590,640,680,728,776,821,878,932,982,1044,1112,1189,1248,1314,1377,1432,1492,1555,1609,1669,1722,1784,1868,1948,1998,2057,2100,2153,2196,2247,2297,2357,2410,2461,2507,2555,2603,2649,2696,2746,2791,2850,2902,2954,2997,3044,3100,3155,3210,3254,3296,3337,3387,3446,3497,3546,3595,3642,3689,3736,3781,3832,3885,3960,4019,4076,4150,4214,4283,4361,4471,4575,4648,4714,4769,4834,4899,4948,5031,5109,5147,5192,5240,5302,5359,5414,5473,5540,5598,5660,5708,5753,5801,5852,5918,5984" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/app/build/intermediates/merged_res_blame_folder/release/out/multi-v2/values-zh-rCN.json b/src/app/build/intermediates/merged_res_blame_folder/release/out/multi-v2/values-zh-rCN.json new file mode 100644 index 0000000..6909f61 --- /dev/null +++ b/src/app/build/intermediates/merged_res_blame_folder/release/out/multi-v2/values-zh-rCN.json @@ -0,0 +1,47 @@ +{ + "logs": [ + { + "outputFile": "net.micode.notes.app-mergeReleaseResources-3:/values-zh-rCN/values-zh-rCN.xml", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rCN\\arrays.xml", + "from": { + "startLines": "18", + "startColumns": "4", + "startOffsets": "730", + "endLines": "21", + "endColumns": "19", + "endOffsets": "838" + }, + "to": { + "startLines": "2", + "startColumns": "4", + "startOffsets": "105", + "endLines": "5", + "endColumns": "19", + "endOffsets": "210" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rCN\\strings.xml", + "from": { + "startLines": "121,71,70,69,68,19,20,21,112,113,120,119,26,77,78,76,75,74,90,89,88,80,60,29,30,81,72,114,67,63,38,44,49,39,59,58,57,53,52,50,51,54,55,45,66,56,64,43,48,47,46,62,42,61,40,41,65,28,34,36,33,35,32,31,25,24,97,96,99,111,104,103,105,106,108,107,98,102,100,101,95,109,110,118,116,115,117,27,79,87,92,91,93,86,85,84,83,22,23", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "6653,3566,3499,3425,3374,846,887,936,6195,6241,6598,6547,1225,3938,4007,3878,3812,3748,4682,4621,4557,4141,2937,1398,1452,4196,3640,6299,3314,3097,1836,2123,2374,1890,2876,2822,2770,2571,2522,2426,2475,2618,2666,2167,3254,2717,3141,2079,2326,2269,2213,3041,2034,2998,1941,1983,3194,1346,1657,1755,1609,1707,1561,1515,1173,1119,5064,5004,5207,6120,5523,5453,5588,5667,5852,5778,5140,5397,5265,5331,4954,5957,6041,6508,6399,6350,6445,1288,4085,4497,4797,4738,4865,4448,4402,4353,4301,985,1052", + "endLines": "123,71,70,69,68,19,20,21,112,113,120,119,26,77,78,76,75,74,90,89,88,80,60,29,30,81,72,114,67,63,38,44,49,39,59,58,57,53,52,50,51,54,55,45,66,56,64,43,48,47,46,62,42,61,40,41,65,28,34,36,33,35,32,31,25,24,97,96,99,111,104,103,105,106,108,107,98,102,100,101,95,109,110,118,116,115,117,27,79,87,92,91,93,86,85,84,83,22,23", + "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,59,52,61,84,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "6827,3634,3560,3493,3419,881,930,979,6235,6293,6647,6592,1282,4001,4079,3932,3872,3806,4732,4676,4615,4190,2992,1446,1509,4276,3716,6344,3368,3135,1884,2161,2420,1935,2931,2870,2816,2612,2565,2469,2516,2660,2711,2207,3308,2764,3188,2117,2368,2320,2263,3091,2073,3035,1977,2028,3248,1392,1701,1799,1651,1749,1603,1555,1219,1167,5134,5058,5259,6189,5582,5517,5661,5772,5951,5846,5201,5447,5325,5391,4998,6035,6114,6541,6439,6393,6502,1340,4135,4551,4859,4791,4922,4491,4442,4396,4347,1046,1113" + }, + "to": { + "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "215,384,457,523,596,646,686,734,782,827,884,938,988,1050,1118,1195,1254,1319,1382,1437,1497,1560,1614,1674,1727,1789,1874,1955,2005,2064,2107,2160,2203,2254,2304,2364,2417,2468,2514,2562,2610,2656,2703,2753,2798,2857,2909,2961,3004,3051,3107,3162,3217,3261,3303,3344,3394,3453,3504,3553,3602,3649,3696,3743,3788,3839,3892,3967,4026,4083,4157,4221,4290,4368,4478,4582,4655,4721,4776,4841,4906,4955,5038,5116,5154,5199,5247,5309,5366,5421,5480,5547,5605,5667,5715,5760,5808,5859,5925", + "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,59,52,61,84,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "379,452,518,591,641,681,729,777,822,879,933,983,1045,1113,1190,1249,1314,1377,1432,1492,1555,1609,1669,1722,1784,1869,1950,2000,2059,2102,2155,2198,2249,2299,2359,2412,2463,2509,2557,2605,2651,2698,2748,2793,2852,2904,2956,2999,3046,3102,3157,3212,3256,3298,3339,3389,3448,3499,3548,3597,3644,3691,3738,3783,3834,3887,3962,4021,4078,4152,4216,4285,4363,4473,4577,4650,4716,4771,4836,4901,4950,5033,5111,5149,5194,5242,5304,5361,5416,5475,5542,5600,5662,5710,5755,5803,5854,5920,5986" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/app/build/intermediates/merged_res_blame_folder/release/out/multi-v2/values-zh-rTW.json b/src/app/build/intermediates/merged_res_blame_folder/release/out/multi-v2/values-zh-rTW.json new file mode 100644 index 0000000..d74f63c --- /dev/null +++ b/src/app/build/intermediates/merged_res_blame_folder/release/out/multi-v2/values-zh-rTW.json @@ -0,0 +1,47 @@ +{ + "logs": [ + { + "outputFile": "net.micode.notes.app-mergeReleaseResources-3:/values-zh-rTW/values-zh-rTW.xml", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rTW\\arrays.xml", + "from": { + "startLines": "18", + "startColumns": "4", + "startOffsets": "730", + "endLines": "21", + "endColumns": "19", + "endOffsets": "838" + }, + "to": { + "startLines": "2", + "startColumns": "4", + "startOffsets": "105", + "endLines": "5", + "endColumns": "19", + "endOffsets": "210" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values-zh-rTW\\strings.xml", + "from": { + "startLines": "122,72,71,70,69,19,20,21,112,113,121,120,26,76,77,75,74,73,89,88,87,79,61,29,30,80,37,114,68,64,39,45,50,40,60,59,58,54,53,51,52,55,56,46,67,57,65,44,49,48,47,63,43,62,41,42,66,28,34,36,33,35,32,31,25,24,96,95,98,110,103,102,104,105,107,106,97,101,99,100,94,108,109,119,117,116,118,27,78,86,91,90,92,85,84,83,82,22,23", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "6645,3663,3596,3522,3471,862,903,952,6185,6231,6590,6539,1241,3927,3996,3867,3800,3736,4670,4609,4545,4130,3034,1414,1468,4185,1821,6289,3411,3194,1933,2220,2471,1987,2973,2919,2867,2668,2619,2523,2572,2715,2763,2264,3351,2814,3238,2176,2423,2366,2310,3138,2131,3095,2038,2080,3291,1362,1673,1771,1625,1723,1577,1531,1189,1135,5052,4992,5195,6108,5511,5441,5576,5655,5840,5766,5128,5385,5253,5319,4942,5945,6029,6500,6391,6342,6437,1304,4074,4485,4785,4726,4853,4436,4390,4341,4289,1001,1068", + "endLines": "124,72,71,70,69,19,20,21,112,113,121,120,26,76,77,75,74,73,89,88,87,79,61,29,30,80,37,114,68,64,39,45,50,40,60,59,58,54,53,51,52,55,56,46,67,57,65,44,49,48,47,63,43,62,41,42,66,28,34,36,33,35,32,31,25,24,96,95,98,110,103,102,104,105,107,106,97,101,99,100,94,108,109,119,117,116,118,27,78,86,91,90,92,85,84,83,82,22,23", + "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "6819,3730,3657,3590,3516,897,946,995,6225,6283,6639,6584,1298,3990,4068,3921,3861,3794,4720,4664,4603,4179,3089,1462,1525,4264,1896,6334,3465,3232,1981,2258,2517,2032,3028,2967,2913,2709,2662,2566,2613,2757,2808,2304,3405,2861,3285,2214,2465,2417,2360,3188,2170,3132,2074,2125,3345,1408,1717,1815,1667,1765,1619,1571,1235,1183,5122,5046,5247,6177,5570,5505,5649,5760,5939,5834,5189,5435,5313,5379,4986,6023,6102,6533,6431,6385,6494,1356,4124,4539,4847,4779,4910,4479,4430,4384,4335,1062,1129" + }, + "to": { + "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "215,384,456,522,595,645,685,733,781,826,883,937,987,1049,1117,1194,1253,1319,1382,1437,1497,1560,1614,1674,1727,1789,1873,1953,2003,2062,2105,2158,2201,2252,2302,2362,2415,2466,2512,2560,2608,2654,2701,2751,2796,2855,2907,2959,3002,3049,3105,3160,3215,3259,3301,3342,3392,3451,3502,3551,3600,3647,3694,3741,3786,3837,3890,3965,4024,4081,4155,4219,4288,4366,4476,4580,4653,4719,4774,4839,4904,4953,5036,5114,5152,5197,5245,5307,5364,5419,5478,5545,5603,5665,5713,5758,5806,5857,5923", + "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106", + "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65", + "endOffsets": "379,451,517,590,640,680,728,776,821,878,932,982,1044,1112,1189,1248,1314,1377,1432,1492,1555,1609,1669,1722,1784,1868,1948,1998,2057,2100,2153,2196,2247,2297,2357,2410,2461,2507,2555,2603,2649,2696,2746,2791,2850,2902,2954,2997,3044,3100,3155,3210,3254,3296,3337,3387,3446,3497,3546,3595,3642,3689,3736,3781,3832,3885,3960,4019,4076,4150,4214,4283,4361,4471,4575,4648,4714,4769,4834,4899,4948,5031,5109,5147,5192,5240,5302,5359,5414,5473,5540,5598,5660,5708,5753,5801,5852,5918,5984" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/app/build/intermediates/merged_res_blame_folder/release/out/multi-v2/values.json b/src/app/build/intermediates/merged_res_blame_folder/release/out/multi-v2/values.json new file mode 100644 index 0000000..a7e5c5f --- /dev/null +++ b/src/app/build/intermediates/merged_res_blame_folder/release/out/multi-v2/values.json @@ -0,0 +1,100 @@ +{ + "logs": [ + { + "outputFile": "net.micode.notes.app-mergeReleaseResources-3:/values/values.xml", + "map": [ + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\strings.xml", + "from": { + "startLines": "128,72,75,74,73,19,20,21,118,119,127,126,26,81,82,80,79,78,94,93,92,84,39,38,64,29,30,85,41,76,120,71,67,42,48,53,43,63,62,61,57,56,54,55,58,59,49,70,60,68,47,52,51,50,66,46,65,44,45,69,28,34,36,33,35,32,31,25,24,101,100,104,116,109,108,110,111,113,112,102,103,107,105,106,99,114,115,125,123,122,124,27,83,91,96,95,97,90,89,88,87,22,23", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "8136,3970,4234,4137,4067,846,890,943,7624,7674,8077,8025,1308,4694,4789,4622,4537,4453,5668,5584,5481,4967,2043,1991,3461,1515,1569,5029,2138,4318,7738,3898,3649,2198,2519,2825,2257,3389,3327,3269,3043,2990,2885,2939,3094,3145,2567,3831,3206,3699,2471,2769,2680,2621,3586,2420,3540,2315,2359,3763,1459,1784,1894,1736,1840,1679,1630,1252,1198,6131,6063,6375,7525,6744,6662,6819,6909,7153,7073,6216,6292,6602,6440,6521,6007,7298,7421,7983,7854,7796,7908,1393,4898,5394,5805,5735,5886,5334,5278,5215,5154,996,1107", + "endLines": "132,72,75,74,73,19,20,21,118,119,127,126,26,81,82,80,79,78,94,93,92,84,39,38,64,29,30,85,41,76,120,71,67,42,48,53,43,63,62,61,57,56,54,55,58,59,49,70,60,68,47,52,51,50,66,46,65,44,45,69,28,34,36,33,35,32,31,25,24,101,100,104,116,109,108,110,111,113,112,102,103,107,105,106,99,114,115,125,123,122,124,27,83,91,96,95,97,90,89,88,87,22,23", + "endColumns": "14,95,82,95,68,42,51,51,48,62,57,50,83,93,107,70,83,82,65,82,101,60,61,50,77,52,59,104,58,101,54,70,48,57,46,58,56,70,60,56,49,51,52,49,49,59,52,65,61,62,46,54,87,57,61,49,44,42,59,66,54,54,52,46,52,55,47,54,52,83,66,63,95,73,80,88,162,143,78,74,81,58,79,79,54,121,102,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89", + "endOffsets": "8544,4061,4312,4228,4131,884,937,990,7668,7732,8130,8071,1387,4783,4892,4688,4616,4531,5729,5662,5578,5023,2100,2037,3534,1563,1624,5129,2192,4415,7788,3964,3693,2251,2561,2879,2309,3455,3383,3321,3088,3037,2933,2984,3139,3200,2615,3892,3263,3757,2513,2819,2763,2674,3643,2465,3580,2353,2414,3825,1509,1834,1942,1778,1888,1730,1673,1302,1246,6210,6125,6434,7616,6813,6738,6903,7067,7292,7147,6286,6369,6656,6515,6596,6057,7415,7519,8019,7902,7848,7977,1453,4961,5475,5880,5799,5975,5388,5328,5272,5209,1101,1192" + }, + "to": { + "startLines": "18,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "739,1092,1188,1271,1367,1436,1479,1531,1583,1632,1695,1753,1804,1888,1982,2090,2161,2245,2328,2394,2477,2579,2640,2702,2753,2831,2884,2944,3049,3108,3210,3265,3336,3385,3443,3490,3549,3606,3677,3738,3795,3845,3897,3950,4000,4050,4110,4163,4229,4291,4354,4401,4456,4544,4602,4664,4714,4759,4802,4862,4929,4984,5039,5092,5139,5192,5248,5296,5351,5404,5488,5555,5619,5715,5789,5870,5959,6122,6266,6345,6420,6502,6561,6641,6721,6776,6898,7001,7042,7095,7152,7226,7291,7359,7445,7525,7594,7688,7747,7802,7864,7924,8034", + "endLines": "22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124", + "endColumns": "14,95,82,95,68,42,51,51,48,62,57,50,83,93,107,70,83,82,65,82,101,60,61,50,77,52,59,104,58,101,54,70,48,57,46,58,56,70,60,56,49,51,52,49,49,59,52,65,61,62,46,54,87,57,61,49,44,42,59,66,54,54,52,46,52,55,47,54,52,83,66,63,95,73,80,88,162,143,78,74,81,58,79,79,54,121,102,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89", + "endOffsets": "1087,1183,1266,1362,1431,1474,1526,1578,1627,1690,1748,1799,1883,1977,2085,2156,2240,2323,2389,2472,2574,2635,2697,2748,2826,2879,2939,3044,3103,3205,3260,3331,3380,3438,3485,3544,3601,3672,3733,3790,3840,3892,3945,3995,4045,4105,4158,4224,4286,4349,4396,4451,4539,4597,4659,4709,4754,4797,4857,4924,4979,5034,5087,5134,5187,5243,5291,5346,5399,5483,5550,5614,5710,5784,5865,5954,6117,6261,6340,6415,6497,6556,6636,6716,6771,6893,6996,7037,7090,7147,7221,7286,7354,7440,7520,7589,7683,7742,7797,7859,7919,8029,8119" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\dimens.xml", + "from": { + "startLines": "19,20,21,22,18", + "startColumns": "4,4,4,4,4", + "startOffsets": "783,836,890,944,730", + "endColumns": "51,52,52,51,51", + "endOffsets": "830,884,938,991,777" + }, + "to": { + "startLines": "13,14,15,16,17", + "startColumns": "4,4,4,4,4", + "startOffsets": "477,529,582,635,687", + "endColumns": "51,52,52,51,51", + "endOffsets": "524,577,630,682,734" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\styles.xml", + "from": { + "startLines": "50,55,64,60,22,26,30,35,40,18,45", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "2112,2322,2704,2539,917,1104,1293,1484,1693,730,1905", + "endLines": "53,58,67,62,25,29,33,38,43,21,48", + "endColumns": "12,12,12,12,12,12,12,12,12,12,12", + "endOffsets": "2314,2531,2915,2696,1098,1287,1476,1685,1897,911,2104" + }, + "to": { + "startLines": "125,129,133,137,140,144,148,152,156,160,164", + "startColumns": "4,4,4,4,4,4,4,4,4,4,4", + "startOffsets": "8124,8328,8539,8751,8911,9094,9279,9464,9667,9873,10056", + "endLines": "128,132,136,139,143,147,151,155,159,163,167", + "endColumns": "12,12,12,12,12,12,12,12,12,12,12", + "endOffsets": "8323,8534,8746,8906,9089,9274,9459,9662,9868,10051,10252" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\colors.xml", + "from": { + "startLines": "18", + "startColumns": "4", + "startOffsets": "730", + "endColumns": "56", + "endOffsets": "782" + }, + "to": { + "startLines": "12", + "startColumns": "4", + "startOffsets": "420", + "endColumns": "56", + "endOffsets": "472" + } + }, + { + "source": "D:\\MI_Note\\Notes-master_01\\app\\src\\main\\res\\values\\arrays.xml", + "from": { + "startLines": "19,26", + "startColumns": "4,4", + "startOffsets": "758,1073", + "endLines": "24,29", + "endColumns": "19,19", + "endOffsets": "1065,1191" + }, + "to": { + "startLines": "2,8", + "startColumns": "4,4", + "startOffsets": "105,300", + "endLines": "7,11", + "endColumns": "19,19", + "endOffsets": "295,415" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/app/build/intermediates/merged_res_blame_folder/release/out/single/release.json b/src/app/build/intermediates/merged_res_blame_folder/release/out/single/release.json new file mode 100644 index 0000000..9cc6955 --- /dev/null +++ b/src/app/build/intermediates/merged_res_blame_folder/release/out/single/release.json @@ -0,0 +1,382 @@ +[ + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_red_middle.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_red_middle.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_note_list_dropdown_menu.xml.flat", + "source": "net.micode.notes.app-main-6:/layout/note_list_dropdown_menu.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_title_bar_bg.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/title_bar_bg.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_folder.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_folder.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_folder_list_item.xml.flat", + "source": "net.micode.notes.app-main-6:/layout/folder_list_item.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_red_single.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_red_single.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_selected.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/selected.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_title_yellow.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/edit_title_yellow.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_notification.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/notification.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_red_down.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_red_down.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_new_note_pressed.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/new_note_pressed.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_white.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/edit_white.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_note_item.xml.flat", + "source": "net.micode.notes.app-main-6:/layout/note_item.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/menu_sub_folder.xml.flat", + "source": "net.micode.notes.app-main-6:/menu/sub_folder.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_footer_bg.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_footer_bg.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_settings_header.xml.flat", + "source": "net.micode.notes.app-main-6:/layout/settings_header.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_note_edit_color_selector_panel.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/note_edit_color_selector_panel.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_title_alert.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/title_alert.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_4x_red.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/widget_4x_red.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_clock.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/clock.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_4x_yellow.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/widget_4x_yellow.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/raw_introduction.flat", + "source": "net.micode.notes.app-main-6:/raw/introduction" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_font_large.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/font_large.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_blue_middle.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_blue_middle.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_2x_blue.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/widget_2x_blue.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_white_up.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_white_up.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_red_up.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_red_up.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_4x_blue.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/widget_4x_blue.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_4x_white.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/widget_4x_white.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_2x_green.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/widget_2x_green.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable_new_note.xml.flat", + "source": "net.micode.notes.app-main-6:/drawable/new_note.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_widget_2x.xml.flat", + "source": "net.micode.notes.app-main-6:/layout/widget_2x.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_yellow_up.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_yellow_up.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/xml_widget_2x_info.xml.flat", + "source": "net.micode.notes.app-main-6:/xml/widget_2x_info.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/menu_call_record_folder.xml.flat", + "source": "net.micode.notes.app-main-6:/menu/call_record_folder.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_2x_white.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/widget_2x_white.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/xml_preferences.xml.flat", + "source": "net.micode.notes.app-main-6:/xml/preferences.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_dialog_edit_text.xml.flat", + "source": "net.micode.notes.app-main-6:/layout/dialog_edit_text.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_title_white.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/edit_title_white.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_title_blue.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/edit_title_blue.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_yellow_down.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_yellow_down.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/raw-zh-rCN_introduction.flat", + "source": "net.micode.notes.app-main-6:/raw-zh-rCN/introduction" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_yellow_single.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_yellow_single.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_background.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_background.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/color_secondary_text_dark.xml.flat", + "source": "net.micode.notes.app-main-6:/color/secondary_text_dark.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/xml_widget_4x_info.xml.flat", + "source": "net.micode.notes.app-main-6:/xml/widget_4x_info.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_blue_up.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_blue_up.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_white_middle.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_white_middle.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_white_single.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_white_single.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_yellow.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/edit_yellow.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_search_result.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/search_result.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_note_edit.xml.flat", + "source": "net.micode.notes.app-main-6:/layout/note_edit.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_4x_green.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/widget_4x_green.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_widget_4x.xml.flat", + "source": "net.micode.notes.app-main-6:/layout/widget_4x.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_title_green.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/edit_title_green.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_red.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/edit_red.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/xml_searchable.xml.flat", + "source": "net.micode.notes.app-main-6:/xml/searchable.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_green_middle.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_green_middle.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_menu_delete.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/menu_delete.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_note_list.xml.flat", + "source": "net.micode.notes.app-main-6:/layout/note_list.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_green_down.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_green_down.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_font_normal.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/font_normal.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_yellow_middle.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_yellow_middle.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_icon_app.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/icon_app.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_dropdown_icon.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/dropdown_icon.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_bg_btn_set_color.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/bg_btn_set_color.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_new_note_normal.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/new_note_normal.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/menu_note_list_dropdown.xml.flat", + "source": "net.micode.notes.app-main-6:/menu/note_list_dropdown.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/menu_note_list.xml.flat", + "source": "net.micode.notes.app-main-6:/menu/note_list.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_note_edit_list_item.xml.flat", + "source": "net.micode.notes.app-main-6:/layout/note_edit_list_item.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_note_list_footer.xml.flat", + "source": "net.micode.notes.app-main-6:/layout/note_list_footer.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_menu_move.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/menu_move.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_bg_color_btn_mask.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/bg_color_btn_mask.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_blue_down.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_blue_down.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_add_account_text.xml.flat", + "source": "net.micode.notes.app-main-6:/layout/add_account_text.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_font_size_selector_bg.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/font_size_selector_bg.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_datetime_picker.xml.flat", + "source": "net.micode.notes.app-main-6:/layout/datetime_picker.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_font_super.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/font_super.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_title_red.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/edit_title_red.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_blue.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/edit_blue.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/menu_note_list_options.xml.flat", + "source": "net.micode.notes.app-main-6:/menu/note_list_options.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_blue_single.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_blue_single.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/menu_call_note_edit.xml.flat", + "source": "net.micode.notes.app-main-6:/menu/call_note_edit.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_green_single.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_green_single.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_2x_yellow.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/widget_2x_yellow.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_2x_red.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/widget_2x_red.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_delete.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/delete.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/color_primary_text_dark.xml.flat", + "source": "net.micode.notes.app-main-6:/color/primary_text_dark.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_green.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/edit_green.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_white_down.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_white_down.9.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/menu_note_edit.xml.flat", + "source": "net.micode.notes.app-main-6:/menu/note_edit.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_font_small.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/font_small.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/layout_account_dialog_title.xml.flat", + "source": "net.micode.notes.app-main-6:/layout/account_dialog_title.xml" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_call_record.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/call_record.png" + }, + { + "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_green_up.9.png.flat", + "source": "net.micode.notes.app-main-6:/drawable-hdpi/list_green_up.9.png" + } +] \ No newline at end of file diff --git a/src/app/build/intermediates/metadata_library_dependencies_report/release/dependencies.pb b/src/app/build/intermediates/metadata_library_dependencies_report/release/dependencies.pb new file mode 100644 index 0000000..ebef3cd --- /dev/null +++ b/src/app/build/intermediates/metadata_library_dependencies_report/release/dependencies.pb @@ -0,0 +1,6 @@ + +base", +* +(https://dl.google.com/dl/android/maven2/" + +https://jcenter.bintray.com/ \ No newline at end of file diff --git a/src/app/build/intermediates/navigation_json/debug/navigation.json b/src/app/build/intermediates/navigation_json/debug/navigation.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/src/app/build/intermediates/navigation_json/debug/navigation.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/src/app/build/intermediates/navigation_json/release/navigation.json b/src/app/build/intermediates/navigation_json/release/navigation.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/src/app/build/intermediates/navigation_json/release/navigation.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/src/app/build/intermediates/optimized_processed_res/release/output-metadata.json b/src/app/build/intermediates/optimized_processed_res/release/output-metadata.json new file mode 100644 index 0000000..9277522 --- /dev/null +++ b/src/app/build/intermediates/optimized_processed_res/release/output-metadata.json @@ -0,0 +1,20 @@ +{ + "version": 3, + "artifactType": { + "type": "OPTIMIZED_PROCESSED_RES", + "kind": "Directory" + }, + "applicationId": "net.micode.notes", + "variantName": "release", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 1, + "versionName": "0.1", + "outputFile": "resources-release-optimize.ap_" + } + ], + "elementType": "File" +} \ No newline at end of file diff --git a/src/app/build/intermediates/optimized_processed_res/release/resources-release-optimize.ap_ b/src/app/build/intermediates/optimized_processed_res/release/resources-release-optimize.ap_ new file mode 100644 index 0000000..2342fda Binary files /dev/null and b/src/app/build/intermediates/optimized_processed_res/release/resources-release-optimize.ap_ differ diff --git a/src/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml b/src/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml new file mode 100644 index 0000000..5ffd361 --- /dev/null +++ b/src/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/build/intermediates/packaged_manifests/debug/output-metadata.json b/src/app/build/intermediates/packaged_manifests/debug/output-metadata.json new file mode 100644 index 0000000..eea66e3 --- /dev/null +++ b/src/app/build/intermediates/packaged_manifests/debug/output-metadata.json @@ -0,0 +1,20 @@ +{ + "version": 3, + "artifactType": { + "type": "PACKAGED_MANIFESTS", + "kind": "Directory" + }, + "applicationId": "net.micode.notes", + "variantName": "debug", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 1, + "versionName": "0.1", + "outputFile": "AndroidManifest.xml" + } + ], + "elementType": "File" +} \ No newline at end of file diff --git a/src/app/build/intermediates/packaged_manifests/release/AndroidManifest.xml b/src/app/build/intermediates/packaged_manifests/release/AndroidManifest.xml new file mode 100644 index 0000000..fbacd2a --- /dev/null +++ b/src/app/build/intermediates/packaged_manifests/release/AndroidManifest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/build/intermediates/packaged_manifests/release/output-metadata.json b/src/app/build/intermediates/packaged_manifests/release/output-metadata.json new file mode 100644 index 0000000..a6b664d --- /dev/null +++ b/src/app/build/intermediates/packaged_manifests/release/output-metadata.json @@ -0,0 +1,20 @@ +{ + "version": 3, + "artifactType": { + "type": "PACKAGED_MANIFESTS", + "kind": "Directory" + }, + "applicationId": "net.micode.notes", + "variantName": "release", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 1, + "versionName": "0.1", + "outputFile": "AndroidManifest.xml" + } + ], + "elementType": "File" +} \ No newline at end of file diff --git a/src/app/build/intermediates/processed_res/debug/out/output-metadata.json b/src/app/build/intermediates/processed_res/debug/out/output-metadata.json new file mode 100644 index 0000000..1eefece --- /dev/null +++ b/src/app/build/intermediates/processed_res/debug/out/output-metadata.json @@ -0,0 +1,20 @@ +{ + "version": 3, + "artifactType": { + "type": "PROCESSED_RES", + "kind": "Directory" + }, + "applicationId": "net.micode.notes", + "variantName": "debug", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 1, + "versionName": "0.1", + "outputFile": "resources-debug.ap_" + } + ], + "elementType": "File" +} \ No newline at end of file diff --git a/src/app/build/intermediates/processed_res/debug/out/resources-debug.ap_ b/src/app/build/intermediates/processed_res/debug/out/resources-debug.ap_ new file mode 100644 index 0000000..078116c Binary files /dev/null and b/src/app/build/intermediates/processed_res/debug/out/resources-debug.ap_ differ diff --git a/src/app/build/intermediates/processed_res/release/out/output-metadata.json b/src/app/build/intermediates/processed_res/release/out/output-metadata.json new file mode 100644 index 0000000..813214a --- /dev/null +++ b/src/app/build/intermediates/processed_res/release/out/output-metadata.json @@ -0,0 +1,20 @@ +{ + "version": 3, + "artifactType": { + "type": "PROCESSED_RES", + "kind": "Directory" + }, + "applicationId": "net.micode.notes", + "variantName": "release", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 1, + "versionName": "0.1", + "outputFile": "resources-release.ap_" + } + ], + "elementType": "File" +} \ No newline at end of file diff --git a/src/app/build/intermediates/processed_res/release/out/resources-release.ap_ b/src/app/build/intermediates/processed_res/release/out/resources-release.ap_ new file mode 100644 index 0000000..4a07370 Binary files /dev/null and b/src/app/build/intermediates/processed_res/release/out/resources-release.ap_ differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/1f12cbfeab598f9caad37658eafc7a4914968aa8faf92fc9b476d2bd6a00666e_1.jar b/src/app/build/intermediates/project_dex_archive/debug/out/1f12cbfeab598f9caad37658eafc7a4914968aa8faf92fc9b476d2bd6a00666e_1.jar new file mode 100644 index 0000000..8313fed Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/1f12cbfeab598f9caad37658eafc7a4914968aa8faf92fc9b476d2bd6a00666e_1.jar differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/BuildConfig.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/BuildConfig.dex new file mode 100644 index 0000000..f29c886 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/BuildConfig.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Contact.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Contact.dex new file mode 100644 index 0000000..9fa0620 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Contact.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$CallNote.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$CallNote.dex new file mode 100644 index 0000000..d8ec2c4 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$CallNote.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$DataColumns.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$DataColumns.dex new file mode 100644 index 0000000..983f364 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$DataColumns.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$DataConstants.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$DataConstants.dex new file mode 100644 index 0000000..eceecda Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$DataConstants.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$NoteColumns.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$NoteColumns.dex new file mode 100644 index 0000000..e32f11d Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$NoteColumns.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$TextNote.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$TextNote.dex new file mode 100644 index 0000000..2f5ecfb Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$TextNote.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes.dex new file mode 100644 index 0000000..e9e44c0 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesDatabaseHelper$TABLE.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesDatabaseHelper$TABLE.dex new file mode 100644 index 0000000..3fe4a9b Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesDatabaseHelper$TABLE.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesDatabaseHelper.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesDatabaseHelper.dex new file mode 100644 index 0000000..21ea4c4 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesDatabaseHelper.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesProvider.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesProvider.dex new file mode 100644 index 0000000..7adac34 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesProvider.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/MetaData.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/MetaData.dex new file mode 100644 index 0000000..a0d32fd Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/MetaData.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/Node.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/Node.dex new file mode 100644 index 0000000..4455455 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/Node.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlData.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlData.dex new file mode 100644 index 0000000..3f712bc Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlData.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlNote.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlNote.dex new file mode 100644 index 0000000..dc7b155 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlNote.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/Task.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/Task.dex new file mode 100644 index 0000000..99b707a Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/Task.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/TaskList.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/TaskList.dex new file mode 100644 index 0000000..5f08b0a Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/TaskList.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/ActionFailureException.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/ActionFailureException.dex new file mode 100644 index 0000000..3864095 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/ActionFailureException.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/NetworkFailureException.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/NetworkFailureException.dex new file mode 100644 index 0000000..ae8724a Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/NetworkFailureException.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskASyncTask$1.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskASyncTask$1.dex new file mode 100644 index 0000000..3464b06 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskASyncTask$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskASyncTask$OnCompleteListener.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskASyncTask$OnCompleteListener.dex new file mode 100644 index 0000000..3229f07 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskASyncTask$OnCompleteListener.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskASyncTask.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskASyncTask.dex new file mode 100644 index 0000000..0085723 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskASyncTask.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskClient.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskClient.dex new file mode 100644 index 0000000..59d3005 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskClient.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskManager.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskManager.dex new file mode 100644 index 0000000..aed7564 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskManager.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskSyncService$1.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskSyncService$1.dex new file mode 100644 index 0000000..bc7ec41 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskSyncService$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskSyncService.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskSyncService.dex new file mode 100644 index 0000000..71af18e Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/remote/GTaskSyncService.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note$NoteData.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note$NoteData.dex new file mode 100644 index 0000000..0139b42 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note$NoteData.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note.dex new file mode 100644 index 0000000..452e2d0 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.dex new file mode 100644 index 0000000..2115569 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote.dex new file mode 100644 index 0000000..84c0fb2 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils$TextExport.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils$TextExport.dex new file mode 100644 index 0000000..2b85968 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils$TextExport.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils.dex new file mode 100644 index 0000000..7f9fa34 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/DataUtils.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/DataUtils.dex new file mode 100644 index 0000000..5ed9619 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/DataUtils.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/GTaskStringUtils.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/GTaskStringUtils.dex new file mode 100644 index 0000000..144cf9c Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/GTaskStringUtils.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteBgResources.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteBgResources.dex new file mode 100644 index 0000000..ffbb9b0 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteBgResources.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteItemBgResources.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteItemBgResources.dex new file mode 100644 index 0000000..b6a3528 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteItemBgResources.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$TextAppearanceResources.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$TextAppearanceResources.dex new file mode 100644 index 0000000..ae6e2a4 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$TextAppearanceResources.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$WidgetBgResources.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$WidgetBgResources.dex new file mode 100644 index 0000000..869e07c Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$WidgetBgResources.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser.dex new file mode 100644 index 0000000..f67c640 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmAlertActivity.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmAlertActivity.dex new file mode 100644 index 0000000..c1b64ec Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmAlertActivity.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmInitReceiver.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmInitReceiver.dex new file mode 100644 index 0000000..25a62a7 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmInitReceiver.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmReceiver.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmReceiver.dex new file mode 100644 index 0000000..261b9bc Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmReceiver.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$1.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$1.dex new file mode 100644 index 0000000..7822adc Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$2.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$2.dex new file mode 100644 index 0000000..bb825ba Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$2.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$3.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$3.dex new file mode 100644 index 0000000..bf17cb1 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$3.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$4.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$4.dex new file mode 100644 index 0000000..b3346ee Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$4.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.dex new file mode 100644 index 0000000..5d89d10 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker.dex new file mode 100644 index 0000000..0efbb86 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog$1.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog$1.dex new file mode 100644 index 0000000..eaa7650 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.dex new file mode 100644 index 0000000..fea922e Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog.dex new file mode 100644 index 0000000..5f69d8d Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DropdownMenu$1.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DropdownMenu$1.dex new file mode 100644 index 0000000..8f6696d Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DropdownMenu$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DropdownMenu.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DropdownMenu.dex new file mode 100644 index 0000000..63acb0d Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DropdownMenu.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter$FolderListItem.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter$FolderListItem.dex new file mode 100644 index 0000000..b509458 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter$FolderListItem.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter.dex new file mode 100644 index 0000000..d339f97 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$1.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$1.dex new file mode 100644 index 0000000..93fe01e Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$2.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$2.dex new file mode 100644 index 0000000..b2a8a29 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$2.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$3.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$3.dex new file mode 100644 index 0000000..3f1e849 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$3.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$4.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$4.dex new file mode 100644 index 0000000..9dd87a2 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$4.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$5.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$5.dex new file mode 100644 index 0000000..c717c3f Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$5.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex new file mode 100644 index 0000000..de09355 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity.dex new file mode 100644 index 0000000..6c26843 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText$1.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText$1.dex new file mode 100644 index 0000000..d2b4e3e Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.dex new file mode 100644 index 0000000..c5e6113 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText.dex new file mode 100644 index 0000000..c94758c Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteItemData.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteItemData.dex new file mode 100644 index 0000000..5e2cb53 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteItemData.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$1.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$1.dex new file mode 100644 index 0000000..7ce7a66 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$2.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$2.dex new file mode 100644 index 0000000..8c1c975 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$2.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$3.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$3.dex new file mode 100644 index 0000000..a665c33 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$3.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$4.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$4.dex new file mode 100644 index 0000000..f08649c Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$4.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$5.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$5.dex new file mode 100644 index 0000000..4fb9c83 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$5.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$6.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$6.dex new file mode 100644 index 0000000..1c25780 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$6.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$7.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$7.dex new file mode 100644 index 0000000..768e8ca Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$7.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$8.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$8.dex new file mode 100644 index 0000000..bcaaabf Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$8.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$9.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$9.dex new file mode 100644 index 0000000..ae0be64 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$9.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex new file mode 100644 index 0000000..7fa7dfb Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ListEditState.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ListEditState.dex new file mode 100644 index 0000000..f55c2a8 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ListEditState.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex new file mode 100644 index 0000000..db2437b Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex new file mode 100644 index 0000000..4b543bd Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback.dex new file mode 100644 index 0000000..08fd277 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex new file mode 100644 index 0000000..9d5734c Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex new file mode 100644 index 0000000..2effc7b Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity.dex new file mode 100644 index 0000000..104847a Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.dex new file mode 100644 index 0000000..311f487 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListAdapter.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListAdapter.dex new file mode 100644 index 0000000..d38040f Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListAdapter.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListItem.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListItem.dex new file mode 100644 index 0000000..1cdbe5b Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListItem.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$1.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$1.dex new file mode 100644 index 0000000..631e973 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$2.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$2.dex new file mode 100644 index 0000000..e15a061 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$2.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$3.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$3.dex new file mode 100644 index 0000000..3c7c3d5 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$3.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$4.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$4.dex new file mode 100644 index 0000000..0883a78 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$4.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$5.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$5.dex new file mode 100644 index 0000000..a4132a8 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$5.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$6.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$6.dex new file mode 100644 index 0000000..9dcc1b5 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$6.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$7.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$7.dex new file mode 100644 index 0000000..4436b28 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$7.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$8.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$8.dex new file mode 100644 index 0000000..371948e Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$8.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.dex new file mode 100644 index 0000000..de46b2c Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity.dex new file mode 100644 index 0000000..10e6c8a Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider.dex new file mode 100644 index 0000000..7d5de0a Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_2x.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_2x.dex new file mode 100644 index 0000000..995370f Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_2x.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_4x.dex b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_4x.dex new file mode 100644 index 0000000..73f6100 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_4x.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/1f12cbfeab598f9caad37658eafc7a4914968aa8faf92fc9b476d2bd6a00666e_1.jar b/src/app/build/intermediates/project_dex_archive/release/out/1f12cbfeab598f9caad37658eafc7a4914968aa8faf92fc9b476d2bd6a00666e_1.jar new file mode 100644 index 0000000..f5e06fc Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/1f12cbfeab598f9caad37658eafc7a4914968aa8faf92fc9b476d2bd6a00666e_1.jar differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/BuildConfig.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/BuildConfig.dex new file mode 100644 index 0000000..a99a3c4 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/BuildConfig.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Contact.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Contact.dex new file mode 100644 index 0000000..b64e956 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Contact.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes$CallNote.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes$CallNote.dex new file mode 100644 index 0000000..5c021d7 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes$CallNote.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes$DataColumns.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes$DataColumns.dex new file mode 100644 index 0000000..c10fb8a Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes$DataColumns.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes$DataConstants.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes$DataConstants.dex new file mode 100644 index 0000000..ea0a6c9 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes$DataConstants.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes$NoteColumns.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes$NoteColumns.dex new file mode 100644 index 0000000..75810a7 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes$NoteColumns.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes$TextNote.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes$TextNote.dex new file mode 100644 index 0000000..439a133 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes$TextNote.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes.dex new file mode 100644 index 0000000..4ae0ecc Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/Notes.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/NotesDatabaseHelper$TABLE.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/NotesDatabaseHelper$TABLE.dex new file mode 100644 index 0000000..d68655e Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/NotesDatabaseHelper$TABLE.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/NotesDatabaseHelper.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/NotesDatabaseHelper.dex new file mode 100644 index 0000000..1e40e12 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/NotesDatabaseHelper.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/NotesProvider.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/NotesProvider.dex new file mode 100644 index 0000000..620ba79 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/data/NotesProvider.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/MetaData.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/MetaData.dex new file mode 100644 index 0000000..4ad4cb6 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/MetaData.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/Node.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/Node.dex new file mode 100644 index 0000000..d41aab8 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/Node.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/SqlData.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/SqlData.dex new file mode 100644 index 0000000..a3e713b Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/SqlData.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/SqlNote.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/SqlNote.dex new file mode 100644 index 0000000..ee57ca8 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/SqlNote.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/Task.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/Task.dex new file mode 100644 index 0000000..e577411 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/Task.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/TaskList.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/TaskList.dex new file mode 100644 index 0000000..dbdce6b Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/data/TaskList.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/exception/ActionFailureException.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/exception/ActionFailureException.dex new file mode 100644 index 0000000..6325beb Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/exception/ActionFailureException.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/exception/NetworkFailureException.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/exception/NetworkFailureException.dex new file mode 100644 index 0000000..5865a40 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/exception/NetworkFailureException.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskASyncTask$1.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskASyncTask$1.dex new file mode 100644 index 0000000..97d0d79 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskASyncTask$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskASyncTask$OnCompleteListener.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskASyncTask$OnCompleteListener.dex new file mode 100644 index 0000000..a400f4c Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskASyncTask$OnCompleteListener.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskASyncTask.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskASyncTask.dex new file mode 100644 index 0000000..3bc4f65 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskASyncTask.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskClient.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskClient.dex new file mode 100644 index 0000000..e251d2b Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskClient.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskManager.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskManager.dex new file mode 100644 index 0000000..bcf479f Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskManager.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskSyncService$1.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskSyncService$1.dex new file mode 100644 index 0000000..ef70516 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskSyncService$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskSyncService.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskSyncService.dex new file mode 100644 index 0000000..288c8cc Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/gtask/remote/GTaskSyncService.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/model/Note$NoteData.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/model/Note$NoteData.dex new file mode 100644 index 0000000..ae51757 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/model/Note$NoteData.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/model/Note.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/model/Note.dex new file mode 100644 index 0000000..a805ee7 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/model/Note.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.dex new file mode 100644 index 0000000..d997708 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/model/WorkingNote.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/model/WorkingNote.dex new file mode 100644 index 0000000..bdaf61d Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/model/WorkingNote.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/BackupUtils$TextExport.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/BackupUtils$TextExport.dex new file mode 100644 index 0000000..320d826 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/BackupUtils$TextExport.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/BackupUtils.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/BackupUtils.dex new file mode 100644 index 0000000..9060999 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/BackupUtils.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/DataUtils.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/DataUtils.dex new file mode 100644 index 0000000..26d9703 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/DataUtils.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/GTaskStringUtils.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/GTaskStringUtils.dex new file mode 100644 index 0000000..4d2b5bf Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/GTaskStringUtils.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/ResourceParser$NoteBgResources.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/ResourceParser$NoteBgResources.dex new file mode 100644 index 0000000..eb8e760 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/ResourceParser$NoteBgResources.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/ResourceParser$NoteItemBgResources.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/ResourceParser$NoteItemBgResources.dex new file mode 100644 index 0000000..19477d9 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/ResourceParser$NoteItemBgResources.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/ResourceParser$TextAppearanceResources.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/ResourceParser$TextAppearanceResources.dex new file mode 100644 index 0000000..dbc1dc7 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/ResourceParser$TextAppearanceResources.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/ResourceParser$WidgetBgResources.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/ResourceParser$WidgetBgResources.dex new file mode 100644 index 0000000..e2b2d7b Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/ResourceParser$WidgetBgResources.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/ResourceParser.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/ResourceParser.dex new file mode 100644 index 0000000..ce7b35d Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/tool/ResourceParser.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/AlarmAlertActivity.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/AlarmAlertActivity.dex new file mode 100644 index 0000000..6c9d1d7 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/AlarmAlertActivity.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/AlarmInitReceiver.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/AlarmInitReceiver.dex new file mode 100644 index 0000000..ce76a91 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/AlarmInitReceiver.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/AlarmReceiver.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/AlarmReceiver.dex new file mode 100644 index 0000000..0ebfc8f Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/AlarmReceiver.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker$1.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker$1.dex new file mode 100644 index 0000000..9519fb0 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker$2.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker$2.dex new file mode 100644 index 0000000..12bd81b Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker$2.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker$3.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker$3.dex new file mode 100644 index 0000000..0d7e934 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker$3.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker$4.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker$4.dex new file mode 100644 index 0000000..49e5836 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker$4.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.dex new file mode 100644 index 0000000..d58ddfb Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker.dex new file mode 100644 index 0000000..31a7bc6 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePicker.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePickerDialog$1.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePickerDialog$1.dex new file mode 100644 index 0000000..7087fd7 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePickerDialog$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.dex new file mode 100644 index 0000000..af26f93 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePickerDialog.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePickerDialog.dex new file mode 100644 index 0000000..c267fee Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DateTimePickerDialog.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DropdownMenu$1.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DropdownMenu$1.dex new file mode 100644 index 0000000..bf77fd8 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DropdownMenu$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DropdownMenu.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DropdownMenu.dex new file mode 100644 index 0000000..943426b Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/DropdownMenu.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/FoldersListAdapter$FolderListItem.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/FoldersListAdapter$FolderListItem.dex new file mode 100644 index 0000000..1b2f10b Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/FoldersListAdapter$FolderListItem.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/FoldersListAdapter.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/FoldersListAdapter.dex new file mode 100644 index 0000000..5fe0306 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/FoldersListAdapter.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity$1.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity$1.dex new file mode 100644 index 0000000..2665ad4 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity$2.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity$2.dex new file mode 100644 index 0000000..4033dc6 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity$2.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity$3.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity$3.dex new file mode 100644 index 0000000..02d095d Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity$3.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity$4.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity$4.dex new file mode 100644 index 0000000..bd2c60f Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity$4.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex new file mode 100644 index 0000000..406c91f Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity.dex new file mode 100644 index 0000000..168dde6 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditActivity.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditText$1.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditText$1.dex new file mode 100644 index 0000000..e83dbf2 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditText$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.dex new file mode 100644 index 0000000..e0d3da1 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditText.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditText.dex new file mode 100644 index 0000000..c4bd6cd Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteEditText.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteItemData.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteItemData.dex new file mode 100644 index 0000000..fc05ce8 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NoteItemData.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$1.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$1.dex new file mode 100644 index 0000000..5cced03 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$2.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$2.dex new file mode 100644 index 0000000..606402e Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$2.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$3.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$3.dex new file mode 100644 index 0000000..5231009 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$3.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$4.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$4.dex new file mode 100644 index 0000000..95bb5ad Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$4.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$5.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$5.dex new file mode 100644 index 0000000..9f14784 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$5.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$6.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$6.dex new file mode 100644 index 0000000..79e4e5c Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$6.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$7.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$7.dex new file mode 100644 index 0000000..0d25045 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$7.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$8.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$8.dex new file mode 100644 index 0000000..06b9e8b Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$8.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$9.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$9.dex new file mode 100644 index 0000000..ec9ca34 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$9.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex new file mode 100644 index 0000000..4fd4fa0 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$ListEditState.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$ListEditState.dex new file mode 100644 index 0000000..7fa1ed0 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$ListEditState.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex new file mode 100644 index 0000000..8cff4fc Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex new file mode 100644 index 0000000..4538aa4 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$ModeCallback.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$ModeCallback.dex new file mode 100644 index 0000000..fa91774 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$ModeCallback.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex new file mode 100644 index 0000000..bdd1128 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex new file mode 100644 index 0000000..cc4c610 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity.dex new file mode 100644 index 0000000..9ccb02a Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListActivity.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.dex new file mode 100644 index 0000000..9e646a5 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListAdapter.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListAdapter.dex new file mode 100644 index 0000000..ed5f360 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListAdapter.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListItem.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListItem.dex new file mode 100644 index 0000000..e20b21a Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesListItem.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$1.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$1.dex new file mode 100644 index 0000000..b5075fc Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$1.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$2.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$2.dex new file mode 100644 index 0000000..1fa0f06 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$2.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$3.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$3.dex new file mode 100644 index 0000000..c1c6fc8 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$3.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$4.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$4.dex new file mode 100644 index 0000000..626c8ca Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$4.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$5.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$5.dex new file mode 100644 index 0000000..09f1714 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$5.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$6.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$6.dex new file mode 100644 index 0000000..3837959 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$6.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$7.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$7.dex new file mode 100644 index 0000000..8b78fa3 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$7.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$8.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$8.dex new file mode 100644 index 0000000..1b5815f Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$8.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.dex new file mode 100644 index 0000000..4027c22 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity.dex new file mode 100644 index 0000000..2c89048 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/ui/NotesPreferenceActivity.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/widget/NoteWidgetProvider.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/widget/NoteWidgetProvider.dex new file mode 100644 index 0000000..2d2d705 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/widget/NoteWidgetProvider.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/widget/NoteWidgetProvider_2x.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/widget/NoteWidgetProvider_2x.dex new file mode 100644 index 0000000..cda11eb Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/widget/NoteWidgetProvider_2x.dex differ diff --git a/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/widget/NoteWidgetProvider_4x.dex b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/widget/NoteWidgetProvider_4x.dex new file mode 100644 index 0000000..cc6ae58 Binary files /dev/null and b/src/app/build/intermediates/project_dex_archive/release/out/net/micode/notes/widget/NoteWidgetProvider_4x.dex differ diff --git a/src/app/build/intermediates/runtime_symbol_list/debug/R.txt b/src/app/build/intermediates/runtime_symbol_list/debug/R.txt new file mode 100644 index 0000000..1865523 --- /dev/null +++ b/src/app/build/intermediates/runtime_symbol_list/debug/R.txt @@ -0,0 +1,285 @@ +int array format_for_exported_note 0x7f010000 +int array menu_share_ways 0x7f010001 +int color primary_text_dark 0x7f020000 +int color secondary_text_dark 0x7f020001 +int color user_query_highlight 0x7f020002 +int dimen text_font_size_large 0x7f030000 +int dimen text_font_size_medium 0x7f030001 +int dimen text_font_size_normal 0x7f030002 +int dimen text_font_size_small 0x7f030003 +int dimen text_font_size_super 0x7f030004 +int drawable bg_btn_set_color 0x7f040000 +int drawable bg_color_btn_mask 0x7f040001 +int drawable call_record 0x7f040002 +int drawable clock 0x7f040003 +int drawable delete 0x7f040004 +int drawable dropdown_icon 0x7f040005 +int drawable edit_blue 0x7f040006 +int drawable edit_green 0x7f040007 +int drawable edit_red 0x7f040008 +int drawable edit_title_blue 0x7f040009 +int drawable edit_title_green 0x7f04000a +int drawable edit_title_red 0x7f04000b +int drawable edit_title_white 0x7f04000c +int drawable edit_title_yellow 0x7f04000d +int drawable edit_white 0x7f04000e +int drawable edit_yellow 0x7f04000f +int drawable font_large 0x7f040010 +int drawable font_normal 0x7f040011 +int drawable font_size_selector_bg 0x7f040012 +int drawable font_small 0x7f040013 +int drawable font_super 0x7f040014 +int drawable icon_app 0x7f040015 +int drawable list_background 0x7f040016 +int drawable list_blue_down 0x7f040017 +int drawable list_blue_middle 0x7f040018 +int drawable list_blue_single 0x7f040019 +int drawable list_blue_up 0x7f04001a +int drawable list_folder 0x7f04001b +int drawable list_footer_bg 0x7f04001c +int drawable list_green_down 0x7f04001d +int drawable list_green_middle 0x7f04001e +int drawable list_green_single 0x7f04001f +int drawable list_green_up 0x7f040020 +int drawable list_red_down 0x7f040021 +int drawable list_red_middle 0x7f040022 +int drawable list_red_single 0x7f040023 +int drawable list_red_up 0x7f040024 +int drawable list_white_down 0x7f040025 +int drawable list_white_middle 0x7f040026 +int drawable list_white_single 0x7f040027 +int drawable list_white_up 0x7f040028 +int drawable list_yellow_down 0x7f040029 +int drawable list_yellow_middle 0x7f04002a +int drawable list_yellow_single 0x7f04002b +int drawable list_yellow_up 0x7f04002c +int drawable menu_delete 0x7f04002d +int drawable menu_move 0x7f04002e +int drawable new_note 0x7f04002f +int drawable new_note_normal 0x7f040030 +int drawable new_note_pressed 0x7f040031 +int drawable note_edit_color_selector_panel 0x7f040032 +int drawable notification 0x7f040033 +int drawable search_result 0x7f040034 +int drawable selected 0x7f040035 +int drawable title_alert 0x7f040036 +int drawable title_bar_bg 0x7f040037 +int drawable widget_2x_blue 0x7f040038 +int drawable widget_2x_green 0x7f040039 +int drawable widget_2x_red 0x7f04003a +int drawable widget_2x_white 0x7f04003b +int drawable widget_2x_yellow 0x7f04003c +int drawable widget_4x_blue 0x7f04003d +int drawable widget_4x_green 0x7f04003e +int drawable widget_4x_red 0x7f04003f +int drawable widget_4x_white 0x7f040040 +int drawable widget_4x_yellow 0x7f040041 +int id account_dialog_subtitle 0x7f050000 +int id account_dialog_title 0x7f050001 +int id action_select_all 0x7f050002 +int id add_img_btn 0x7f050003 +int id amPm 0x7f050004 +int id btn_new_note 0x7f050005 +int id btn_set_bg_color 0x7f050006 +int id cb_edit_item 0x7f050007 +int id date 0x7f050008 +int id delete 0x7f050009 +int id et_edit_text 0x7f05000a +int id et_foler_name 0x7f05000b +int id font_size_selector 0x7f05000c +int id hour 0x7f05000d +int id iv_alert_icon 0x7f05000e +int id iv_bg_blue 0x7f05000f +int id iv_bg_blue_select 0x7f050010 +int id iv_bg_green 0x7f050011 +int id iv_bg_green_select 0x7f050012 +int id iv_bg_red 0x7f050013 +int id iv_bg_red_select 0x7f050014 +int id iv_bg_white 0x7f050015 +int id iv_bg_white_select 0x7f050016 +int id iv_bg_yellow 0x7f050017 +int id iv_bg_yellow_select 0x7f050018 +int id iv_large_select 0x7f050019 +int id iv_medium_select 0x7f05001a +int id iv_small_select 0x7f05001b +int id iv_super_select 0x7f05001c +int id ll_font_large 0x7f05001d +int id ll_font_normal 0x7f05001e +int id ll_font_small 0x7f05001f +int id ll_font_super 0x7f050020 +int id menu_alert 0x7f050021 +int id menu_delete 0x7f050022 +int id menu_delete_remind 0x7f050023 +int id menu_export_text 0x7f050024 +int id menu_font_size 0x7f050025 +int id menu_list_mode 0x7f050026 +int id menu_new_folder 0x7f050027 +int id menu_new_note 0x7f050028 +int id menu_search 0x7f050029 +int id menu_send_to_desktop 0x7f05002a +int id menu_setting 0x7f05002b +int id menu_share 0x7f05002c +int id menu_sync 0x7f05002d +int id minute 0x7f05002e +int id move 0x7f05002f +int id navigation_bar 0x7f050030 +int id note_bg_color_selector 0x7f050031 +int id note_edit_list 0x7f050032 +int id note_edit_view 0x7f050033 +int id note_item 0x7f050034 +int id note_title 0x7f050035 +int id notes_list 0x7f050036 +int id prefenerece_sync_status_textview 0x7f050037 +int id preference_sync_button 0x7f050038 +int id selection_menu 0x7f050039 +int id sv_note_edit 0x7f05003a +int id text_num 0x7f05003b +int id tv_alert_date 0x7f05003c +int id tv_folder_name 0x7f05003d +int id tv_modified_date 0x7f05003e +int id tv_name 0x7f05003f +int id tv_time 0x7f050040 +int id tv_title 0x7f050041 +int id tv_title_bar 0x7f050042 +int id widget_bg_image 0x7f050043 +int id widget_text 0x7f050044 +int layout account_dialog_title 0x7f060000 +int layout add_account_text 0x7f060001 +int layout datetime_picker 0x7f060002 +int layout dialog_edit_text 0x7f060003 +int layout folder_list_item 0x7f060004 +int layout note_edit 0x7f060005 +int layout note_edit_list_item 0x7f060006 +int layout note_item 0x7f060007 +int layout note_list 0x7f060008 +int layout note_list_dropdown_menu 0x7f060009 +int layout note_list_footer 0x7f06000a +int layout settings_header 0x7f06000b +int layout widget_2x 0x7f06000c +int layout widget_4x 0x7f06000d +int menu call_note_edit 0x7f070000 +int menu call_record_folder 0x7f070001 +int menu note_edit 0x7f070002 +int menu note_list 0x7f070003 +int menu note_list_dropdown 0x7f070004 +int menu note_list_options 0x7f070005 +int menu sub_folder 0x7f070006 +int plurals search_results_title 0x7f080000 +int raw introduction 0x7f090000 +int string alert_message_delete_folder 0x7f0a0000 +int string alert_message_delete_note 0x7f0a0001 +int string alert_message_delete_notes 0x7f0a0002 +int string alert_title_delete 0x7f0a0003 +int string app_name 0x7f0a0004 +int string app_widget2x2 0x7f0a0005 +int string app_widget4x4 0x7f0a0006 +int string button_delete 0x7f0a0007 +int string call_record_folder_name 0x7f0a0008 +int string datetime_dialog_cancel 0x7f0a0009 +int string datetime_dialog_ok 0x7f0a000a +int string delete_remind_time_message 0x7f0a000b +int string error_note_empty_for_clock 0x7f0a000c +int string error_note_empty_for_send_to_desktop 0x7f0a000d +int string error_note_not_exist 0x7f0a000e +int string error_sdcard_export 0x7f0a000f +int string error_sdcard_unmounted 0x7f0a0010 +int string error_sync_cancelled 0x7f0a0011 +int string error_sync_internal 0x7f0a0012 +int string error_sync_network 0x7f0a0013 +int string failed_sdcard_export 0x7f0a0014 +int string file_name_txt_format 0x7f0a0015 +int string file_path 0x7f0a0016 +int string folder_exist 0x7f0a0017 +int string format_date_ymd 0x7f0a0018 +int string format_datetime_mdhm 0x7f0a0019 +int string format_exported_file_location 0x7f0a001a +int string format_folder_files_count 0x7f0a001b +int string format_move_notes_to_folder 0x7f0a001c +int string hint_foler_name 0x7f0a001d +int string info_note_enter_desktop 0x7f0a001e +int string menu_alert 0x7f0a001f +int string menu_create_folder 0x7f0a0020 +int string menu_delete 0x7f0a0021 +int string menu_deselect_all 0x7f0a0022 +int string menu_export_text 0x7f0a0023 +int string menu_folder_change_name 0x7f0a0024 +int string menu_folder_delete 0x7f0a0025 +int string menu_folder_view 0x7f0a0026 +int string menu_font_large 0x7f0a0027 +int string menu_font_normal 0x7f0a0028 +int string menu_font_size 0x7f0a0029 +int string menu_font_small 0x7f0a002a +int string menu_font_super 0x7f0a002b +int string menu_list_mode 0x7f0a002c +int string menu_move 0x7f0a002d +int string menu_move_parent_folder 0x7f0a002e +int string menu_normal_mode 0x7f0a002f +int string menu_remove_remind 0x7f0a0030 +int string menu_search 0x7f0a0031 +int string menu_select_all 0x7f0a0032 +int string menu_select_none 0x7f0a0033 +int string menu_select_title 0x7f0a0034 +int string menu_send_to_desktop 0x7f0a0035 +int string menu_setting 0x7f0a0036 +int string menu_share 0x7f0a0037 +int string menu_sync 0x7f0a0038 +int string menu_sync_cancel 0x7f0a0039 +int string menu_title_select_folder 0x7f0a003a +int string note_alert_expired 0x7f0a003b +int string note_link_email 0x7f0a003c +int string note_link_other 0x7f0a003d +int string note_link_tel 0x7f0a003e +int string note_link_web 0x7f0a003f +int string notealert_enter 0x7f0a0040 +int string notealert_ok 0x7f0a0041 +int string notelist_menu_new 0x7f0a0042 +int string notelist_string_info 0x7f0a0043 +int string preferences_account_summary 0x7f0a0044 +int string preferences_account_title 0x7f0a0045 +int string preferences_add_account 0x7f0a0046 +int string preferences_bg_random_appear_title 0x7f0a0047 +int string preferences_button_sync_cancel 0x7f0a0048 +int string preferences_button_sync_immediately 0x7f0a0049 +int string preferences_dialog_change_account_title 0x7f0a004a +int string preferences_dialog_change_account_warn_msg 0x7f0a004b +int string preferences_dialog_select_account_tips 0x7f0a004c +int string preferences_dialog_select_account_title 0x7f0a004d +int string preferences_last_sync_time 0x7f0a004e +int string preferences_last_sync_time_format 0x7f0a004f +int string preferences_menu_cancel 0x7f0a0050 +int string preferences_menu_change_account 0x7f0a0051 +int string preferences_menu_remove_account 0x7f0a0052 +int string preferences_title 0x7f0a0053 +int string preferences_toast_cannot_change_account 0x7f0a0054 +int string preferences_toast_success_set_accout 0x7f0a0055 +int string search 0x7f0a0056 +int string search_hint 0x7f0a0057 +int string search_label 0x7f0a0058 +int string search_setting_description 0x7f0a0059 +int string set_remind_time_message 0x7f0a005a +int string success_sdcard_export 0x7f0a005b +int string success_sync_account 0x7f0a005c +int string sync_progress_init_list 0x7f0a005d +int string sync_progress_login 0x7f0a005e +int string sync_progress_syncing 0x7f0a005f +int string ticker_cancel 0x7f0a0060 +int string ticker_fail 0x7f0a0061 +int string ticker_success 0x7f0a0062 +int string ticker_syncing 0x7f0a0063 +int string widget_havenot_content 0x7f0a0064 +int string widget_under_visit_mode 0x7f0a0065 +int style HighlightTextAppearancePrimary 0x7f0b0000 +int style HighlightTextAppearanceSecondary 0x7f0b0001 +int style NoteActionBarStyle 0x7f0b0002 +int style NoteTheme 0x7f0b0003 +int style TextAppearanceLarge 0x7f0b0004 +int style TextAppearanceMedium 0x7f0b0005 +int style TextAppearanceNormal 0x7f0b0006 +int style TextAppearancePrimaryItem 0x7f0b0007 +int style TextAppearanceSecondaryItem 0x7f0b0008 +int style TextAppearanceSuper 0x7f0b0009 +int style TextAppearanceUnderMenuIcon 0x7f0b000a +int xml preferences 0x7f0c0000 +int xml searchable 0x7f0c0001 +int xml widget_2x_info 0x7f0c0002 +int xml widget_4x_info 0x7f0c0003 diff --git a/src/app/build/intermediates/runtime_symbol_list/release/R.txt b/src/app/build/intermediates/runtime_symbol_list/release/R.txt new file mode 100644 index 0000000..1865523 --- /dev/null +++ b/src/app/build/intermediates/runtime_symbol_list/release/R.txt @@ -0,0 +1,285 @@ +int array format_for_exported_note 0x7f010000 +int array menu_share_ways 0x7f010001 +int color primary_text_dark 0x7f020000 +int color secondary_text_dark 0x7f020001 +int color user_query_highlight 0x7f020002 +int dimen text_font_size_large 0x7f030000 +int dimen text_font_size_medium 0x7f030001 +int dimen text_font_size_normal 0x7f030002 +int dimen text_font_size_small 0x7f030003 +int dimen text_font_size_super 0x7f030004 +int drawable bg_btn_set_color 0x7f040000 +int drawable bg_color_btn_mask 0x7f040001 +int drawable call_record 0x7f040002 +int drawable clock 0x7f040003 +int drawable delete 0x7f040004 +int drawable dropdown_icon 0x7f040005 +int drawable edit_blue 0x7f040006 +int drawable edit_green 0x7f040007 +int drawable edit_red 0x7f040008 +int drawable edit_title_blue 0x7f040009 +int drawable edit_title_green 0x7f04000a +int drawable edit_title_red 0x7f04000b +int drawable edit_title_white 0x7f04000c +int drawable edit_title_yellow 0x7f04000d +int drawable edit_white 0x7f04000e +int drawable edit_yellow 0x7f04000f +int drawable font_large 0x7f040010 +int drawable font_normal 0x7f040011 +int drawable font_size_selector_bg 0x7f040012 +int drawable font_small 0x7f040013 +int drawable font_super 0x7f040014 +int drawable icon_app 0x7f040015 +int drawable list_background 0x7f040016 +int drawable list_blue_down 0x7f040017 +int drawable list_blue_middle 0x7f040018 +int drawable list_blue_single 0x7f040019 +int drawable list_blue_up 0x7f04001a +int drawable list_folder 0x7f04001b +int drawable list_footer_bg 0x7f04001c +int drawable list_green_down 0x7f04001d +int drawable list_green_middle 0x7f04001e +int drawable list_green_single 0x7f04001f +int drawable list_green_up 0x7f040020 +int drawable list_red_down 0x7f040021 +int drawable list_red_middle 0x7f040022 +int drawable list_red_single 0x7f040023 +int drawable list_red_up 0x7f040024 +int drawable list_white_down 0x7f040025 +int drawable list_white_middle 0x7f040026 +int drawable list_white_single 0x7f040027 +int drawable list_white_up 0x7f040028 +int drawable list_yellow_down 0x7f040029 +int drawable list_yellow_middle 0x7f04002a +int drawable list_yellow_single 0x7f04002b +int drawable list_yellow_up 0x7f04002c +int drawable menu_delete 0x7f04002d +int drawable menu_move 0x7f04002e +int drawable new_note 0x7f04002f +int drawable new_note_normal 0x7f040030 +int drawable new_note_pressed 0x7f040031 +int drawable note_edit_color_selector_panel 0x7f040032 +int drawable notification 0x7f040033 +int drawable search_result 0x7f040034 +int drawable selected 0x7f040035 +int drawable title_alert 0x7f040036 +int drawable title_bar_bg 0x7f040037 +int drawable widget_2x_blue 0x7f040038 +int drawable widget_2x_green 0x7f040039 +int drawable widget_2x_red 0x7f04003a +int drawable widget_2x_white 0x7f04003b +int drawable widget_2x_yellow 0x7f04003c +int drawable widget_4x_blue 0x7f04003d +int drawable widget_4x_green 0x7f04003e +int drawable widget_4x_red 0x7f04003f +int drawable widget_4x_white 0x7f040040 +int drawable widget_4x_yellow 0x7f040041 +int id account_dialog_subtitle 0x7f050000 +int id account_dialog_title 0x7f050001 +int id action_select_all 0x7f050002 +int id add_img_btn 0x7f050003 +int id amPm 0x7f050004 +int id btn_new_note 0x7f050005 +int id btn_set_bg_color 0x7f050006 +int id cb_edit_item 0x7f050007 +int id date 0x7f050008 +int id delete 0x7f050009 +int id et_edit_text 0x7f05000a +int id et_foler_name 0x7f05000b +int id font_size_selector 0x7f05000c +int id hour 0x7f05000d +int id iv_alert_icon 0x7f05000e +int id iv_bg_blue 0x7f05000f +int id iv_bg_blue_select 0x7f050010 +int id iv_bg_green 0x7f050011 +int id iv_bg_green_select 0x7f050012 +int id iv_bg_red 0x7f050013 +int id iv_bg_red_select 0x7f050014 +int id iv_bg_white 0x7f050015 +int id iv_bg_white_select 0x7f050016 +int id iv_bg_yellow 0x7f050017 +int id iv_bg_yellow_select 0x7f050018 +int id iv_large_select 0x7f050019 +int id iv_medium_select 0x7f05001a +int id iv_small_select 0x7f05001b +int id iv_super_select 0x7f05001c +int id ll_font_large 0x7f05001d +int id ll_font_normal 0x7f05001e +int id ll_font_small 0x7f05001f +int id ll_font_super 0x7f050020 +int id menu_alert 0x7f050021 +int id menu_delete 0x7f050022 +int id menu_delete_remind 0x7f050023 +int id menu_export_text 0x7f050024 +int id menu_font_size 0x7f050025 +int id menu_list_mode 0x7f050026 +int id menu_new_folder 0x7f050027 +int id menu_new_note 0x7f050028 +int id menu_search 0x7f050029 +int id menu_send_to_desktop 0x7f05002a +int id menu_setting 0x7f05002b +int id menu_share 0x7f05002c +int id menu_sync 0x7f05002d +int id minute 0x7f05002e +int id move 0x7f05002f +int id navigation_bar 0x7f050030 +int id note_bg_color_selector 0x7f050031 +int id note_edit_list 0x7f050032 +int id note_edit_view 0x7f050033 +int id note_item 0x7f050034 +int id note_title 0x7f050035 +int id notes_list 0x7f050036 +int id prefenerece_sync_status_textview 0x7f050037 +int id preference_sync_button 0x7f050038 +int id selection_menu 0x7f050039 +int id sv_note_edit 0x7f05003a +int id text_num 0x7f05003b +int id tv_alert_date 0x7f05003c +int id tv_folder_name 0x7f05003d +int id tv_modified_date 0x7f05003e +int id tv_name 0x7f05003f +int id tv_time 0x7f050040 +int id tv_title 0x7f050041 +int id tv_title_bar 0x7f050042 +int id widget_bg_image 0x7f050043 +int id widget_text 0x7f050044 +int layout account_dialog_title 0x7f060000 +int layout add_account_text 0x7f060001 +int layout datetime_picker 0x7f060002 +int layout dialog_edit_text 0x7f060003 +int layout folder_list_item 0x7f060004 +int layout note_edit 0x7f060005 +int layout note_edit_list_item 0x7f060006 +int layout note_item 0x7f060007 +int layout note_list 0x7f060008 +int layout note_list_dropdown_menu 0x7f060009 +int layout note_list_footer 0x7f06000a +int layout settings_header 0x7f06000b +int layout widget_2x 0x7f06000c +int layout widget_4x 0x7f06000d +int menu call_note_edit 0x7f070000 +int menu call_record_folder 0x7f070001 +int menu note_edit 0x7f070002 +int menu note_list 0x7f070003 +int menu note_list_dropdown 0x7f070004 +int menu note_list_options 0x7f070005 +int menu sub_folder 0x7f070006 +int plurals search_results_title 0x7f080000 +int raw introduction 0x7f090000 +int string alert_message_delete_folder 0x7f0a0000 +int string alert_message_delete_note 0x7f0a0001 +int string alert_message_delete_notes 0x7f0a0002 +int string alert_title_delete 0x7f0a0003 +int string app_name 0x7f0a0004 +int string app_widget2x2 0x7f0a0005 +int string app_widget4x4 0x7f0a0006 +int string button_delete 0x7f0a0007 +int string call_record_folder_name 0x7f0a0008 +int string datetime_dialog_cancel 0x7f0a0009 +int string datetime_dialog_ok 0x7f0a000a +int string delete_remind_time_message 0x7f0a000b +int string error_note_empty_for_clock 0x7f0a000c +int string error_note_empty_for_send_to_desktop 0x7f0a000d +int string error_note_not_exist 0x7f0a000e +int string error_sdcard_export 0x7f0a000f +int string error_sdcard_unmounted 0x7f0a0010 +int string error_sync_cancelled 0x7f0a0011 +int string error_sync_internal 0x7f0a0012 +int string error_sync_network 0x7f0a0013 +int string failed_sdcard_export 0x7f0a0014 +int string file_name_txt_format 0x7f0a0015 +int string file_path 0x7f0a0016 +int string folder_exist 0x7f0a0017 +int string format_date_ymd 0x7f0a0018 +int string format_datetime_mdhm 0x7f0a0019 +int string format_exported_file_location 0x7f0a001a +int string format_folder_files_count 0x7f0a001b +int string format_move_notes_to_folder 0x7f0a001c +int string hint_foler_name 0x7f0a001d +int string info_note_enter_desktop 0x7f0a001e +int string menu_alert 0x7f0a001f +int string menu_create_folder 0x7f0a0020 +int string menu_delete 0x7f0a0021 +int string menu_deselect_all 0x7f0a0022 +int string menu_export_text 0x7f0a0023 +int string menu_folder_change_name 0x7f0a0024 +int string menu_folder_delete 0x7f0a0025 +int string menu_folder_view 0x7f0a0026 +int string menu_font_large 0x7f0a0027 +int string menu_font_normal 0x7f0a0028 +int string menu_font_size 0x7f0a0029 +int string menu_font_small 0x7f0a002a +int string menu_font_super 0x7f0a002b +int string menu_list_mode 0x7f0a002c +int string menu_move 0x7f0a002d +int string menu_move_parent_folder 0x7f0a002e +int string menu_normal_mode 0x7f0a002f +int string menu_remove_remind 0x7f0a0030 +int string menu_search 0x7f0a0031 +int string menu_select_all 0x7f0a0032 +int string menu_select_none 0x7f0a0033 +int string menu_select_title 0x7f0a0034 +int string menu_send_to_desktop 0x7f0a0035 +int string menu_setting 0x7f0a0036 +int string menu_share 0x7f0a0037 +int string menu_sync 0x7f0a0038 +int string menu_sync_cancel 0x7f0a0039 +int string menu_title_select_folder 0x7f0a003a +int string note_alert_expired 0x7f0a003b +int string note_link_email 0x7f0a003c +int string note_link_other 0x7f0a003d +int string note_link_tel 0x7f0a003e +int string note_link_web 0x7f0a003f +int string notealert_enter 0x7f0a0040 +int string notealert_ok 0x7f0a0041 +int string notelist_menu_new 0x7f0a0042 +int string notelist_string_info 0x7f0a0043 +int string preferences_account_summary 0x7f0a0044 +int string preferences_account_title 0x7f0a0045 +int string preferences_add_account 0x7f0a0046 +int string preferences_bg_random_appear_title 0x7f0a0047 +int string preferences_button_sync_cancel 0x7f0a0048 +int string preferences_button_sync_immediately 0x7f0a0049 +int string preferences_dialog_change_account_title 0x7f0a004a +int string preferences_dialog_change_account_warn_msg 0x7f0a004b +int string preferences_dialog_select_account_tips 0x7f0a004c +int string preferences_dialog_select_account_title 0x7f0a004d +int string preferences_last_sync_time 0x7f0a004e +int string preferences_last_sync_time_format 0x7f0a004f +int string preferences_menu_cancel 0x7f0a0050 +int string preferences_menu_change_account 0x7f0a0051 +int string preferences_menu_remove_account 0x7f0a0052 +int string preferences_title 0x7f0a0053 +int string preferences_toast_cannot_change_account 0x7f0a0054 +int string preferences_toast_success_set_accout 0x7f0a0055 +int string search 0x7f0a0056 +int string search_hint 0x7f0a0057 +int string search_label 0x7f0a0058 +int string search_setting_description 0x7f0a0059 +int string set_remind_time_message 0x7f0a005a +int string success_sdcard_export 0x7f0a005b +int string success_sync_account 0x7f0a005c +int string sync_progress_init_list 0x7f0a005d +int string sync_progress_login 0x7f0a005e +int string sync_progress_syncing 0x7f0a005f +int string ticker_cancel 0x7f0a0060 +int string ticker_fail 0x7f0a0061 +int string ticker_success 0x7f0a0062 +int string ticker_syncing 0x7f0a0063 +int string widget_havenot_content 0x7f0a0064 +int string widget_under_visit_mode 0x7f0a0065 +int style HighlightTextAppearancePrimary 0x7f0b0000 +int style HighlightTextAppearanceSecondary 0x7f0b0001 +int style NoteActionBarStyle 0x7f0b0002 +int style NoteTheme 0x7f0b0003 +int style TextAppearanceLarge 0x7f0b0004 +int style TextAppearanceMedium 0x7f0b0005 +int style TextAppearanceNormal 0x7f0b0006 +int style TextAppearancePrimaryItem 0x7f0b0007 +int style TextAppearanceSecondaryItem 0x7f0b0008 +int style TextAppearanceSuper 0x7f0b0009 +int style TextAppearanceUnderMenuIcon 0x7f0b000a +int xml preferences 0x7f0c0000 +int xml searchable 0x7f0c0001 +int xml widget_2x_info 0x7f0c0002 +int xml widget_4x_info 0x7f0c0003 diff --git a/src/app/build/intermediates/sdk_dependency_data/release/sdkDependencyData.pb b/src/app/build/intermediates/sdk_dependency_data/release/sdkDependencyData.pb new file mode 100644 index 0000000..b168948 Binary files /dev/null and b/src/app/build/intermediates/sdk_dependency_data/release/sdkDependencyData.pb differ diff --git a/src/app/build/intermediates/signing_config_versions/debug/signing-config-versions.json b/src/app/build/intermediates/signing_config_versions/debug/signing-config-versions.json new file mode 100644 index 0000000..1920ca8 --- /dev/null +++ b/src/app/build/intermediates/signing_config_versions/debug/signing-config-versions.json @@ -0,0 +1 @@ +{"enableV1Signing":true,"enableV2Signing":false,"enableV3Signing":false,"enableV4Signing":false} \ No newline at end of file diff --git a/src/app/build/intermediates/signing_config_versions/release/signing-config-versions.json b/src/app/build/intermediates/signing_config_versions/release/signing-config-versions.json new file mode 100644 index 0000000..bb4deaa --- /dev/null +++ b/src/app/build/intermediates/signing_config_versions/release/signing-config-versions.json @@ -0,0 +1 @@ +{"enableV1Signing":true,"enableV2Signing":true,"enableV3Signing":false,"enableV4Signing":false} \ No newline at end of file diff --git a/src/app/build/intermediates/source_set_path_map/debug/file-map.txt b/src/app/build/intermediates/source_set_path_map/debug/file-map.txt new file mode 100644 index 0000000..1e709a3 --- /dev/null +++ b/src/app/build/intermediates/source_set_path_map/debug/file-map.txt @@ -0,0 +1,8 @@ +net.micode.notes.app-pngs-0 D:\MI_Note\Notes-master_01\app\build\generated\res\pngs\debug +net.micode.notes.app-resValues-1 D:\MI_Note\Notes-master_01\app\build\generated\res\resValues\debug +net.micode.notes.app-rs-2 D:\MI_Note\Notes-master_01\app\build\generated\res\rs\debug +net.micode.notes.app-mergeDebugResources-3 D:\MI_Note\Notes-master_01\app\build\intermediates\incremental\debug\mergeDebugResources\merged.dir +net.micode.notes.app-mergeDebugResources-4 D:\MI_Note\Notes-master_01\app\build\intermediates\incremental\debug\mergeDebugResources\stripped.dir +net.micode.notes.app-merged_res-5 D:\MI_Note\Notes-master_01\app\build\intermediates\merged_res\debug +net.micode.notes.app-debug-6 D:\MI_Note\Notes-master_01\app\src\debug\res +net.micode.notes.app-main-7 D:\MI_Note\Notes-master_01\app\src\main\res diff --git a/src/app/build/intermediates/source_set_path_map/release/file-map.txt b/src/app/build/intermediates/source_set_path_map/release/file-map.txt new file mode 100644 index 0000000..9ba1b83 --- /dev/null +++ b/src/app/build/intermediates/source_set_path_map/release/file-map.txt @@ -0,0 +1,8 @@ +net.micode.notes.app-pngs-0 D:\MI_Note\Notes-master_01\app\build\generated\res\pngs\release +net.micode.notes.app-resValues-1 D:\MI_Note\Notes-master_01\app\build\generated\res\resValues\release +net.micode.notes.app-rs-2 D:\MI_Note\Notes-master_01\app\build\generated\res\rs\release +net.micode.notes.app-mergeReleaseResources-3 D:\MI_Note\Notes-master_01\app\build\intermediates\incremental\release\mergeReleaseResources\merged.dir +net.micode.notes.app-mergeReleaseResources-4 D:\MI_Note\Notes-master_01\app\build\intermediates\incremental\release\mergeReleaseResources\stripped.dir +net.micode.notes.app-merged_res-5 D:\MI_Note\Notes-master_01\app\build\intermediates\merged_res\release +net.micode.notes.app-main-6 D:\MI_Note\Notes-master_01\app\src\main\res +net.micode.notes.app-release-7 D:\MI_Note\Notes-master_01\app\src\release\res diff --git a/src/app/build/intermediates/stable_resource_ids_file/debug/stableIds.txt b/src/app/build/intermediates/stable_resource_ids_file/debug/stableIds.txt new file mode 100644 index 0000000..07ab2f8 --- /dev/null +++ b/src/app/build/intermediates/stable_resource_ids_file/debug/stableIds.txt @@ -0,0 +1,285 @@ +net.micode.notes:xml/widget_4x_info = 0x7f0c0003 +net.micode.notes:xml/preferences = 0x7f0c0000 +net.micode.notes:style/TextAppearanceSecondaryItem = 0x7f0b0008 +net.micode.notes:style/TextAppearanceNormal = 0x7f0b0006 +net.micode.notes:style/TextAppearanceLarge = 0x7f0b0004 +net.micode.notes:style/HighlightTextAppearancePrimary = 0x7f0b0000 +net.micode.notes:string/widget_havenot_content = 0x7f0a0064 +net.micode.notes:string/ticker_syncing = 0x7f0a0063 +net.micode.notes:string/ticker_success = 0x7f0a0062 +net.micode.notes:style/HighlightTextAppearanceSecondary = 0x7f0b0001 +net.micode.notes:string/ticker_cancel = 0x7f0a0060 +net.micode.notes:string/sync_progress_syncing = 0x7f0a005f +net.micode.notes:string/sync_progress_init_list = 0x7f0a005d +net.micode.notes:string/search_label = 0x7f0a0058 +net.micode.notes:string/preferences_toast_success_set_accout = 0x7f0a0055 +net.micode.notes:string/preferences_toast_cannot_change_account = 0x7f0a0054 +net.micode.notes:string/preferences_title = 0x7f0a0053 +net.micode.notes:string/preferences_menu_remove_account = 0x7f0a0052 +net.micode.notes:style/NoteActionBarStyle = 0x7f0b0002 +net.micode.notes:string/preferences_menu_change_account = 0x7f0a0051 +net.micode.notes:string/preferences_menu_cancel = 0x7f0a0050 +net.micode.notes:string/preferences_last_sync_time = 0x7f0a004e +net.micode.notes:string/preferences_dialog_select_account_title = 0x7f0a004d +net.micode.notes:string/preferences_dialog_change_account_warn_msg = 0x7f0a004b +net.micode.notes:string/preferences_button_sync_immediately = 0x7f0a0049 +net.micode.notes:string/preferences_button_sync_cancel = 0x7f0a0048 +net.micode.notes:string/preferences_account_summary = 0x7f0a0044 +net.micode.notes:string/success_sdcard_export = 0x7f0a005b +net.micode.notes:string/notelist_string_info = 0x7f0a0043 +net.micode.notes:string/notelist_menu_new = 0x7f0a0042 +net.micode.notes:string/notealert_ok = 0x7f0a0041 +net.micode.notes:string/notealert_enter = 0x7f0a0040 +net.micode.notes:string/note_link_web = 0x7f0a003f +net.micode.notes:string/note_link_tel = 0x7f0a003e +net.micode.notes:string/note_link_other = 0x7f0a003d +net.micode.notes:string/note_link_email = 0x7f0a003c +net.micode.notes:string/note_alert_expired = 0x7f0a003b +net.micode.notes:string/menu_sync_cancel = 0x7f0a0039 +net.micode.notes:string/menu_sync = 0x7f0a0038 +net.micode.notes:string/menu_share = 0x7f0a0037 +net.micode.notes:string/menu_select_title = 0x7f0a0034 +net.micode.notes:style/TextAppearanceMedium = 0x7f0b0005 +net.micode.notes:string/menu_select_none = 0x7f0a0033 +net.micode.notes:string/menu_title_select_folder = 0x7f0a003a +net.micode.notes:string/menu_select_all = 0x7f0a0032 +net.micode.notes:string/menu_search = 0x7f0a0031 +net.micode.notes:string/menu_remove_remind = 0x7f0a0030 +net.micode.notes:string/menu_normal_mode = 0x7f0a002f +net.micode.notes:string/menu_move_parent_folder = 0x7f0a002e +net.micode.notes:string/menu_move = 0x7f0a002d +net.micode.notes:string/menu_list_mode = 0x7f0a002c +net.micode.notes:string/menu_font_super = 0x7f0a002b +net.micode.notes:string/menu_font_small = 0x7f0a002a +net.micode.notes:string/menu_folder_change_name = 0x7f0a0024 +net.micode.notes:string/menu_export_text = 0x7f0a0023 +net.micode.notes:string/menu_deselect_all = 0x7f0a0022 +net.micode.notes:string/menu_create_folder = 0x7f0a0020 +net.micode.notes:string/format_date_ymd = 0x7f0a0018 +net.micode.notes:style/TextAppearancePrimaryItem = 0x7f0b0007 +net.micode.notes:string/hint_foler_name = 0x7f0a001d +net.micode.notes:string/folder_exist = 0x7f0a0017 +net.micode.notes:string/file_path = 0x7f0a0016 +net.micode.notes:string/set_remind_time_message = 0x7f0a005a +net.micode.notes:string/error_sync_network = 0x7f0a0013 +net.micode.notes:string/error_sdcard_unmounted = 0x7f0a0010 +net.micode.notes:string/datetime_dialog_ok = 0x7f0a000a +net.micode.notes:string/datetime_dialog_cancel = 0x7f0a0009 +net.micode.notes:drawable/list_green_up = 0x7f040020 +net.micode.notes:string/call_record_folder_name = 0x7f0a0008 +net.micode.notes:drawable/new_note_normal = 0x7f040030 +net.micode.notes:string/button_delete = 0x7f0a0007 +net.micode.notes:string/app_widget2x2 = 0x7f0a0005 +net.micode.notes:string/menu_font_normal = 0x7f0a0028 +net.micode.notes:string/format_exported_file_location = 0x7f0a001a +net.micode.notes:raw/introduction = 0x7f090000 +net.micode.notes:string/delete_remind_time_message = 0x7f0a000b +net.micode.notes:dimen/text_font_size_super = 0x7f030004 +net.micode.notes:drawable/selected = 0x7f040035 +net.micode.notes:plurals/search_results_title = 0x7f080000 +net.micode.notes:menu/sub_folder = 0x7f070006 +net.micode.notes:menu/note_edit = 0x7f070002 +net.micode.notes:style/TextAppearanceSuper = 0x7f0b0009 +net.micode.notes:color/secondary_text_dark = 0x7f020001 +net.micode.notes:id/move = 0x7f05002f +net.micode.notes:id/iv_bg_yellow_select = 0x7f050018 +net.micode.notes:menu/call_note_edit = 0x7f070000 +net.micode.notes:drawable/new_note_pressed = 0x7f040031 +net.micode.notes:id/iv_bg_blue = 0x7f05000f +net.micode.notes:layout/settings_header = 0x7f06000b +net.micode.notes:layout/note_list = 0x7f060008 +net.micode.notes:drawable/list_white_single = 0x7f040027 +net.micode.notes:layout/note_item = 0x7f060007 +net.micode.notes:xml/widget_2x_info = 0x7f0c0002 +net.micode.notes:string/alert_message_delete_folder = 0x7f0a0000 +net.micode.notes:layout/datetime_picker = 0x7f060002 +net.micode.notes:id/btn_new_note = 0x7f050005 +net.micode.notes:layout/note_list_footer = 0x7f06000a +net.micode.notes:id/widget_text = 0x7f050044 +net.micode.notes:id/tv_title_bar = 0x7f050042 +net.micode.notes:drawable/widget_2x_blue = 0x7f040038 +net.micode.notes:id/tv_time = 0x7f050040 +net.micode.notes:id/tv_name = 0x7f05003f +net.micode.notes:drawable/new_note = 0x7f04002f +net.micode.notes:id/sv_note_edit = 0x7f05003a +net.micode.notes:string/error_sdcard_export = 0x7f0a000f +net.micode.notes:id/preference_sync_button = 0x7f050038 +net.micode.notes:layout/note_edit = 0x7f060005 +net.micode.notes:id/notes_list = 0x7f050036 +net.micode.notes:string/alert_message_delete_notes = 0x7f0a0002 +net.micode.notes:drawable/title_alert = 0x7f040036 +net.micode.notes:id/note_title = 0x7f050035 +net.micode.notes:string/preferences_last_sync_time_format = 0x7f0a004f +net.micode.notes:id/note_edit_view = 0x7f050033 +net.micode.notes:id/navigation_bar = 0x7f050030 +net.micode.notes:string/app_widget4x4 = 0x7f0a0006 +net.micode.notes:drawable/font_normal = 0x7f040011 +net.micode.notes:id/minute = 0x7f05002e +net.micode.notes:drawable/font_super = 0x7f040014 +net.micode.notes:id/menu_sync = 0x7f05002d +net.micode.notes:id/menu_share = 0x7f05002c +net.micode.notes:id/menu_setting = 0x7f05002b +net.micode.notes:string/widget_under_visit_mode = 0x7f0a0065 +net.micode.notes:id/menu_send_to_desktop = 0x7f05002a +net.micode.notes:id/menu_search = 0x7f050029 +net.micode.notes:drawable/list_green_down = 0x7f04001d +net.micode.notes:id/menu_new_note = 0x7f050028 +net.micode.notes:string/error_note_not_exist = 0x7f0a000e +net.micode.notes:id/menu_new_folder = 0x7f050027 +net.micode.notes:id/menu_list_mode = 0x7f050026 +net.micode.notes:id/iv_medium_select = 0x7f05001a +net.micode.notes:id/menu_export_text = 0x7f050024 +net.micode.notes:string/menu_folder_view = 0x7f0a0026 +net.micode.notes:id/menu_delete = 0x7f050022 +net.micode.notes:string/ticker_fail = 0x7f0a0061 +net.micode.notes:string/file_name_txt_format = 0x7f0a0015 +net.micode.notes:drawable/edit_blue = 0x7f040006 +net.micode.notes:id/prefenerece_sync_status_textview = 0x7f050037 +net.micode.notes:string/menu_font_size = 0x7f0a0029 +net.micode.notes:string/menu_alert = 0x7f0a001f +net.micode.notes:drawable/edit_title_yellow = 0x7f04000d +net.micode.notes:id/menu_alert = 0x7f050021 +net.micode.notes:string/success_sync_account = 0x7f0a005c +net.micode.notes:id/ll_font_super = 0x7f050020 +net.micode.notes:id/ll_font_small = 0x7f05001f +net.micode.notes:menu/call_record_folder = 0x7f070001 +net.micode.notes:id/ll_font_normal = 0x7f05001e +net.micode.notes:id/ll_font_large = 0x7f05001d +net.micode.notes:id/note_bg_color_selector = 0x7f050031 +net.micode.notes:drawable/search_result = 0x7f040034 +net.micode.notes:id/iv_super_select = 0x7f05001c +net.micode.notes:id/iv_bg_yellow = 0x7f050017 +net.micode.notes:string/error_sync_cancelled = 0x7f0a0011 +net.micode.notes:id/iv_bg_white_select = 0x7f050016 +net.micode.notes:id/iv_bg_white = 0x7f050015 +net.micode.notes:id/tv_alert_date = 0x7f05003c +net.micode.notes:dimen/text_font_size_large = 0x7f030000 +net.micode.notes:drawable/notification = 0x7f040033 +net.micode.notes:id/iv_bg_red = 0x7f050013 +net.micode.notes:string/menu_font_large = 0x7f0a0027 +net.micode.notes:drawable/widget_4x_blue = 0x7f04003d +net.micode.notes:id/iv_large_select = 0x7f050019 +net.micode.notes:id/widget_bg_image = 0x7f050043 +net.micode.notes:id/iv_bg_green_select = 0x7f050012 +net.micode.notes:string/error_note_empty_for_clock = 0x7f0a000c +net.micode.notes:string/preferences_dialog_change_account_title = 0x7f0a004a +net.micode.notes:drawable/menu_move = 0x7f04002e +net.micode.notes:drawable/widget_4x_white = 0x7f040040 +net.micode.notes:id/iv_bg_blue_select = 0x7f050010 +net.micode.notes:string/preferences_dialog_select_account_tips = 0x7f0a004c +net.micode.notes:id/font_size_selector = 0x7f05000c +net.micode.notes:id/et_edit_text = 0x7f05000a +net.micode.notes:id/et_foler_name = 0x7f05000b +net.micode.notes:drawable/edit_green = 0x7f040007 +net.micode.notes:layout/widget_4x = 0x7f06000d +net.micode.notes:string/search = 0x7f0a0056 +net.micode.notes:id/cb_edit_item = 0x7f050007 +net.micode.notes:id/btn_set_bg_color = 0x7f050006 +net.micode.notes:id/account_dialog_subtitle = 0x7f050000 +net.micode.notes:menu/note_list = 0x7f070003 +net.micode.notes:id/account_dialog_title = 0x7f050001 +net.micode.notes:id/iv_bg_green = 0x7f050011 +net.micode.notes:id/amPm = 0x7f050004 +net.micode.notes:drawable/widget_4x_green = 0x7f04003e +net.micode.notes:style/NoteTheme = 0x7f0b0003 +net.micode.notes:id/hour = 0x7f05000d +net.micode.notes:drawable/note_edit_color_selector_panel = 0x7f040032 +net.micode.notes:drawable/widget_2x_yellow = 0x7f04003c +net.micode.notes:string/format_move_notes_to_folder = 0x7f0a001c +net.micode.notes:drawable/widget_2x_red = 0x7f04003a +net.micode.notes:style/TextAppearanceUnderMenuIcon = 0x7f0b000a +net.micode.notes:id/delete = 0x7f050009 +net.micode.notes:drawable/widget_2x_green = 0x7f040039 +net.micode.notes:drawable/title_bar_bg = 0x7f040037 +net.micode.notes:drawable/menu_delete = 0x7f04002d +net.micode.notes:string/error_sync_internal = 0x7f0a0012 +net.micode.notes:drawable/list_green_single = 0x7f04001f +net.micode.notes:string/alert_message_delete_note = 0x7f0a0001 +net.micode.notes:id/tv_modified_date = 0x7f05003e +net.micode.notes:drawable/list_blue_middle = 0x7f040018 +net.micode.notes:id/iv_small_select = 0x7f05001b +net.micode.notes:menu/note_list_options = 0x7f070005 +net.micode.notes:xml/searchable = 0x7f0c0001 +net.micode.notes:string/menu_folder_delete = 0x7f0a0025 +net.micode.notes:drawable/dropdown_icon = 0x7f040005 +net.micode.notes:id/date = 0x7f050008 +net.micode.notes:drawable/list_yellow_single = 0x7f04002b +net.micode.notes:drawable/list_red_up = 0x7f040024 +net.micode.notes:drawable/widget_4x_yellow = 0x7f040041 +net.micode.notes:drawable/list_yellow_middle = 0x7f04002a +net.micode.notes:id/tv_folder_name = 0x7f05003d +net.micode.notes:drawable/list_yellow_down = 0x7f040029 +net.micode.notes:string/format_folder_files_count = 0x7f0a001b +net.micode.notes:drawable/clock = 0x7f040003 +net.micode.notes:drawable/list_white_up = 0x7f040028 +net.micode.notes:drawable/edit_title_blue = 0x7f040009 +net.micode.notes:drawable/edit_red = 0x7f040008 +net.micode.notes:id/iv_alert_icon = 0x7f05000e +net.micode.notes:layout/dialog_edit_text = 0x7f060003 +net.micode.notes:string/preferences_account_title = 0x7f0a0045 +net.micode.notes:drawable/edit_white = 0x7f04000e +net.micode.notes:drawable/list_white_middle = 0x7f040026 +net.micode.notes:color/user_query_highlight = 0x7f020002 +net.micode.notes:drawable/list_white_down = 0x7f040025 +net.micode.notes:string/preferences_add_account = 0x7f0a0046 +net.micode.notes:drawable/bg_btn_set_color = 0x7f040000 +net.micode.notes:string/preferences_bg_random_appear_title = 0x7f0a0047 +net.micode.notes:layout/widget_2x = 0x7f06000c +net.micode.notes:drawable/list_footer_bg = 0x7f04001c +net.micode.notes:string/alert_title_delete = 0x7f0a0003 +net.micode.notes:drawable/edit_title_green = 0x7f04000a +net.micode.notes:drawable/icon_app = 0x7f040015 +net.micode.notes:string/menu_send_to_desktop = 0x7f0a0035 +net.micode.notes:drawable/list_red_single = 0x7f040023 +net.micode.notes:string/failed_sdcard_export = 0x7f0a0014 +net.micode.notes:drawable/widget_4x_red = 0x7f04003f +net.micode.notes:id/menu_delete_remind = 0x7f050023 +net.micode.notes:drawable/list_red_down = 0x7f040021 +net.micode.notes:drawable/list_red_middle = 0x7f040022 +net.micode.notes:id/iv_bg_red_select = 0x7f050014 +net.micode.notes:string/error_note_empty_for_send_to_desktop = 0x7f0a000d +net.micode.notes:layout/note_list_dropdown_menu = 0x7f060009 +net.micode.notes:drawable/list_blue_down = 0x7f040017 +net.micode.notes:id/action_select_all = 0x7f050002 +net.micode.notes:string/format_datetime_mdhm = 0x7f0a0019 +net.micode.notes:drawable/font_small = 0x7f040013 +net.micode.notes:string/sync_progress_login = 0x7f0a005e +net.micode.notes:array/menu_share_ways = 0x7f010001 +net.micode.notes:drawable/widget_2x_white = 0x7f04003b +net.micode.notes:layout/folder_list_item = 0x7f060004 +net.micode.notes:layout/add_account_text = 0x7f060001 +net.micode.notes:id/tv_title = 0x7f050041 +net.micode.notes:color/primary_text_dark = 0x7f020000 +net.micode.notes:drawable/font_size_selector_bg = 0x7f040012 +net.micode.notes:drawable/list_blue_up = 0x7f04001a +net.micode.notes:string/search_setting_description = 0x7f0a0059 +net.micode.notes:drawable/list_blue_single = 0x7f040019 +net.micode.notes:drawable/font_large = 0x7f040010 +net.micode.notes:id/selection_menu = 0x7f050039 +net.micode.notes:string/info_note_enter_desktop = 0x7f0a001e +net.micode.notes:id/add_img_btn = 0x7f050003 +net.micode.notes:drawable/delete = 0x7f040004 +net.micode.notes:drawable/edit_yellow = 0x7f04000f +net.micode.notes:id/note_item = 0x7f050034 +net.micode.notes:drawable/edit_title_white = 0x7f04000c +net.micode.notes:id/note_edit_list = 0x7f050032 +net.micode.notes:drawable/edit_title_red = 0x7f04000b +net.micode.notes:string/menu_delete = 0x7f0a0021 +net.micode.notes:drawable/list_folder = 0x7f04001b +net.micode.notes:drawable/call_record = 0x7f040002 +net.micode.notes:id/text_num = 0x7f05003b +net.micode.notes:string/search_hint = 0x7f0a0057 +net.micode.notes:id/menu_font_size = 0x7f050025 +net.micode.notes:drawable/bg_color_btn_mask = 0x7f040001 +net.micode.notes:drawable/list_yellow_up = 0x7f04002c +net.micode.notes:dimen/text_font_size_small = 0x7f030003 +net.micode.notes:dimen/text_font_size_normal = 0x7f030002 +net.micode.notes:drawable/list_green_middle = 0x7f04001e +net.micode.notes:drawable/list_background = 0x7f040016 +net.micode.notes:string/app_name = 0x7f0a0004 +net.micode.notes:menu/note_list_dropdown = 0x7f070004 +net.micode.notes:string/menu_setting = 0x7f0a0036 +net.micode.notes:dimen/text_font_size_medium = 0x7f030001 +net.micode.notes:layout/note_edit_list_item = 0x7f060006 +net.micode.notes:layout/account_dialog_title = 0x7f060000 +net.micode.notes:array/format_for_exported_note = 0x7f010000 diff --git a/src/app/build/intermediates/variant_model/debug/variant_model.json b/src/app/build/intermediates/variant_model/debug/variant_model.json new file mode 100644 index 0000000..fbfb74a Binary files /dev/null and b/src/app/build/intermediates/variant_model/debug/variant_model.json differ diff --git a/src/app/build/intermediates/variant_model/release/variant_model.json b/src/app/build/intermediates/variant_model/release/variant_model.json new file mode 100644 index 0000000..fbfb74a Binary files /dev/null and b/src/app/build/intermediates/variant_model/release/variant_model.json differ diff --git a/src/app/build/outputs/apk/release/app-release-unsigned.apk b/src/app/build/outputs/apk/release/app-release-unsigned.apk new file mode 100644 index 0000000..60d13e1 Binary files /dev/null and b/src/app/build/outputs/apk/release/app-release-unsigned.apk differ diff --git a/src/app/build/outputs/apk/release/output-metadata.json b/src/app/build/outputs/apk/release/output-metadata.json new file mode 100644 index 0000000..2b4ecc0 --- /dev/null +++ b/src/app/build/outputs/apk/release/output-metadata.json @@ -0,0 +1,20 @@ +{ + "version": 3, + "artifactType": { + "type": "APK", + "kind": "Directory" + }, + "applicationId": "net.micode.notes", + "variantName": "release", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 1, + "versionName": "0.1", + "outputFile": "app-release-unsigned.apk" + } + ], + "elementType": "File" +} \ No newline at end of file diff --git a/src/app/build/outputs/logs/manifest-merger-debug-report.txt b/src/app/build/outputs/logs/manifest-merger-debug-report.txt new file mode 100644 index 0000000..734c647 --- /dev/null +++ b/src/app/build/outputs/logs/manifest-merger-debug-report.txt @@ -0,0 +1,233 @@ +-- Merging decision tree log --- +manifest +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:18:1-149:12 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:18:1-149:12 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:18:1-149:12 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:18:1-149:12 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:18:1-149:12 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:18:1-149:12 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:18:1-149:12 + package + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:19:5-31 + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml + android:versionName + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:21:5-30 + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml + xmlns:android + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:18:11-69 + android:versionCode + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:20:5-28 + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml +uses-sdk +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:5-44 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:5-44 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:5-44 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:5-44 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:5-44 + android:targetSdkVersion + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:5-44 + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml + android:minSdkVersion + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:15-41 + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml +uses-permission#android.permission.WRITE_EXTERNAL_STORAGE +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:25:5-81 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:25:22-78 +uses-permission#com.android.launcher.permission.INSTALL_SHORTCUT +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:26:5-88 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:26:22-85 +uses-permission#android.permission.INTERNET +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:27:5-67 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:27:22-64 +uses-permission#android.permission.READ_CONTACTS +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:28:5-72 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:28:22-69 +uses-permission#android.permission.MANAGE_ACCOUNTS +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:29:5-74 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:29:22-71 +uses-permission#android.permission.AUTHENTICATE_ACCOUNTS +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:30:5-80 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:30:22-77 +uses-permission#android.permission.GET_ACCOUNTS +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:31:5-71 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:31:22-68 +uses-permission#android.permission.USE_CREDENTIALS +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:32:5-74 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:32:22-71 +uses-permission#android.permission.RECEIVE_BOOT_COMPLETED +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:33:5-81 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:33:22-78 +application +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:35:5-148:19 + android:label + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:37:9-41 + android:icon + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:36:9-42 +activity#net.micode.notes.ui.NotesListActivity +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:38:9-50:20 + android:label + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:41:13-45 + android:launchMode + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:42:13-43 + android:windowSoftInputMode + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:44:13-52 + android:configChanges + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:40:13-74 + android:theme + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:43:13-45 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:39:13-49 +intent-filter#action:name:android.intent.action.MAIN+category:name:android.intent.category.LAUNCHER +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:46:13-49:29 +action#android.intent.action.MAIN +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:47:17-69 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:47:25-66 +category#android.intent.category.LAUNCHER +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:48:17-77 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:48:27-74 +activity#net.micode.notes.ui.NoteEditActivity +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:52:9-80:20 + android:launchMode + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:55:13-43 + android:configChanges + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:54:13-74 + android:theme + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:56:13-45 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:53:13-48 +intent-filter#action:name:android.intent.action.VIEW+category:name:android.intent.category.DEFAULT+data:mimeType:vnd.android.cursor.item/call_note+data:mimeType:vnd.android.cursor.item/text_note +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:58:13-63:29 +action#android.intent.action.VIEW +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:59:17-69 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:59:25-66 +category#android.intent.category.DEFAULT +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:60:17-76 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:60:27-73 +data +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:17-78 + android:mimeType + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:23-75 +intent-filter#action:name:android.intent.action.INSERT_OR_EDIT+category:name:android.intent.category.DEFAULT+data:mimeType:vnd.android.cursor.item/call_note+data:mimeType:vnd.android.cursor.item/text_note +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:65:13-70:29 +action#android.intent.action.INSERT_OR_EDIT +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:66:17-79 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:66:25-76 +intent-filter#action:name:android.intent.action.SEARCH+category:name:android.intent.category.DEFAULT +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:72:13-75:29 +action#android.intent.action.SEARCH +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:73:17-71 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:73:25-68 +meta-data#android.app.searchable +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:77:13-79:54 + android:resource + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:79:17-51 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:78:17-54 +provider#net.micode.notes.data.NotesProvider +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:82:9-85:43 + android:authorities + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:84:13-47 + android:multiprocess + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:85:13-40 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:83:13-63 +receiver#net.micode.notes.widget.NoteWidgetProvider_2x +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:87:9-99:20 + android:label + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:89:13-50 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:88:13-57 +intent-filter#action:name:android.appwidget.action.APPWIDGET_DELETED+action:name:android.appwidget.action.APPWIDGET_UPDATE+action:name:android.intent.action.PRIVACY_MODE_CHANGED +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:90:13-94:29 +action#android.appwidget.action.APPWIDGET_UPDATE +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:91:17-84 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:91:25-81 +action#android.appwidget.action.APPWIDGET_DELETED +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:92:17-85 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:92:25-82 +action#android.intent.action.PRIVACY_MODE_CHANGED +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:93:17-85 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:93:25-82 +meta-data#android.appwidget.provider +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:96:13-98:58 + android:resource + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:98:17-55 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:97:17-58 +receiver#net.micode.notes.widget.NoteWidgetProvider_4x +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:100:9-113:20 + android:label + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:102:13-50 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:101:13-57 +receiver#net.micode.notes.ui.AlarmInitReceiver +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:115:9-119:20 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:115:19-55 +intent-filter#action:name:android.intent.action.BOOT_COMPLETED +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:116:13-118:29 +action#android.intent.action.BOOT_COMPLETED +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:117:17-79 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:117:25-76 +receiver#net.micode.notes.ui.AlarmReceiver +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:121:9-124:20 + android:process + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:123:13-38 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:122:13-61 +activity#net.micode.notes.ui.AlarmAlertActivity +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:126:9-131:20 + android:label + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:128:13-45 + android:launchMode + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:129:13-48 + android:theme + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:130:13-75 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:127:13-50 +activity#net.micode.notes.ui.NotesPreferenceActivity +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:133:9-138:20 + android:label + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:135:13-54 + android:launchMode + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:136:13-43 + android:theme + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:137:13-60 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:134:13-71 +service#net.micode.notes.gtask.remote.GTaskSyncService +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:140:9-143:19 + android:exported + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:142:13-37 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:141:13-74 +meta-data#android.app.default_searchable +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:145:9-147:52 + android:value + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:147:13-49 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:146:13-58 diff --git a/src/app/build/outputs/logs/manifest-merger-release-report.txt b/src/app/build/outputs/logs/manifest-merger-release-report.txt new file mode 100644 index 0000000..734c647 --- /dev/null +++ b/src/app/build/outputs/logs/manifest-merger-release-report.txt @@ -0,0 +1,233 @@ +-- Merging decision tree log --- +manifest +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:18:1-149:12 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:18:1-149:12 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:18:1-149:12 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:18:1-149:12 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:18:1-149:12 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:18:1-149:12 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:18:1-149:12 + package + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:19:5-31 + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml + android:versionName + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:21:5-30 + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml + xmlns:android + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:18:11-69 + android:versionCode + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:20:5-28 + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml +uses-sdk +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:5-44 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:5-44 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:5-44 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:5-44 +INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:5-44 + android:targetSdkVersion + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:5-44 + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml + android:minSdkVersion + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:23:15-41 + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml + INJECTED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml +uses-permission#android.permission.WRITE_EXTERNAL_STORAGE +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:25:5-81 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:25:22-78 +uses-permission#com.android.launcher.permission.INSTALL_SHORTCUT +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:26:5-88 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:26:22-85 +uses-permission#android.permission.INTERNET +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:27:5-67 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:27:22-64 +uses-permission#android.permission.READ_CONTACTS +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:28:5-72 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:28:22-69 +uses-permission#android.permission.MANAGE_ACCOUNTS +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:29:5-74 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:29:22-71 +uses-permission#android.permission.AUTHENTICATE_ACCOUNTS +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:30:5-80 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:30:22-77 +uses-permission#android.permission.GET_ACCOUNTS +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:31:5-71 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:31:22-68 +uses-permission#android.permission.USE_CREDENTIALS +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:32:5-74 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:32:22-71 +uses-permission#android.permission.RECEIVE_BOOT_COMPLETED +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:33:5-81 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:33:22-78 +application +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:35:5-148:19 + android:label + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:37:9-41 + android:icon + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:36:9-42 +activity#net.micode.notes.ui.NotesListActivity +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:38:9-50:20 + android:label + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:41:13-45 + android:launchMode + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:42:13-43 + android:windowSoftInputMode + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:44:13-52 + android:configChanges + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:40:13-74 + android:theme + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:43:13-45 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:39:13-49 +intent-filter#action:name:android.intent.action.MAIN+category:name:android.intent.category.LAUNCHER +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:46:13-49:29 +action#android.intent.action.MAIN +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:47:17-69 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:47:25-66 +category#android.intent.category.LAUNCHER +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:48:17-77 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:48:27-74 +activity#net.micode.notes.ui.NoteEditActivity +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:52:9-80:20 + android:launchMode + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:55:13-43 + android:configChanges + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:54:13-74 + android:theme + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:56:13-45 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:53:13-48 +intent-filter#action:name:android.intent.action.VIEW+category:name:android.intent.category.DEFAULT+data:mimeType:vnd.android.cursor.item/call_note+data:mimeType:vnd.android.cursor.item/text_note +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:58:13-63:29 +action#android.intent.action.VIEW +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:59:17-69 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:59:25-66 +category#android.intent.category.DEFAULT +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:60:17-76 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:60:27-73 +data +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:17-78 + android:mimeType + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:61:23-75 +intent-filter#action:name:android.intent.action.INSERT_OR_EDIT+category:name:android.intent.category.DEFAULT+data:mimeType:vnd.android.cursor.item/call_note+data:mimeType:vnd.android.cursor.item/text_note +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:65:13-70:29 +action#android.intent.action.INSERT_OR_EDIT +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:66:17-79 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:66:25-76 +intent-filter#action:name:android.intent.action.SEARCH+category:name:android.intent.category.DEFAULT +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:72:13-75:29 +action#android.intent.action.SEARCH +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:73:17-71 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:73:25-68 +meta-data#android.app.searchable +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:77:13-79:54 + android:resource + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:79:17-51 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:78:17-54 +provider#net.micode.notes.data.NotesProvider +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:82:9-85:43 + android:authorities + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:84:13-47 + android:multiprocess + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:85:13-40 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:83:13-63 +receiver#net.micode.notes.widget.NoteWidgetProvider_2x +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:87:9-99:20 + android:label + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:89:13-50 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:88:13-57 +intent-filter#action:name:android.appwidget.action.APPWIDGET_DELETED+action:name:android.appwidget.action.APPWIDGET_UPDATE+action:name:android.intent.action.PRIVACY_MODE_CHANGED +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:90:13-94:29 +action#android.appwidget.action.APPWIDGET_UPDATE +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:91:17-84 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:91:25-81 +action#android.appwidget.action.APPWIDGET_DELETED +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:92:17-85 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:92:25-82 +action#android.intent.action.PRIVACY_MODE_CHANGED +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:93:17-85 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:93:25-82 +meta-data#android.appwidget.provider +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:96:13-98:58 + android:resource + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:98:17-55 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:97:17-58 +receiver#net.micode.notes.widget.NoteWidgetProvider_4x +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:100:9-113:20 + android:label + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:102:13-50 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:101:13-57 +receiver#net.micode.notes.ui.AlarmInitReceiver +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:115:9-119:20 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:115:19-55 +intent-filter#action:name:android.intent.action.BOOT_COMPLETED +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:116:13-118:29 +action#android.intent.action.BOOT_COMPLETED +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:117:17-79 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:117:25-76 +receiver#net.micode.notes.ui.AlarmReceiver +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:121:9-124:20 + android:process + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:123:13-38 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:122:13-61 +activity#net.micode.notes.ui.AlarmAlertActivity +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:126:9-131:20 + android:label + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:128:13-45 + android:launchMode + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:129:13-48 + android:theme + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:130:13-75 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:127:13-50 +activity#net.micode.notes.ui.NotesPreferenceActivity +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:133:9-138:20 + android:label + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:135:13-54 + android:launchMode + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:136:13-43 + android:theme + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:137:13-60 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:134:13-71 +service#net.micode.notes.gtask.remote.GTaskSyncService +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:140:9-143:19 + android:exported + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:142:13-37 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:141:13-74 +meta-data#android.app.default_searchable +ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:145:9-147:52 + android:value + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:147:13-49 + android:name + ADDED from D:\MI_Note\Notes-master_01\app\src\main\AndroidManifest.xml:146:13-58 diff --git a/src/app/build/outputs/sdk-dependencies/release/sdkDependencies.txt b/src/app/build/outputs/sdk-dependencies/release/sdkDependencies.txt new file mode 100644 index 0000000..3d6fd33 --- /dev/null +++ b/src/app/build/outputs/sdk-dependencies/release/sdkDependencies.txt @@ -0,0 +1,16 @@ +# List of SDK dependencies of this app, this information is also included in an encrypted form in the APK. +# For more information visit: https://d.android.com/r/tools/dependency-metadata + +module_dependencies { + module_name: "base" +} +repositories { + maven_repo { + url: "https://dl.google.com/dl/android/maven2/" + } +} +repositories { + maven_repo { + url: "https://jcenter.bintray.com/" + } +} diff --git a/src/app/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin b/src/app/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin new file mode 100644 index 0000000..a7148d1 Binary files /dev/null and b/src/app/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin differ diff --git a/src/app/build/tmp/compileReleaseJavaWithJavac/previous-compilation-data.bin b/src/app/build/tmp/compileReleaseJavaWithJavac/previous-compilation-data.bin new file mode 100644 index 0000000..1b40f41 Binary files /dev/null and b/src/app/build/tmp/compileReleaseJavaWithJavac/previous-compilation-data.bin differ diff --git a/src/app/local.properties b/src/app/local.properties new file mode 100644 index 0000000..cb23451 --- /dev/null +++ b/src/app/local.properties @@ -0,0 +1,8 @@ +## This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +#Fri Apr 28 17:07:24 CST 2023 +sdk.dir=C\:\\Users\\conquer\\AppData\\Local\\Android\\Sdk diff --git a/AndroidManifest.xml b/src/app/src/main/AndroidManifest.xml similarity index 99% rename from AndroidManifest.xml rename to src/app/src/main/AndroidManifest.xml index e5c7d47..566b8d9 100644 --- a/AndroidManifest.xml +++ b/src/app/src/main/AndroidManifest.xml @@ -41,7 +41,6 @@ android:label="@string/app_name" android:launchMode="singleTop" android:theme="@style/NoteTheme" - android:uiOptions="splitActionBarWhenNarrow" android:windowSoftInputMode="adjustPan" > diff --git a/src/net/micode/notes/data/Contact.java b/src/app/src/main/java/net/micode/notes/data/Contact.java similarity index 100% rename from src/net/micode/notes/data/Contact.java rename to src/app/src/main/java/net/micode/notes/data/Contact.java diff --git a/src/net/micode/notes/data/Notes.java b/src/app/src/main/java/net/micode/notes/data/Notes.java similarity index 100% rename from src/net/micode/notes/data/Notes.java rename to src/app/src/main/java/net/micode/notes/data/Notes.java diff --git a/src/net/micode/notes/data/NotesDatabaseHelper.java b/src/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java similarity index 100% rename from src/net/micode/notes/data/NotesDatabaseHelper.java rename to src/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java diff --git a/src/net/micode/notes/data/NotesProvider.java b/src/app/src/main/java/net/micode/notes/data/NotesProvider.java similarity index 100% rename from src/net/micode/notes/data/NotesProvider.java rename to src/app/src/main/java/net/micode/notes/data/NotesProvider.java diff --git a/src/app/src/main/java/net/micode/notes/gtask/data/MetaData.java b/src/app/src/main/java/net/micode/notes/gtask/data/MetaData.java new file mode 100644 index 0000000..fbe8da3 --- /dev/null +++ b/src/app/src/main/java/net/micode/notes/gtask/data/MetaData.java @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.data; + +import android.database.Cursor; +import android.util.Log; + +import net.micode.notes.tool.GTaskStringUtils; + +import org.json.JSONException; +import org.json.JSONObject; + + +public class MetaData extends Task { + /* + * 功能描述:得到类的简写名称存入字符串TAG中 + * 实现过程:调用getSimpleName ()函数 + */ + private final static String TAG = MetaData.class.getSimpleName(); + private String mRelatedGid = null; + /* + * 功能描述:设置数据,即生成元数据库 + * 实现过程:调用JSONObject库函数put (),Task类中的setNotes ()和setName ()函数 + */ + public void setMeta(String gid, JSONObject metaInfo) { + //对函数块进行注释 + try { + metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid); + /* + * 将这对键值放入metaInfo这个jsonobject对象中 + */ + } catch (JSONException e) { + Log.e(TAG, "failed to put related gid"); + /* + * 输出错误信息 + */ + } + setNotes(metaInfo.toString()); + setName(GTaskStringUtils.META_NOTE_NAME); + } + /* + * 功能描述:获取相关联的Gid + */ + public String getRelatedGid() { + return mRelatedGid; + } + /* + * 功能描述:判断当前数据是否为空,若为空则返回真即值得保存 + */ + @Override + public boolean isWorthSaving() { + return getNotes() != null; + } + /* + * 功能描述:使用远程json数据对象设置元数据内容 + * 实现过程:调用父类Task中的setContentByRemoteJSON ()函数 + */ + @Override + public void setContentByRemoteJSON(JSONObject js) { + super.setContentByRemoteJSON(js); + if (getNotes() != null) { + try { + JSONObject metaInfo = new JSONObject(getNotes().trim()); + mRelatedGid = metaInfo.getString(GTaskStringUtils.META_HEAD_GTASK_ID); + } catch (JSONException e) { + Log.w(TAG, "failed to get related gid"); + /* + * 输出警告信息 + */ + mRelatedGid = null; + } + } + } + /* + * 功能描述:使用本地json数据对象设置元数据内容,一般不会用到,若用到,则抛出异常 + */ + @Override + public void setContentByLocalJSON(JSONObject js) { + // this function should not be called + throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called"); + /* + * 传递非法参数异常 + */ + } + /* + * 功能描述:从元数据内容中获取本地json对象,一般不会用到,若用到,则抛出异常 + */ + @Override + public JSONObject getLocalJSONFromContent() { + throw new IllegalAccessError("MetaData:getLocalJSONFromContent should not be called"); + /* + * 传递非法参数异常 + */ + } + + @Override + public int getSyncAction(Cursor c) { + throw new IllegalAccessError("MetaData:getSyncAction should not be called"); + /* + * 传递非法参数异常 + */ + } + +} diff --git a/src/app/src/main/java/net/micode/notes/gtask/data/Node.java b/src/app/src/main/java/net/micode/notes/gtask/data/Node.java new file mode 100644 index 0000000..fabe296 --- /dev/null +++ b/src/app/src/main/java/net/micode/notes/gtask/data/Node.java @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.data; + +import android.database.Cursor; + +import org.json.JSONObject; +/* + * 应该是同步操作的基础数据类型,定义了相关指示同步操作的常量 +*/ +public abstract class Node { + //定义了各种用于表征同步状态的常量 + public static final int SYNC_ACTION_NONE = 0;// 本地和云端都无可更新内容(即本地和云端内容一致) + + public static final int SYNC_ACTION_ADD_REMOTE = 1;// 需要在远程云端增加内容 + + public static final int SYNC_ACTION_ADD_LOCAL = 2;// 需要在本地增加内容 + + public static final int SYNC_ACTION_DEL_REMOTE = 3;// 需要在远程云端删除内容 + + public static final int SYNC_ACTION_DEL_LOCAL = 4;// 需要在本地删除内容 + + public static final int SYNC_ACTION_UPDATE_REMOTE = 5;// 需要将本地内容更新到远程云端 + + public static final int SYNC_ACTION_UPDATE_LOCAL = 6;// 需要将远程云端内容更新到本地 + + public static final int SYNC_ACTION_UPDATE_CONFLICT = 7;// 同步出现冲突 + + public static final int SYNC_ACTION_ERROR = 8;// 同步出现错误 + + private String mGid; + + private String mName; + + private long mLastModified; + //记录最后一次修改时间 + private boolean mDeleted; + //表征是否被删除 + public Node() { + mGid = null; + mName = ""; + mLastModified = 0; + mDeleted = false; + } + + public abstract JSONObject getCreateAction(int actionId); + + public abstract JSONObject getUpdateAction(int actionId); + + public abstract void setContentByRemoteJSON(JSONObject js); + + public abstract void setContentByLocalJSON(JSONObject js); + + public abstract JSONObject getLocalJSONFromContent(); + + public abstract int getSyncAction(Cursor c); + + public void setGid(String gid) { + this.mGid = gid; + } + + public void setName(String name) { + this.mName = name; + } + + public void setLastModified(long lastModified) { + this.mLastModified = lastModified; + } + + public void setDeleted(boolean deleted) { + this.mDeleted = deleted; + } + + public String getGid() { + return this.mGid; + } + + public String getName() { + return this.mName; + } + + public long getLastModified() { + return this.mLastModified; + } + + public boolean getDeleted() { + return this.mDeleted; + } + +} diff --git a/src/app/src/main/java/net/micode/notes/gtask/data/SqlData.java b/src/app/src/main/java/net/micode/notes/gtask/data/SqlData.java new file mode 100644 index 0000000..ff9ab81 --- /dev/null +++ b/src/app/src/main/java/net/micode/notes/gtask/data/SqlData.java @@ -0,0 +1,218 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * Description:用于支持小米便签最底层的数据库相关操作,和sqlnote的关系上是子集关系,即data是note的子集(节点)。 + * SqlData其实就是也就是所谓数据中的数据 + */ +package net.micode.notes.gtask.data; + +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.net.Uri; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.DataConstants; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.data.NotesDatabaseHelper.TABLE; +import net.micode.notes.gtask.exception.ActionFailureException; + +import org.json.JSONException; +import org.json.JSONObject; + + +public class SqlData { + /* + * 功能描述:得到类的简写名称存入字符串TAG中 + * 实现过程:调用getSimpleName ()函数 + */ + private static final String TAG = SqlData.class.getSimpleName(); + + private static final int INVALID_ID = -99999; + /* + * 来自Notes类中定义的DataColumn中的一些常量 + */ + // 集合了interface DataColumns中所有SF常量 + public static final String[] PROJECTION_DATA = new String[] { + DataColumns.ID, DataColumns.MIME_TYPE, DataColumns.CONTENT, DataColumns.DATA1, + DataColumns.DATA3 + }; +/* + * 以下五个变量作为sql表中5列的编号 + */ + public static final int DATA_ID_COLUMN = 0; + + public static final int DATA_MIME_TYPE_COLUMN = 1; + + public static final int DATA_CONTENT_COLUMN = 2; + + public static final int DATA_CONTENT_DATA_1_COLUMN = 3; + + public static final int DATA_CONTENT_DATA_3_COLUMN = 4; + + private ContentResolver mContentResolver; + //判断是否直接用Content生成,是为true,否则为false + private boolean mIsCreate; + + private long mDataId; + + private String mDataMimeType; + + private String mDataContent; + + private long mDataContentData1; + + private String mDataContentData3; + + private ContentValues mDiffDataValues; + /* + * 功能描述:构造函数,用于初始化数据 + * 参数注解:mContentResolver用于获取ContentProvider提供的数据 + * 参数注解: mIsCreate表征当前数据是用哪种方式创建(两种构造函数的参数不同) + */ + public SqlData(Context context) { + mContentResolver = context.getContentResolver(); + mIsCreate = true; + mDataId = INVALID_ID; + mDataMimeType = DataConstants.NOTE; + mDataContent = ""; + mDataContentData1 = 0; + mDataContentData3 = ""; + mDiffDataValues = new ContentValues(); + } + + public SqlData(Context context, Cursor c) { + mContentResolver = context.getContentResolver(); + mIsCreate = false; + loadFromCursor(c); + mDiffDataValues = new ContentValues(); + } + /* + * 功能描述:从光标处加载数据 + * 从当前的光标处将五列的数据加载到该类的对象 + */ + private void loadFromCursor(Cursor c) { + mDataId = c.getLong(DATA_ID_COLUMN); + mDataMimeType = c.getString(DATA_MIME_TYPE_COLUMN); + mDataContent = c.getString(DATA_CONTENT_COLUMN); + mDataContentData1 = c.getLong(DATA_CONTENT_DATA_1_COLUMN); + mDataContentData3 = c.getString(DATA_CONTENT_DATA_3_COLUMN); + } + /* + * 功能描述:设置用于共享的数据,并提供异常抛出与处理机制 + */ + public void setContent(JSONObject js) throws JSONException { + //如果传入的JSONObject对象中有DataColumns.ID这一项,则设置,否则设为INVALID_ID + long dataId = js.has(DataColumns.ID) ? js.getLong(DataColumns.ID) : INVALID_ID; + if (mIsCreate || mDataId != dataId) { + mDiffDataValues.put(DataColumns.ID, dataId); + } + mDataId = dataId; + + String dataMimeType = js.has(DataColumns.MIME_TYPE) ? js.getString(DataColumns.MIME_TYPE) + : DataConstants.NOTE; + if (mIsCreate || !mDataMimeType.equals(dataMimeType)) { + mDiffDataValues.put(DataColumns.MIME_TYPE, dataMimeType); + } + mDataMimeType = dataMimeType; + + String dataContent = js.has(DataColumns.CONTENT) ? js.getString(DataColumns.CONTENT) : ""; + if (mIsCreate || !mDataContent.equals(dataContent)) { + mDiffDataValues.put(DataColumns.CONTENT, dataContent); + } + mDataContent = dataContent; + + long dataContentData1 = js.has(DataColumns.DATA1) ? js.getLong(DataColumns.DATA1) : 0; + if (mIsCreate || mDataContentData1 != dataContentData1) { + mDiffDataValues.put(DataColumns.DATA1, dataContentData1); + } + mDataContentData1 = dataContentData1; + + String dataContentData3 = js.has(DataColumns.DATA3) ? js.getString(DataColumns.DATA3) : ""; + if (mIsCreate || !mDataContentData3.equals(dataContentData3)) { + mDiffDataValues.put(DataColumns.DATA3, dataContentData3); + } + mDataContentData3 = dataContentData3; + } + /* + * 功能描述:获取共享的数据内容,并提供异常抛出与处理机制 + */ + public JSONObject getContent() throws JSONException { + if (mIsCreate) { + Log.e(TAG, "it seems that we haven't created this in database yet"); + return null; + //创建JSONObject对象。并将相关数据放入其中,并返回。 + } + JSONObject js = new JSONObject(); + js.put(DataColumns.ID, mDataId); + js.put(DataColumns.MIME_TYPE, mDataMimeType); + js.put(DataColumns.CONTENT, mDataContent); + js.put(DataColumns.DATA1, mDataContentData1); + js.put(DataColumns.DATA3, mDataContentData3); + return js; + } + /* + * 功能描述:commit函数用于把当前造作所做的修改保存到数据库 + */ + public void commit(long noteId, boolean validateVersion, long version) { + + if (mIsCreate) { + if (mDataId == INVALID_ID && mDiffDataValues.containsKey(DataColumns.ID)) { + mDiffDataValues.remove(DataColumns.ID); + } + + mDiffDataValues.put(DataColumns.NOTE_ID, noteId); + Uri uri = mContentResolver.insert(Notes.CONTENT_DATA_URI, mDiffDataValues); + try { + mDataId = Long.valueOf(uri.getPathSegments().get(1)); + } catch (NumberFormatException e) { + Log.e(TAG, "Get note id error :" + e.toString()); + throw new ActionFailureException("create note failed"); + } + } else { + if (mDiffDataValues.size() > 0) { + int result = 0; + if (!validateVersion) { + result = mContentResolver.update(ContentUris.withAppendedId( + Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, null, null); + } else { + result = mContentResolver.update(ContentUris.withAppendedId( + Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, + " ? in (SELECT " + NoteColumns.ID + " FROM " + TABLE.NOTE + + " WHERE " + NoteColumns.VERSION + "=?)", new String[] { + String.valueOf(noteId), String.valueOf(version) + }); + } + if (result == 0) { + Log.w(TAG, "there is no update. maybe user updates note when syncing"); + } + } + } + + mDiffDataValues.clear(); + mIsCreate = false; + } + /* + * 功能描述:获取当前id + */ + public long getId() { + return mDataId; + } +} diff --git a/src/app/src/main/java/net/micode/notes/gtask/data/SqlNote.java b/src/app/src/main/java/net/micode/notes/gtask/data/SqlNote.java new file mode 100644 index 0000000..6e3e842 --- /dev/null +++ b/src/app/src/main/java/net/micode/notes/gtask/data/SqlNote.java @@ -0,0 +1,566 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.data; + +import android.appwidget.AppWidgetManager; +import android.content.ContentResolver; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.net.Uri; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.exception.ActionFailureException; +import net.micode.notes.tool.GTaskStringUtils; +import net.micode.notes.tool.ResourceParser; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.ArrayList; + + +public class SqlNote { + /* + * 功能描述:得到类的简写名称存入字符串TAG中 + * 实现过程:调用getSimpleName ()函数 + */ + private static final String TAG = SqlNote.class.getSimpleName(); + + private static final int INVALID_ID = -99999; + // 集合了interface NoteColumns中所有SF常量(17个) + public static final String[] PROJECTION_NOTE = new String[] { + NoteColumns.ID, NoteColumns.ALERTED_DATE, NoteColumns.BG_COLOR_ID, + NoteColumns.CREATED_DATE, NoteColumns.HAS_ATTACHMENT, NoteColumns.MODIFIED_DATE, + NoteColumns.NOTES_COUNT, NoteColumns.PARENT_ID, NoteColumns.SNIPPET, NoteColumns.TYPE, + NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE, NoteColumns.SYNC_ID, + NoteColumns.LOCAL_MODIFIED, NoteColumns.ORIGIN_PARENT_ID, NoteColumns.GTASK_ID, + NoteColumns.VERSION + }; + + public static final int ID_COLUMN = 0; + + public static final int ALERTED_DATE_COLUMN = 1; + + public static final int BG_COLOR_ID_COLUMN = 2; + + public static final int CREATED_DATE_COLUMN = 3; + + public static final int HAS_ATTACHMENT_COLUMN = 4; + + public static final int MODIFIED_DATE_COLUMN = 5; + + public static final int NOTES_COUNT_COLUMN = 6; + + public static final int PARENT_ID_COLUMN = 7; + + public static final int SNIPPET_COLUMN = 8; + + public static final int TYPE_COLUMN = 9; + + public static final int WIDGET_ID_COLUMN = 10; + + public static final int WIDGET_TYPE_COLUMN = 11; + + public static final int SYNC_ID_COLUMN = 12; + + public static final int LOCAL_MODIFIED_COLUMN = 13; + + public static final int ORIGIN_PARENT_ID_COLUMN = 14; + + public static final int GTASK_ID_COLUMN = 15; + + public static final int VERSION_COLUMN = 16; + //一下定义了17个内部的变量,其中12个可以由content中获得,5个需要初始化为0或者new + private Context mContext; + + private ContentResolver mContentResolver; + + private boolean mIsCreate; + + private long mId; + + private long mAlertDate; + + private int mBgColorId; + + private long mCreatedDate; + + private int mHasAttachment; + + private long mModifiedDate; + + private long mParentId; + + private String mSnippet; + + private int mType; + + private int mWidgetId; + + private int mWidgetType; + + private long mOriginParent; + + private long mVersion; + + private ContentValues mDiffNoteValues; + + private ArrayList mDataList; + + + /* + * 功能描述:构造函数 + * 参数注解: mIsCreate用于标示构造方式 + */ + //构造函数只有context,对所有的变量进行初始化 + public SqlNote(Context context) { + mContext = context; + mContentResolver = context.getContentResolver(); + mIsCreate = true; + mId = INVALID_ID; + mAlertDate = 0; + mBgColorId = ResourceParser.getDefaultBgId(context); + mCreatedDate = System.currentTimeMillis();//调用系统函数获得创建时间 + mHasAttachment = 0; + mModifiedDate = System.currentTimeMillis();//最后一次修改时间初始化为创建时间 + mParentId = 0; + mSnippet = ""; + mType = Notes.TYPE_NOTE; + mWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; + mWidgetType = Notes.TYPE_WIDGET_INVALIDE; + mOriginParent = 0; + mVersion = 0; + mDiffNoteValues = new ContentValues(); + mDataList = new ArrayList(); + } + /* + * 功能描述:构造函数 + * 参数注解: mIsCreate用于标示构造方式 + */ + //构造函数有context和一个数据库的cursor,多数变量通过cursor指向的一条记录直接进行初始化 + public SqlNote(Context context, Cursor c) { + mContext = context; + mContentResolver = context.getContentResolver(); + mIsCreate = false; + loadFromCursor(c); + mDataList = new ArrayList(); + if (mType == Notes.TYPE_NOTE) + loadDataContent(); + mDiffNoteValues = new ContentValues(); + } + /* + * 功能描述:构造函数 + * 参数注解: mIsCreate用于标示构造方式 + */ + public SqlNote(Context context, long id) { + mContext = context; + mContentResolver = context.getContentResolver(); + mIsCreate = false; + loadFromCursor(id); + mDataList = new ArrayList(); + if (mType == Notes.TYPE_NOTE) + loadDataContent(); + mDiffNoteValues = new ContentValues(); + + } +/* + * 功能描述:通过id从光标处加载数据 +*/ + private void loadFromCursor(long id) { + Cursor c = null; + try { + c = mContentResolver.query(Notes.CONTENT_NOTE_URI, PROJECTION_NOTE, "(_id=?)", + new String[] { + String.valueOf(id) + }, null);//通过id获得对应的ContentResolver中的cursor + if (c != null) { + c.moveToNext(); + loadFromCursor(c);//然后加载数据进行初始化,这样函数 + + //SqlNote(Context context, long id)与SqlNote(Context context, long id)的实现方式基本相同 + } else { + Log.w(TAG, "loadFromCursor: cursor = null"); + } + } finally { + if (c != null) + c.close(); + } + } + /* + * 功能描述:通过游标从光标处加载数据 + */ + + private void loadFromCursor(Cursor c) { + //直接从一条记录中的获得以下变量的初始值 + mId = c.getLong(ID_COLUMN); + mAlertDate = c.getLong(ALERTED_DATE_COLUMN); + mBgColorId = c.getInt(BG_COLOR_ID_COLUMN); + mCreatedDate = c.getLong(CREATED_DATE_COLUMN); + mHasAttachment = c.getInt(HAS_ATTACHMENT_COLUMN); + mModifiedDate = c.getLong(MODIFIED_DATE_COLUMN); + mParentId = c.getLong(PARENT_ID_COLUMN); + mSnippet = c.getString(SNIPPET_COLUMN); + mType = c.getInt(TYPE_COLUMN); + mWidgetId = c.getInt(WIDGET_ID_COLUMN); + mWidgetType = c.getInt(WIDGET_TYPE_COLUMN); + mVersion = c.getLong(VERSION_COLUMN); + } + /* + * 功能描述:通过content机制获取共享数据并加载到数据库当前游标处 + */ + private void loadDataContent() { + Cursor c = null; + mDataList.clear(); + try { + c = mContentResolver.query(Notes.CONTENT_DATA_URI, SqlData.PROJECTION_DATA, + "(note_id=?)", new String[] { + String.valueOf(mId) + }, null); + if (c != null) { + if (c.getCount() == 0) { + Log.w(TAG, "it seems that the note has not data"); + return; + } + while (c.moveToNext()) { + SqlData data = new SqlData(mContext, c); + mDataList.add(data); + } + } else { + Log.w(TAG, "loadDataContent: cursor = null"); + } + } finally { + if (c != null) + c.close(); + } + } + /* + * 功能描述:设置通过content机制用于共享的数据信息 + + */ + public boolean setContent(JSONObject js) { + try { + JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_SYSTEM) { + Log.w(TAG, "cannot set system folder"); + } else if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_FOLDER) { + // for folder we can only update the snnipet and type + String snippet = note.has(NoteColumns.SNIPPET) ? note + .getString(NoteColumns.SNIPPET) : ""; + if (mIsCreate || !mSnippet.equals(snippet)) { + mDiffNoteValues.put(NoteColumns.SNIPPET, snippet); + } + mSnippet = snippet; + + int type = note.has(NoteColumns.TYPE) ? note.getInt(NoteColumns.TYPE) + : Notes.TYPE_NOTE; + if (mIsCreate || mType != type) { + mDiffNoteValues.put(NoteColumns.TYPE, type); + } + mType = type; + } else if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_NOTE) { + JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA); + long id = note.has(NoteColumns.ID) ? note.getLong(NoteColumns.ID) : INVALID_ID; + if (mIsCreate || mId != id) { + mDiffNoteValues.put(NoteColumns.ID, id); + } + mId = id; + + long alertDate = note.has(NoteColumns.ALERTED_DATE) ? note + .getLong(NoteColumns.ALERTED_DATE) : 0; + if (mIsCreate || mAlertDate != alertDate) { + mDiffNoteValues.put(NoteColumns.ALERTED_DATE, alertDate); + } + mAlertDate = alertDate; + + int bgColorId = note.has(NoteColumns.BG_COLOR_ID) ? note + .getInt(NoteColumns.BG_COLOR_ID) : ResourceParser.getDefaultBgId(mContext); + if (mIsCreate || mBgColorId != bgColorId) { + mDiffNoteValues.put(NoteColumns.BG_COLOR_ID, bgColorId); + } + mBgColorId = bgColorId; + + long createDate = note.has(NoteColumns.CREATED_DATE) ? note + .getLong(NoteColumns.CREATED_DATE) : System.currentTimeMillis(); + if (mIsCreate || mCreatedDate != createDate) { + mDiffNoteValues.put(NoteColumns.CREATED_DATE, createDate); + } + mCreatedDate = createDate; + + int hasAttachment = note.has(NoteColumns.HAS_ATTACHMENT) ? note + .getInt(NoteColumns.HAS_ATTACHMENT) : 0; + if (mIsCreate || mHasAttachment != hasAttachment) { + mDiffNoteValues.put(NoteColumns.HAS_ATTACHMENT, hasAttachment); + } + mHasAttachment = hasAttachment; + + long modifiedDate = note.has(NoteColumns.MODIFIED_DATE) ? note + .getLong(NoteColumns.MODIFIED_DATE) : System.currentTimeMillis(); + if (mIsCreate || mModifiedDate != modifiedDate) { + mDiffNoteValues.put(NoteColumns.MODIFIED_DATE, modifiedDate); + } + mModifiedDate = modifiedDate; + + long parentId = note.has(NoteColumns.PARENT_ID) ? note + .getLong(NoteColumns.PARENT_ID) : 0; + if (mIsCreate || mParentId != parentId) { + mDiffNoteValues.put(NoteColumns.PARENT_ID, parentId); + } + mParentId = parentId; + + String snippet = note.has(NoteColumns.SNIPPET) ? note + .getString(NoteColumns.SNIPPET) : ""; + if (mIsCreate || !mSnippet.equals(snippet)) { + mDiffNoteValues.put(NoteColumns.SNIPPET, snippet); + } + mSnippet = snippet; + + int type = note.has(NoteColumns.TYPE) ? note.getInt(NoteColumns.TYPE) + : Notes.TYPE_NOTE; + if (mIsCreate || mType != type) { + mDiffNoteValues.put(NoteColumns.TYPE, type); + } + mType = type; + + int widgetId = note.has(NoteColumns.WIDGET_ID) ? note.getInt(NoteColumns.WIDGET_ID) + : AppWidgetManager.INVALID_APPWIDGET_ID; + if (mIsCreate || mWidgetId != widgetId) { + mDiffNoteValues.put(NoteColumns.WIDGET_ID, widgetId); + } + mWidgetId = widgetId; + + int widgetType = note.has(NoteColumns.WIDGET_TYPE) ? note + .getInt(NoteColumns.WIDGET_TYPE) : Notes.TYPE_WIDGET_INVALIDE; + if (mIsCreate || mWidgetType != widgetType) { + mDiffNoteValues.put(NoteColumns.WIDGET_TYPE, widgetType); + } + mWidgetType = widgetType; + + long originParent = note.has(NoteColumns.ORIGIN_PARENT_ID) ? note + .getLong(NoteColumns.ORIGIN_PARENT_ID) : 0; + if (mIsCreate || mOriginParent != originParent) { + mDiffNoteValues.put(NoteColumns.ORIGIN_PARENT_ID, originParent); + } + mOriginParent = originParent; + + for (int i = 0; i < dataArray.length(); i++) { + JSONObject data = dataArray.getJSONObject(i); + SqlData sqlData = null; + if (data.has(DataColumns.ID)) { + long dataId = data.getLong(DataColumns.ID); + for (SqlData temp : mDataList) { + if (dataId == temp.getId()) { + sqlData = temp; + } + } + } + + if (sqlData == null) { + sqlData = new SqlData(mContext); + mDataList.add(sqlData); + } + + sqlData.setContent(data); + } + } + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + return false; + } + return true; + } + /* + * 功能描述:获取content机制提供的数据并加载到note中 + */ + public JSONObject getContent() { + try { + JSONObject js = new JSONObject(); + + if (mIsCreate) { + Log.e(TAG, "it seems that we haven't created this in database yet"); + return null; + } + + JSONObject note = new JSONObject(); + if (mType == Notes.TYPE_NOTE) { + //类型为note时 + note.put(NoteColumns.ID, mId); + note.put(NoteColumns.ALERTED_DATE, mAlertDate); + note.put(NoteColumns.BG_COLOR_ID, mBgColorId); + note.put(NoteColumns.CREATED_DATE, mCreatedDate); + note.put(NoteColumns.HAS_ATTACHMENT, mHasAttachment); + note.put(NoteColumns.MODIFIED_DATE, mModifiedDate); + note.put(NoteColumns.PARENT_ID, mParentId); + note.put(NoteColumns.SNIPPET, mSnippet); + note.put(NoteColumns.TYPE, mType); + note.put(NoteColumns.WIDGET_ID, mWidgetId); + note.put(NoteColumns.WIDGET_TYPE, mWidgetType); + note.put(NoteColumns.ORIGIN_PARENT_ID, mOriginParent); + js.put(GTaskStringUtils.META_HEAD_NOTE, note); + + JSONArray dataArray = new JSONArray(); + for (SqlData sqlData : mDataList) { + JSONObject data = sqlData.getContent(); + if (data != null) { + dataArray.put(data); + } + } + js.put(GTaskStringUtils.META_HEAD_DATA, dataArray); + } else if (mType == Notes.TYPE_FOLDER || mType == Notes.TYPE_SYSTEM) { + note.put(NoteColumns.ID, mId); + note.put(NoteColumns.TYPE, mType); + note.put(NoteColumns.SNIPPET, mSnippet); + js.put(GTaskStringUtils.META_HEAD_NOTE, note); + } + + return js; + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + } + return null; + } +/* + * 功能描述:给当前id设置父id + */ + public void setParentId(long id) { + mParentId = id; + mDiffNoteValues.put(NoteColumns.PARENT_ID, id); + } + + /* + * 功能描述:给当前id设置Gtaskid + */ + public void setGtaskId(String gid) { + mDiffNoteValues.put(NoteColumns.GTASK_ID, gid); + } + + /* + * 功能描述:给当前id设置同步id + + */ + public void setSyncId(long syncId) { + mDiffNoteValues.put(NoteColumns.SYNC_ID, syncId); + } + + /* + * 功能描述:初始化本地修改,即撤销所有当前修改 + */ + public void resetLocalModified() { + mDiffNoteValues.put(NoteColumns.LOCAL_MODIFIED, 0); + } + + /* + * 功能描述:获得当前id + */ + public long getId() { + return mId; + } + + /* + * 功能描述:获得当前id的父id + */ + public long getParentId() { + return mParentId; + } + + /* + * 功能描述:获取小片段即用于显示的部分便签内容 + */ + public String getSnippet() { + return mSnippet; + } + /* + * 功能描述:判断是否为便签类型 + */ + public boolean isNoteType() { + return mType == Notes.TYPE_NOTE; + } + + /* + * 功能描述:commit函数用于把当前造作所做的修改保存到数据库 + */ + public void commit(boolean validateVersion) { + if (mIsCreate) { + if (mId == INVALID_ID && mDiffNoteValues.containsKey(NoteColumns.ID)) { + mDiffNoteValues.remove(NoteColumns.ID); + } + + Uri uri = mContentResolver.insert(Notes.CONTENT_NOTE_URI, mDiffNoteValues); + try { + mId = Long.valueOf(uri.getPathSegments().get(1)); + } catch (NumberFormatException e) { + Log.e(TAG, "Get note id error :" + e.toString()); + throw new ActionFailureException("create note failed"); + } + if (mId == 0) { + throw new IllegalStateException("Create thread id failed"); + } + + if (mType == Notes.TYPE_NOTE) { + for (SqlData sqlData : mDataList) { + //直接使用sqldata中的实现 + sqlData.commit(mId, false, -1); + } + } + } else { + if (mId <= 0 && mId != Notes.ID_ROOT_FOLDER && mId != Notes.ID_CALL_RECORD_FOLDER) { + Log.e(TAG, "No such note"); + throw new IllegalStateException("Try to update note with invalid id"); + } + if (mDiffNoteValues.size() > 0) { + mVersion ++; + int result = 0; + if (!validateVersion) { + //构造字符串 + result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "(" + + NoteColumns.ID + "=?)", new String[] { + String.valueOf(mId) + }); + } else { + result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "(" + + NoteColumns.ID + "=?) AND (" + NoteColumns.VERSION + "<=?)", + new String[] { + String.valueOf(mId), String.valueOf(mVersion) + }); + } + if (result == 0) { + Log.w(TAG, "there is no update. maybe user updates note when syncing"); + } + } + + if (mType == Notes.TYPE_NOTE) { + for (SqlData sqlData : mDataList) { + sqlData.commit(mId, validateVersion, mVersion); + } + } + } + + // refresh local info + loadFromCursor(mId); + if (mType == Notes.TYPE_NOTE) + loadDataContent(); + + mDiffNoteValues.clear(); + mIsCreate = false; + } +} diff --git a/src/app/src/main/java/net/micode/notes/gtask/data/Task.java b/src/app/src/main/java/net/micode/notes/gtask/data/Task.java new file mode 100644 index 0000000..72068a0 --- /dev/null +++ b/src/app/src/main/java/net/micode/notes/gtask/data/Task.java @@ -0,0 +1,351 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.data; + +import android.database.Cursor; +import android.text.TextUtils; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.DataConstants; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.exception.ActionFailureException; +import net.micode.notes.tool.GTaskStringUtils; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + + +public class Task extends Node { + private static final String TAG = Task.class.getSimpleName(); + + private boolean mCompleted;//是否完成 + + private String mNotes; + + private JSONObject mMetaInfo;//将在实例中存储数据的类型 + + private Task mPriorSibling;//对应的优先兄弟Task的指针(待完善) + + private TaskList mParent;//所在的任务列表的指针 + + public Task() { + super(); + mCompleted = false; + mNotes = null; + mPriorSibling = null;//TaskList中当前Task前面的Task的指针 + mParent = null;//当前Task所在的TaskList + mMetaInfo = null; + } + + public JSONObject getCreateAction(int actionId) { + JSONObject js = new JSONObject(); + + try { + // action_type + js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, + GTaskStringUtils.GTASK_JSON_ACTION_TYPE_CREATE); + + // action_id + js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); + + // index + js.put(GTaskStringUtils.GTASK_JSON_INDEX, mParent.getChildTaskIndex(this)); + + // entity_delta + JSONObject entity = new JSONObject(); + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); + entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null"); + entity.put(GTaskStringUtils.GTASK_JSON_ENTITY_TYPE, + GTaskStringUtils.GTASK_JSON_TYPE_TASK); + if (getNotes() != null) { + entity.put(GTaskStringUtils.GTASK_JSON_NOTES, getNotes()); + } + js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); + + // parent_id + js.put(GTaskStringUtils.GTASK_JSON_PARENT_ID, mParent.getGid()); + + // dest_parent_type + js.put(GTaskStringUtils.GTASK_JSON_DEST_PARENT_TYPE, + GTaskStringUtils.GTASK_JSON_TYPE_GROUP); + + // list_id + js.put(GTaskStringUtils.GTASK_JSON_LIST_ID, mParent.getGid()); + + // prior_sibling_id + if (mPriorSibling != null) { + js.put(GTaskStringUtils.GTASK_JSON_PRIOR_SIBLING_ID, mPriorSibling.getGid()); + } + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to generate task-create jsonobject"); + } + + return js; + } + + public JSONObject getUpdateAction(int actionId) { + JSONObject js = new JSONObject(); + + try { + // action_type + js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, + GTaskStringUtils.GTASK_JSON_ACTION_TYPE_UPDATE); + + // action_id + js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); + + // id + js.put(GTaskStringUtils.GTASK_JSON_ID, getGid()); + + // entity_delta + JSONObject entity = new JSONObject(); + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); + if (getNotes() != null) { + entity.put(GTaskStringUtils.GTASK_JSON_NOTES, getNotes()); + } + entity.put(GTaskStringUtils.GTASK_JSON_DELETED, getDeleted()); + js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to generate task-update jsonobject"); + } + + return js; + } + + public void setContentByRemoteJSON(JSONObject js) { + if (js != null) { + try { + // id + if (js.has(GTaskStringUtils.GTASK_JSON_ID)) { + setGid(js.getString(GTaskStringUtils.GTASK_JSON_ID)); + } + + // last_modified + if (js.has(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)) { + setLastModified(js.getLong(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)); + } + + // name + if (js.has(GTaskStringUtils.GTASK_JSON_NAME)) { + setName(js.getString(GTaskStringUtils.GTASK_JSON_NAME)); + } + + // notes + if (js.has(GTaskStringUtils.GTASK_JSON_NOTES)) { + setNotes(js.getString(GTaskStringUtils.GTASK_JSON_NOTES)); + } + + // deleted + if (js.has(GTaskStringUtils.GTASK_JSON_DELETED)) { + setDeleted(js.getBoolean(GTaskStringUtils.GTASK_JSON_DELETED)); + } + + // completed + if (js.has(GTaskStringUtils.GTASK_JSON_COMPLETED)) { + setCompleted(js.getBoolean(GTaskStringUtils.GTASK_JSON_COMPLETED)); + } + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to get task content from jsonobject"); + } + } + } + + public void setContentByLocalJSON(JSONObject js) { + if (js == null || !js.has(GTaskStringUtils.META_HEAD_NOTE) + || !js.has(GTaskStringUtils.META_HEAD_DATA)) { + Log.w(TAG, "setContentByLocalJSON: nothing is avaiable"); + } + + try { + JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA); + + if (note.getInt(NoteColumns.TYPE) != Notes.TYPE_NOTE) { + Log.e(TAG, "invalid type"); + return; + } + + for (int i = 0; i < dataArray.length(); i++) { + JSONObject data = dataArray.getJSONObject(i); + if (TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) { + setName(data.getString(DataColumns.CONTENT)); + break; + } + } + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + } + } + + public JSONObject getLocalJSONFromContent() { + String name = getName(); + try { + if (mMetaInfo == null) { + // new task created from web + if (name == null) { + Log.w(TAG, "the note seems to be an empty one"); + return null; + } + + JSONObject js = new JSONObject(); + JSONObject note = new JSONObject(); + JSONArray dataArray = new JSONArray(); + JSONObject data = new JSONObject(); + data.put(DataColumns.CONTENT, name); + dataArray.put(data); + js.put(GTaskStringUtils.META_HEAD_DATA, dataArray); + note.put(NoteColumns.TYPE, Notes.TYPE_NOTE); + js.put(GTaskStringUtils.META_HEAD_NOTE, note); + return js; + } else { + // synced task + JSONObject note = mMetaInfo.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + JSONArray dataArray = mMetaInfo.getJSONArray(GTaskStringUtils.META_HEAD_DATA); + + for (int i = 0; i < dataArray.length(); i++) { + JSONObject data = dataArray.getJSONObject(i); + if (TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) { + data.put(DataColumns.CONTENT, getName()); + break; + } + } + + note.put(NoteColumns.TYPE, Notes.TYPE_NOTE); + return mMetaInfo; + } + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + return null; + } + } + + public void setMetaInfo(MetaData metaData) { + if (metaData != null && metaData.getNotes() != null) { + try { + mMetaInfo = new JSONObject(metaData.getNotes()); + } catch (JSONException e) { + Log.w(TAG, e.toString()); + mMetaInfo = null; + } + } + } + + public int getSyncAction(Cursor c) { + try { + JSONObject noteInfo = null; + if (mMetaInfo != null && mMetaInfo.has(GTaskStringUtils.META_HEAD_NOTE)) { + noteInfo = mMetaInfo.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + } + + if (noteInfo == null) { + Log.w(TAG, "it seems that note meta has been deleted"); + return SYNC_ACTION_UPDATE_REMOTE; + } + + if (!noteInfo.has(NoteColumns.ID)) { + Log.w(TAG, "remote note id seems to be deleted"); + return SYNC_ACTION_UPDATE_LOCAL; + } + + // validate the note id now + if (c.getLong(SqlNote.ID_COLUMN) != noteInfo.getLong(NoteColumns.ID)) { + Log.w(TAG, "note id doesn't match"); + return SYNC_ACTION_UPDATE_LOCAL; + } + + if (c.getInt(SqlNote.LOCAL_MODIFIED_COLUMN) == 0) { + // there is no local update + if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { + // no update both side + return SYNC_ACTION_NONE; + } else { + // apply remote to local + return SYNC_ACTION_UPDATE_LOCAL; + } + } else { + // validate gtask id + if (!c.getString(SqlNote.GTASK_ID_COLUMN).equals(getGid())) { + Log.e(TAG, "gtask id doesn't match"); + return SYNC_ACTION_ERROR; + } + if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { + // local modification only + return SYNC_ACTION_UPDATE_REMOTE; + } else { + return SYNC_ACTION_UPDATE_CONFLICT; + } + } + } catch (Exception e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + } + + return SYNC_ACTION_ERROR; + } + + public boolean isWorthSaving() { + return mMetaInfo != null || (getName() != null && getName().trim().length() > 0) + || (getNotes() != null && getNotes().trim().length() > 0); + } + + public void setCompleted(boolean completed) { + this.mCompleted = completed; + } + + public void setNotes(String notes) { + this.mNotes = notes; + } + + public void setPriorSibling(Task priorSibling) { + this.mPriorSibling = priorSibling; + } + + public void setParent(TaskList parent) { + this.mParent = parent; + } + + public boolean getCompleted() { + return this.mCompleted; + } + + public String getNotes() { + return this.mNotes; + } + + public Task getPriorSibling() { + return this.mPriorSibling; + } + + public TaskList getParent() { + return this.mParent; + } + +} diff --git a/src/app/src/main/java/net/micode/notes/gtask/data/TaskList.java b/src/app/src/main/java/net/micode/notes/gtask/data/TaskList.java new file mode 100644 index 0000000..37dad1c --- /dev/null +++ b/src/app/src/main/java/net/micode/notes/gtask/data/TaskList.java @@ -0,0 +1,401 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.data; + +import android.database.Cursor; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.exception.ActionFailureException; +import net.micode.notes.tool.GTaskStringUtils; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.ArrayList; + + +public class TaskList extends Node { + private static final String TAG = TaskList.class.getSimpleName();//tag标记 + + private int mIndex;//当前TaskList的指针 + + private ArrayList mChildren;//类中主要的保存数据的单元,用来实现一个以Task为元素的ArrayList + + public TaskList() { + super(); + mChildren = new ArrayList(); + mIndex = 1; + } + /* (non-Javadoc) + * @see net.micode.notes.gtask.data.Node#getCreateAction(int) + * 生成并返回一个包含了一定数据的JSONObject实体 + */ + public JSONObject getCreateAction(int actionId) { + JSONObject js = new JSONObject(); + + try { + // action_type + js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, + GTaskStringUtils.GTASK_JSON_ACTION_TYPE_CREATE); + + // action_id + js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); + + // index + js.put(GTaskStringUtils.GTASK_JSON_INDEX, mIndex); + + // entity_delta + JSONObject entity = new JSONObject(); + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); + entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null"); + entity.put(GTaskStringUtils.GTASK_JSON_ENTITY_TYPE, + GTaskStringUtils.GTASK_JSON_TYPE_GROUP); + js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to generate tasklist-create jsonobject"); + } + + return js; + } + + + /* (non-Javadoc) + * @see net.micode.notes.gtask.data.Node#getUpdateAction(int) + * 生成并返回一个包含了一定数据的JSONObject实体 + */ + public JSONObject getUpdateAction(int actionId) { + JSONObject js = new JSONObject(); + + try { + // action_type + js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, + GTaskStringUtils.GTASK_JSON_ACTION_TYPE_UPDATE); + + // action_id + js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); + + // id + js.put(GTaskStringUtils.GTASK_JSON_ID, getGid()); + + // entity_delta + JSONObject entity = new JSONObject(); + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); + entity.put(GTaskStringUtils.GTASK_JSON_DELETED, getDeleted()); + js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to generate tasklist-update jsonobject"); + } + + return js; + } + + public void setContentByRemoteJSON(JSONObject js) { + if (js != null) { + try { + // id + if (js.has(GTaskStringUtils.GTASK_JSON_ID)) { + setGid(js.getString(GTaskStringUtils.GTASK_JSON_ID)); + } + + // last_modified + if (js.has(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)) { + setLastModified(js.getLong(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)); + } + + // name + if (js.has(GTaskStringUtils.GTASK_JSON_NAME)) { + setName(js.getString(GTaskStringUtils.GTASK_JSON_NAME)); + } + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to get tasklist content from jsonobject"); + } + } + } + + public void setContentByLocalJSON(JSONObject js) { + if (js == null || !js.has(GTaskStringUtils.META_HEAD_NOTE)) { + Log.w(TAG, "setContentByLocalJSON: nothing is avaiable"); + } + + try { + JSONObject folder = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + + if (folder.getInt(NoteColumns.TYPE) == Notes.TYPE_FOLDER) { + String name = folder.getString(NoteColumns.SNIPPET); + setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + name); + } else if (folder.getInt(NoteColumns.TYPE) == Notes.TYPE_SYSTEM) { + if (folder.getLong(NoteColumns.ID) == Notes.ID_ROOT_FOLDER) + setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_DEFAULT); + else if (folder.getLong(NoteColumns.ID) == Notes.ID_CALL_RECORD_FOLDER) + setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + + GTaskStringUtils.FOLDER_CALL_NOTE); + else + Log.e(TAG, "invalid system folder"); + } else { + Log.e(TAG, "error type"); + } + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + } + } + + public JSONObject getLocalJSONFromContent() { + try { + JSONObject js = new JSONObject(); + JSONObject folder = new JSONObject(); + + String folderName = getName(); + if (getName().startsWith(GTaskStringUtils.MIUI_FOLDER_PREFFIX)) + folderName = folderName.substring(GTaskStringUtils.MIUI_FOLDER_PREFFIX.length(), + folderName.length()); + folder.put(NoteColumns.SNIPPET, folderName); + if (folderName.equals(GTaskStringUtils.FOLDER_DEFAULT) + || folderName.equals(GTaskStringUtils.FOLDER_CALL_NOTE)) + folder.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + else + folder.put(NoteColumns.TYPE, Notes.TYPE_FOLDER); + + js.put(GTaskStringUtils.META_HEAD_NOTE, folder); + + return js; + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + return null; + } + } + + public int getSyncAction(Cursor c) { + try { + if (c.getInt(SqlNote.LOCAL_MODIFIED_COLUMN) == 0) { + // there is no local update + if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { + // no update both side + return SYNC_ACTION_NONE; + } else { + // apply remote to local + return SYNC_ACTION_UPDATE_LOCAL; + } + } else { + // validate gtask id + if (!c.getString(SqlNote.GTASK_ID_COLUMN).equals(getGid())) { + Log.e(TAG, "gtask id doesn't match"); + return SYNC_ACTION_ERROR; + } + if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { + // local modification only + return SYNC_ACTION_UPDATE_REMOTE; + } else { + // for folder conflicts, just apply local modification + return SYNC_ACTION_UPDATE_REMOTE; + } + } + } catch (Exception e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + } + + return SYNC_ACTION_ERROR; + } + /* + * 功能:获得TaskList的大小,即mChildren的大小 + */ + public int getChildTaskCount() { + return mChildren.size(); + } + /** + * @param task + * @return 返回值为是否成功添加任务。 + * 功能:在当前任务表末尾添加新的任务。 + */ + public boolean addChildTask(Task task) { + boolean ret = false; + if (task != null && !mChildren.contains(task)) { + ret = mChildren.add(task); + if (ret) { + // need to set prior sibling and parent + task.setPriorSibling(mChildren.isEmpty() ? null : mChildren + .get(mChildren.size() - 1)); + task.setParent(this); + //注意:每一次ArrayList的变化都要紧跟相关Task中PriorSibling的更改 + //,接下来几个函数都有相关操作 + + } + } + return ret; + } + /** + * @param task + * @param index + * @return + * 功能:在当前任务表的指定位置添加新的任务。 + */ + public boolean addChildTask(Task task, int index) { + if (index < 0 || index > mChildren.size()) { + Log.e(TAG, "add child task: invalid index"); + return false; + } + + int pos = mChildren.indexOf(task); + if (task != null && pos == -1) { + mChildren.add(index, task); + + // update the task list + Task preTask = null; + Task afterTask = null; + if (index != 0) + preTask = mChildren.get(index - 1); + if (index != mChildren.size() - 1) + afterTask = mChildren.get(index + 1); + + task.setPriorSibling(preTask); + if (afterTask != null) + afterTask.setPriorSibling(task); + } + + return true; + } + /** + * @param task + * @return 返回删除是否成功 + * 功能:删除TaskList中的一个Task + */ + /** + * @param task + * @param index + * @return + * 功能:将当前TaskList中含有的某个Task移到index位置 + */ + public boolean removeChildTask(Task task) { + boolean ret = false; + int index = mChildren.indexOf(task); + if (index != -1) { + ret = mChildren.remove(task); + + if (ret) { + // reset prior sibling and parent + task.setPriorSibling(null); + task.setParent(null); + + // update the task list + if (index != mChildren.size()) { + mChildren.get(index).setPriorSibling( + index == 0 ? null : mChildren.get(index - 1)); + } + } + } + return ret; + } + /** + * @param gid + * @return返回寻找结果 + * 功能:按gid寻找Task + */ + public boolean moveChildTask(Task task, int index) { + + if (index < 0 || index >= mChildren.size()) { + Log.e(TAG, "move child task: invalid index"); + return false; + } + + int pos = mChildren.indexOf(task); + if (pos == -1) { + Log.e(TAG, "move child task: the task should in the list"); + return false; + } + + if (pos == index) + return true; + return (removeChildTask(task) && addChildTask(task, index)); + //利用已实现好的功能完成当下功能; + } + + + /** + * @param task + * @return + * 功能:返回指定Task的index + */ + public Task findChildTaskByGid(String gid) { + for (int i = 0; i < mChildren.size(); i++) { + Task t = mChildren.get(i); + if (t.getGid().equals(gid)) { + return t; + } + } + return null; + } + + + /** + * @param index + * @return + * 功能:返回指定index的Task + */ + public int getChildTaskIndex(Task task) { + return mChildren.indexOf(task); + } + + public Task getChildTaskByIndex(int index) { + if (index < 0 || index >= mChildren.size()) { + Log.e(TAG, "getTaskByIndex: invalid index"); + return null; + } + return mChildren.get(index); + } + + + /** + * @param gid + * @return + * 功能:返回指定gid的Task + */ + public Task getChilTaskByGid(String gid) { + for (Task task : mChildren) {//一种常见的ArrayList的遍历方法(四种,见精读笔记) + + if (task.getGid().equals(gid)) + return task; + } + return null; + } + + + + public ArrayList getChildTaskList() { + return this.mChildren; + } + + public void setIndex(int index) { + this.mIndex = index; + } + + public int getIndex() { + return this.mIndex; + } +} diff --git a/src/net/micode/notes/gtask/exception/ActionFailureException.java b/src/app/src/main/java/net/micode/notes/gtask/exception/ActionFailureException.java similarity index 100% rename from src/net/micode/notes/gtask/exception/ActionFailureException.java rename to src/app/src/main/java/net/micode/notes/gtask/exception/ActionFailureException.java diff --git a/src/net/micode/notes/gtask/exception/NetworkFailureException.java b/src/app/src/main/java/net/micode/notes/gtask/exception/NetworkFailureException.java similarity index 100% rename from src/net/micode/notes/gtask/exception/NetworkFailureException.java rename to src/app/src/main/java/net/micode/notes/gtask/exception/NetworkFailureException.java diff --git a/src/app/src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java b/src/app/src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java new file mode 100644 index 0000000..c5e4176 --- /dev/null +++ b/src/app/src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java @@ -0,0 +1,124 @@ + +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.remote; + +import android.app.Notification; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.os.AsyncTask; + +import net.micode.notes.R; +import net.micode.notes.ui.NotesListActivity; +import net.micode.notes.ui.NotesPreferenceActivity; + + +public class GTaskASyncTask extends AsyncTask { + + private static int GTASK_SYNC_NOTIFICATION_ID = 5234235; + + public interface OnCompleteListener { + void onComplete(); + } + + private Context mContext; + + private NotificationManager mNotifiManager; + + private GTaskManager mTaskManager; + + private OnCompleteListener mOnCompleteListener; + + public GTaskASyncTask(Context context, OnCompleteListener listener) { + mContext = context; + mOnCompleteListener = listener; + mNotifiManager = (NotificationManager) mContext + .getSystemService(Context.NOTIFICATION_SERVICE); + mTaskManager = GTaskManager.getInstance(); + } + + public void cancelSync() { + mTaskManager.cancelSync(); + } + + public void publishProgess(String message) { + publishProgress(new String[] { + message + }); + } + + private void showNotification(int tickerId, String content) { + PendingIntent pendingIntent; + if (tickerId != R.string.ticker_success) { + pendingIntent = PendingIntent.getActivity(mContext, 0, new Intent(mContext, + NotesPreferenceActivity.class), 0); + } else { + pendingIntent = PendingIntent.getActivity(mContext, 0, new Intent(mContext, + NotesListActivity.class), 0); + } + Notification.Builder builder = new Notification.Builder(mContext) + .setAutoCancel(true) + .setContentTitle(mContext.getString(R.string.app_name)) + .setContentText(content) + .setContentIntent(pendingIntent) + .setWhen(System.currentTimeMillis()) + .setOngoing(true); + Notification notification=builder.getNotification(); + mNotifiManager.notify(GTASK_SYNC_NOTIFICATION_ID, notification); + } + + @Override + protected Integer doInBackground(Void... unused) { + publishProgess(mContext.getString(R.string.sync_progress_login, NotesPreferenceActivity + .getSyncAccountName(mContext))); + return mTaskManager.sync(mContext, this); + } + + @Override + protected void onProgressUpdate(String... progress) { + showNotification(R.string.ticker_syncing, progress[0]); + if (mContext instanceof GTaskSyncService) { + ((GTaskSyncService) mContext).sendBroadcast(progress[0]); + } + } + + @Override + protected void onPostExecute(Integer result) { + if (result == GTaskManager.STATE_SUCCESS) { + showNotification(R.string.ticker_success, mContext.getString( + R.string.success_sync_account, mTaskManager.getSyncAccount())); + NotesPreferenceActivity.setLastSyncTime(mContext, System.currentTimeMillis()); + } else if (result == GTaskManager.STATE_NETWORK_ERROR) { + showNotification(R.string.ticker_fail, mContext.getString(R.string.error_sync_network)); + } else if (result == GTaskManager.STATE_INTERNAL_ERROR) { + showNotification(R.string.ticker_fail, mContext.getString(R.string.error_sync_internal)); + } else if (result == GTaskManager.STATE_SYNC_CANCELLED) { + showNotification(R.string.ticker_cancel, mContext + .getString(R.string.error_sync_cancelled)); + } + if (mOnCompleteListener != null) { + new Thread(new Runnable() { + + public void run() { + mOnCompleteListener.onComplete(); + } + }).start(); + } + } +} diff --git a/src/net/micode/notes/gtask/remote/GTaskClient.java b/src/app/src/main/java/net/micode/notes/gtask/remote/GTaskClient.java similarity index 100% rename from src/net/micode/notes/gtask/remote/GTaskClient.java rename to src/app/src/main/java/net/micode/notes/gtask/remote/GTaskClient.java diff --git a/src/net/micode/notes/gtask/remote/GTaskManager.java b/src/app/src/main/java/net/micode/notes/gtask/remote/GTaskManager.java similarity index 100% rename from src/net/micode/notes/gtask/remote/GTaskManager.java rename to src/app/src/main/java/net/micode/notes/gtask/remote/GTaskManager.java diff --git a/src/net/micode/notes/gtask/remote/GTaskSyncService.java b/src/app/src/main/java/net/micode/notes/gtask/remote/GTaskSyncService.java similarity index 100% rename from src/net/micode/notes/gtask/remote/GTaskSyncService.java rename to src/app/src/main/java/net/micode/notes/gtask/remote/GTaskSyncService.java diff --git a/src/net/micode/notes/model/Note.java b/src/app/src/main/java/net/micode/notes/model/Note.java similarity index 100% rename from src/net/micode/notes/model/Note.java rename to src/app/src/main/java/net/micode/notes/model/Note.java diff --git a/src/app/src/main/java/net/micode/notes/model/WorkingNote.java b/src/app/src/main/java/net/micode/notes/model/WorkingNote.java new file mode 100644 index 0000000..a1a2455 --- /dev/null +++ b/src/app/src/main/java/net/micode/notes/model/WorkingNote.java @@ -0,0 +1,368 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.model; + +import android.appwidget.AppWidgetManager; +import android.content.ContentUris; +import android.content.Context; +import android.database.Cursor; +import android.text.TextUtils; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.CallNote; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.DataConstants; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.data.Notes.TextNote; +import net.micode.notes.tool.ResourceParser.NoteBgResources; + + +public class WorkingNote { + // Note for the working note + private Note mNote; + // Note Id + private long mNoteId; + // Note content + public String mContent; + // Note mode + private int mMode; + + private long mAlertDate; + + private long mModifiedDate; + + private int mBgColorId; + + private int mWidgetId; + + private int mWidgetType; + + private long mFolderId; + + private Context mContext; + + private static final String TAG = "WorkingNote"; + + private boolean mIsDeleted; + + private NoteSettingChangedListener mNoteSettingStatusListener; + + public static final String[] DATA_PROJECTION = new String[] { + DataColumns.ID, + DataColumns.CONTENT, + DataColumns.MIME_TYPE, + DataColumns.DATA1, + DataColumns.DATA2, + DataColumns.DATA3, + DataColumns.DATA4, + }; + + public static final String[] NOTE_PROJECTION = new String[] { + NoteColumns.PARENT_ID, + NoteColumns.ALERTED_DATE, + NoteColumns.BG_COLOR_ID, + NoteColumns.WIDGET_ID, + NoteColumns.WIDGET_TYPE, + NoteColumns.MODIFIED_DATE + }; + + private static final int DATA_ID_COLUMN = 0; + + private static final int DATA_CONTENT_COLUMN = 1; + + private static final int DATA_MIME_TYPE_COLUMN = 2; + + private static final int DATA_MODE_COLUMN = 3; + + private static final int NOTE_PARENT_ID_COLUMN = 0; + + private static final int NOTE_ALERTED_DATE_COLUMN = 1; + + private static final int NOTE_BG_COLOR_ID_COLUMN = 2; + + private static final int NOTE_WIDGET_ID_COLUMN = 3; + + private static final int NOTE_WIDGET_TYPE_COLUMN = 4; + + private static final int NOTE_MODIFIED_DATE_COLUMN = 5; + + // New note construct + private WorkingNote(Context context, long folderId) { + mContext = context; + mAlertDate = 0; + mModifiedDate = System.currentTimeMillis(); + mFolderId = folderId; + mNote = new Note(); + mNoteId = 0; + mIsDeleted = false; + mMode = 0; + mWidgetType = Notes.TYPE_WIDGET_INVALIDE; + } + + // Existing note construct + private WorkingNote(Context context, long noteId, long folderId) { + mContext = context; + mNoteId = noteId; + mFolderId = folderId; + mIsDeleted = false; + mNote = new Note(); + loadNote(); + } + + private void loadNote() { + Cursor cursor = mContext.getContentResolver().query( + ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, mNoteId), NOTE_PROJECTION, null, + null, null); + + if (cursor != null) { + if (cursor.moveToFirst()) { + mFolderId = cursor.getLong(NOTE_PARENT_ID_COLUMN); + mBgColorId = cursor.getInt(NOTE_BG_COLOR_ID_COLUMN); + mWidgetId = cursor.getInt(NOTE_WIDGET_ID_COLUMN); + mWidgetType = cursor.getInt(NOTE_WIDGET_TYPE_COLUMN); + mAlertDate = cursor.getLong(NOTE_ALERTED_DATE_COLUMN); + mModifiedDate = cursor.getLong(NOTE_MODIFIED_DATE_COLUMN); + } + cursor.close(); + } else { + Log.e(TAG, "No note with id:" + mNoteId); + throw new IllegalArgumentException("Unable to find note with id " + mNoteId); + } + loadNoteData(); + } + + private void loadNoteData() { + Cursor cursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI, DATA_PROJECTION, + DataColumns.NOTE_ID + "=?", new String[] { + String.valueOf(mNoteId) + }, null); + + if (cursor != null) { + if (cursor.moveToFirst()) { + do { + String type = cursor.getString(DATA_MIME_TYPE_COLUMN); + if (DataConstants.NOTE.equals(type)) { + mContent = cursor.getString(DATA_CONTENT_COLUMN); + mMode = cursor.getInt(DATA_MODE_COLUMN); + mNote.setTextDataId(cursor.getLong(DATA_ID_COLUMN)); + } else if (DataConstants.CALL_NOTE.equals(type)) { + mNote.setCallDataId(cursor.getLong(DATA_ID_COLUMN)); + } else { + Log.d(TAG, "Wrong note type with type:" + type); + } + } while (cursor.moveToNext()); + } + cursor.close(); + } else { + Log.e(TAG, "No data with id:" + mNoteId); + throw new IllegalArgumentException("Unable to find note's data with id " + mNoteId); + } + } + + public static WorkingNote createEmptyNote(Context context, long folderId, int widgetId, + int widgetType, int defaultBgColorId) { + WorkingNote note = new WorkingNote(context, folderId); + note.setBgColorId(defaultBgColorId); + note.setWidgetId(widgetId); + note.setWidgetType(widgetType); + return note; + } + + public static WorkingNote load(Context context, long id) { + return new WorkingNote(context, id, 0); + } + + public synchronized boolean saveNote() { + if (isWorthSaving()) { + if (!existInDatabase()) { + if ((mNoteId = Note.getNewNoteId(mContext, mFolderId)) == 0) { + Log.e(TAG, "Create new note fail with id:" + mNoteId); + return false; + } + } + + mNote.syncNote(mContext, mNoteId); + + /** + * Update widget content if there exist any widget of this note + */ + if (mWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID + && mWidgetType != Notes.TYPE_WIDGET_INVALIDE + && mNoteSettingStatusListener != null) { + mNoteSettingStatusListener.onWidgetChanged(); + } + return true; + } else { + return false; + } + } + + public boolean existInDatabase() { + return mNoteId > 0; + } + + private boolean isWorthSaving() { + if (mIsDeleted || (!existInDatabase() && TextUtils.isEmpty(mContent)) + || (existInDatabase() && !mNote.isLocalModified())) { + return false; + } else { + return true; + } + } + + public void setOnSettingStatusChangedListener(NoteSettingChangedListener l) { + mNoteSettingStatusListener = l; + } + + public void setAlertDate(long date, boolean set) { + if (date != mAlertDate) { + mAlertDate = date; + mNote.setNoteValue(NoteColumns.ALERTED_DATE, String.valueOf(mAlertDate)); + } + if (mNoteSettingStatusListener != null) { + mNoteSettingStatusListener.onClockAlertChanged(date, set); + } + } + + public void markDeleted(boolean mark) { + mIsDeleted = mark; + if (mWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID + && mWidgetType != Notes.TYPE_WIDGET_INVALIDE && mNoteSettingStatusListener != null) { + mNoteSettingStatusListener.onWidgetChanged(); + } + } + + public void setBgColorId(int id) { + if (id != mBgColorId) { + mBgColorId = id; + if (mNoteSettingStatusListener != null) { + mNoteSettingStatusListener.onBackgroundColorChanged(); + } + mNote.setNoteValue(NoteColumns.BG_COLOR_ID, String.valueOf(id)); + } + } + + public void setCheckListMode(int mode) { + if (mMode != mode) { + if (mNoteSettingStatusListener != null) { + mNoteSettingStatusListener.onCheckListModeChanged(mMode, mode); + } + mMode = mode; + mNote.setTextData(TextNote.MODE, String.valueOf(mMode)); + } + } + + public void setWidgetType(int type) { + if (type != mWidgetType) { + mWidgetType = type; + mNote.setNoteValue(NoteColumns.WIDGET_TYPE, String.valueOf(mWidgetType)); + } + } + + public void setWidgetId(int id) { + if (id != mWidgetId) { + mWidgetId = id; + mNote.setNoteValue(NoteColumns.WIDGET_ID, String.valueOf(mWidgetId)); + } + } + + public void setWorkingText(String text) { + if (!TextUtils.equals(mContent, text)) { + mContent = text; + mNote.setTextData(DataColumns.CONTENT, mContent); + } + } + + public void convertToCallNote(String phoneNumber, long callDate) { + mNote.setCallData(CallNote.CALL_DATE, String.valueOf(callDate)); + mNote.setCallData(CallNote.PHONE_NUMBER, phoneNumber); + mNote.setNoteValue(NoteColumns.PARENT_ID, String.valueOf(Notes.ID_CALL_RECORD_FOLDER)); + } + + public boolean hasClockAlert() { + return (mAlertDate > 0 ? true : false); + } + + public String getContent() { + return mContent; + } + + public long getAlertDate() { + return mAlertDate; + } + + public long getModifiedDate() { + return mModifiedDate; + } + + public int getBgColorResId() { + return NoteBgResources.getNoteBgResource(mBgColorId); + } + + public int getBgColorId() { + return mBgColorId; + } + + public int getTitleBgResId() { + return NoteBgResources.getNoteTitleBgResource(mBgColorId); + } + + public int getCheckListMode() { + return mMode; + } + + public long getNoteId() { + return mNoteId; + } + + public long getFolderId() { + return mFolderId; + } + + public int getWidgetId() { + return mWidgetId; + } + + public int getWidgetType() { + return mWidgetType; + } + + public interface NoteSettingChangedListener { + /** + * Called when the background color of current note has just changed + */ + void onBackgroundColorChanged(); + + /** + * Called when user set clock + */ + void onClockAlertChanged(long date, boolean set); + + /** + * Call when user create note from widget + */ + void onWidgetChanged(); + + /** + * Call when switch between check list mode and normal mode + * @param oldMode is previous mode before change + * @param newMode is new mode + */ + void onCheckListModeChanged(int oldMode, int newMode); + } +} diff --git a/src/net/micode/notes/tool/BackupUtils.java b/src/app/src/main/java/net/micode/notes/tool/BackupUtils.java similarity index 100% rename from src/net/micode/notes/tool/BackupUtils.java rename to src/app/src/main/java/net/micode/notes/tool/BackupUtils.java diff --git a/src/net/micode/notes/tool/DataUtils.java b/src/app/src/main/java/net/micode/notes/tool/DataUtils.java similarity index 100% rename from src/net/micode/notes/tool/DataUtils.java rename to src/app/src/main/java/net/micode/notes/tool/DataUtils.java diff --git a/src/net/micode/notes/tool/GTaskStringUtils.java b/src/app/src/main/java/net/micode/notes/tool/GTaskStringUtils.java similarity index 100% rename from src/net/micode/notes/tool/GTaskStringUtils.java rename to src/app/src/main/java/net/micode/notes/tool/GTaskStringUtils.java diff --git a/src/net/micode/notes/tool/ResourceParser.java b/src/app/src/main/java/net/micode/notes/tool/ResourceParser.java similarity index 100% rename from src/net/micode/notes/tool/ResourceParser.java rename to src/app/src/main/java/net/micode/notes/tool/ResourceParser.java diff --git a/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java similarity index 100% rename from src/net/micode/notes/ui/AlarmAlertActivity.java rename to src/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java diff --git a/src/net/micode/notes/ui/AlarmInitReceiver.java b/src/app/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java similarity index 100% rename from src/net/micode/notes/ui/AlarmInitReceiver.java rename to src/app/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java diff --git a/src/net/micode/notes/ui/AlarmReceiver.java b/src/app/src/main/java/net/micode/notes/ui/AlarmReceiver.java similarity index 100% rename from src/net/micode/notes/ui/AlarmReceiver.java rename to src/app/src/main/java/net/micode/notes/ui/AlarmReceiver.java diff --git a/src/net/micode/notes/ui/DateTimePicker.java b/src/app/src/main/java/net/micode/notes/ui/DateTimePicker.java similarity index 100% rename from src/net/micode/notes/ui/DateTimePicker.java rename to src/app/src/main/java/net/micode/notes/ui/DateTimePicker.java diff --git a/src/net/micode/notes/ui/DateTimePickerDialog.java b/src/app/src/main/java/net/micode/notes/ui/DateTimePickerDialog.java similarity index 100% rename from src/net/micode/notes/ui/DateTimePickerDialog.java rename to src/app/src/main/java/net/micode/notes/ui/DateTimePickerDialog.java diff --git a/src/net/micode/notes/ui/DropdownMenu.java b/src/app/src/main/java/net/micode/notes/ui/DropdownMenu.java similarity index 100% rename from src/net/micode/notes/ui/DropdownMenu.java rename to src/app/src/main/java/net/micode/notes/ui/DropdownMenu.java diff --git a/src/net/micode/notes/ui/FoldersListAdapter.java b/src/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java similarity index 100% rename from src/net/micode/notes/ui/FoldersListAdapter.java rename to src/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java diff --git a/doc/精读报告/ui/NoteEditActivity.doc b/src/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java similarity index 64% rename from doc/精读报告/ui/NoteEditActivity.doc rename to src/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java index 1b32368..23e6e3f 100644 --- a/doc/精读报告/ui/NoteEditActivity.doc +++ b/src/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java @@ -16,25 +16,38 @@ package net.micode.notes.ui; +import android.annotation.TargetApi; 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.ContentResolver; import android.content.ContentUris; +import android.content.ContentValues; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Paint; +import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; +import android.provider.DocumentsContract; +import android.provider.MediaStore; +import android.text.Editable; import android.text.Spannable; import android.text.SpannableString; import android.text.TextUtils; +import android.text.TextWatcher; import android.text.format.DateUtils; import android.text.style.BackgroundColorSpan; +import android.text.style.ImageSpan; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; @@ -47,6 +60,7 @@ import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.EditText; +import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -65,6 +79,7 @@ import net.micode.notes.ui.NoteEditText.OnTextViewChangeListener; import net.micode.notes.widget.NoteWidgetProvider_2x; import net.micode.notes.widget.NoteWidgetProvider_4x; +import java.io.FileNotFoundException; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -74,8 +89,6 @@ import java.util.regex.Pattern; public class NoteEditActivity extends Activity implements OnClickListener, NoteSettingChangedListener, OnTextViewChangeListener { - //该类主要是针对标签的编辑 - //继承了系统内部许多和监听有关的类 private class HeadViewHolder { public TextView tvModified; @@ -84,16 +97,15 @@ public class NoteEditActivity extends Activity implements OnClickListener, 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函数是将指定值和指定键相连 + sBgSelectorBtnsMap.put(R.id.iv_bg_yellow, ResourceParser.YELLOW); + sBgSelectorBtnsMap.put(R.id.iv_bg_red, ResourceParser.RED); + sBgSelectorBtnsMap.put(R.id.iv_bg_blue, ResourceParser.BLUE); + sBgSelectorBtnsMap.put(R.id.iv_bg_green, ResourceParser.GREEN); + sBgSelectorBtnsMap.put(R.id.iv_bg_white, ResourceParser.WHITE); } private static final Map sBgSelectorSelectionMap = new HashMap(); @@ -111,7 +123,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, sFontSizeBtnsMap.put(R.id.ll_font_small, ResourceParser.TEXT_SMALL); sFontSizeBtnsMap.put(R.id.ll_font_normal, ResourceParser.TEXT_MEDIUM); sFontSizeBtnsMap.put(R.id.ll_font_super, ResourceParser.TEXT_SUPER); - }//用户可以选择笔记本界面的大小,提供四个规格 + } private static final Map sFontSelectorSelectionMap = new HashMap(); static { @@ -126,42 +138,118 @@ public class NoteEditActivity extends Activity implements OnClickListener, 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; - //对模板WorkingNote的初始化 - private SharedPreferences mSharedPrefs;//私有化SharedPreferences的数据存储方式 - private int mFontSizeId;//用于操作字体的大小 - private static final String PREFERENCE_FONT_SIZE = "pref_font_size";//定义常量 字体大小设置 + private SharedPreferences mSharedPrefs; + private int mFontSizeId; + + private static final String PREFERENCE_FONT_SIZE = "pref_font_size"; + + private static final int SHORTCUT_ICON_TITLE_MAX_LEN = 10; + + public static final String TAG_CHECKED = String.valueOf('\u221A'); + public static final String TAG_UNCHECKED = String.valueOf('\u25A1'); + + private LinearLayout mEditTextList; + + private final int PHOTO_REQUEST = 1; + //请求码 + + private String mUserQuery; + private Pattern mPattern; + + //添加两个变量 + private EditText editText; + + private TextView textView; + + //字符筛选 + private String Textchange(String oriText){ + StringBuffer stringBuffer = new StringBuffer(oriText); + int Flag1 = -1; + do {//不计入换行字符 + Flag1 = stringBuffer.indexOf("\n"); + + if (Flag1 != -1){ + stringBuffer = stringBuffer.replace(Flag1, Flag1+1, ""); + } + } while (Flag1 != -1); + do {//不计入空格字符 + Flag1 = stringBuffer.indexOf(" "); + + if (Flag1 != -1) { + stringBuffer = stringBuffer.replace(Flag1, Flag1+1, ""); + } + } while (Flag1 != -1); + return stringBuffer.toString(); + } + + //文本监听器 + private void ShowNote(){ + editText = findViewById(R.id.note_edit_view); + textView = findViewById(R.id.text_num); + + editText.addTextChangedListener(new TextWatcher() { - private static final int SHORTCUT_ICON_TITLE_MAX_LEN = 10;//定义final常量,设置了桌面快捷方式标题的最大长度 - public static final String TAG_CHECKED = String.valueOf('\u221A');//定义final字符串,表明已标记 - public static final String TAG_UNCHECKED = String.valueOf('\u25A1');//定义final字符串,表明未标记 + int currentLength = 0; + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + textView.setText("字符数:" + currentLength); + } - private LinearLayout mEditTextList;//线性布局 + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + editText.getText(); + s = Textchange(s.toString()); + currentLength = s.length(); + } - private String mUserQuery;//用户请求 - private Pattern mPattern;//一个Pattern是一个正则表达式经编译后的表现模式 + @Override + public void afterTextChanged(Editable s) { + textView.setText("字符数:" + currentLength); + } + }); + } @Override - protected void onCreate(Bundle savedInstanceState) {//初始化系统的状态 + protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.note_edit); - if (savedInstanceState == null && !initActivityState(getIntent())) {//判断传入参数是否为空,且对activity进行初始化是否成功,满足则结束create函数 如果传入的保存的状态不为NULL时,则不会调用之后的initActivityState函数进行初始化操作 + if (savedInstanceState == null && !initActivityState(getIntent())) { finish(); return; } + + ShowNote(); + //显示字符 initResources(); + //根据id获取添加图片按钮 + final ImageButton add_img_btn = (ImageButton) findViewById(R.id.add_img_btn); + //为点击图片按钮设置监听器 + add_img_btn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Log.d(TAG, "onClick: click add image button"); + //ACTION_GET_CONTENT: 允许用户选择特殊种类的数据,并返回(特殊种类的数据:照一张相片或录一段音) + Intent loadImage = new Intent(Intent.ACTION_GET_CONTENT); + //Category属性用于指定当前动作(Action)被执行的环境. + //CATEGORY_OPENABLE; 用来指示一个ACTION_GET_CONTENT的intent + loadImage.addCategory(Intent.CATEGORY_OPENABLE); + loadImage.setType("image/*"); + startActivityForResult(loadImage, PHOTO_REQUEST); + } + }); } /** @@ -169,7 +257,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, * user load this activity, we should restore the former state */ @Override - protected void onRestoreInstanceState(Bundle savedInstanceState) {//保存当前界面状态。当当前的活动界面因为释放内存而结束,再次加载活动时,可以根据保存的信息恢复到原来的状态 + protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); if (savedInstanceState != null && savedInstanceState.containsKey(Intent.EXTRA_UID)) { Intent intent = new Intent(Intent.ACTION_VIEW); @@ -182,42 +270,42 @@ public class NoteEditActivity extends Activity implements OnClickListener, } } - private boolean initActivityState(Intent intent) {//用户没有给出ID,就跳转到NoteListActivity + 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())) {//判断intent中的action是ACTION_VIEW还是ACTION_INSERT_OR_EDIT,分别进行不同的操作 + if (TextUtils.equals(Intent.ACTION_VIEW, intent.getAction())) { long noteId = intent.getLongExtra(Intent.EXTRA_UID, 0); mUserQuery = ""; /** * Starting from the searched result */ - if (intent.hasExtra(SearchManager.EXTRA_DATA_KEY)) {//查找intent中的数据。将数据标识符存在noteIId中,用户请求字符串存在mUserQuery中 + if (intent.hasExtra(SearchManager.EXTRA_DATA_KEY)) { noteId = Long.parseLong(intent.getStringExtra(SearchManager.EXTRA_DATA_KEY)); mUserQuery = intent.getStringExtra(SearchManager.USER_QUERY); } - if (!DataUtils.visibleInNoteDatabase(getContentResolver(), noteId, Notes.TYPE_NOTE)) {//如果没有找到便签标识符,就跳转到主界面 + if (!DataUtils.visibleInNoteDatabase(getContentResolver(), noteId, Notes.TYPE_NOTE)) { Intent jump = new Intent(this, NotesListActivity.class); startActivity(jump); showToast(R.string.error_note_not_exist); finish(); return false; } else { - mWorkingNote = WorkingNote.load(this, noteId);//根据noteId导入WorkingNote - if (mWorkingNote == null) {//noteId对应的活动标签为空,报错并结束活动,初始化活动返回false,即初始化活动状态位成功 - Log.e(TAG, "load note failed with note id" + noteId);//导出信息失败 反馈错误信息 + mWorkingNote = WorkingNote.load(this, noteId); + if (mWorkingNote == null) { + Log.e(TAG, "load note failed with note id" + noteId); finish(); return false; } } - getWindow().setSoftInputMode(//设置软键盘输入模式 - WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN//将软键盘进行隐藏 - | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);//调节Edit界面,使之适应软键盘弹出 - } else if(TextUtils.equals(Intent.ACTION_INSERT_OR_EDIT, intent.getAction())) {//判断intent的活动是INSERT OR EDIT,即新建便签 + getWindow().setSoftInputMode( + WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN + | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + } else if(TextUtils.equals(Intent.ACTION_INSERT_OR_EDIT, intent.getAction())) { // New note long folderId = intent.getLongExtra(Notes.INTENT_EXTRA_FOLDER_ID, 0); int widgetId = intent.getIntExtra(Notes.INTENT_EXTRA_WIDGET_ID, @@ -228,14 +316,14 @@ public class NoteEditActivity extends Activity implements OnClickListener, ResourceParser.getDefaultBgId(this)); // Parse call-record note - String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);//下面的程序实现的功能是解析通话记录便签,首先获取intent里的电话号码 - long callDate = intent.getLongExtra(Notes.INTENT_EXTRA_CALL_DATE, 0);//获得通话日期 - if (callDate != 0 && phoneNumber != null) {//如果便签的通话日期和通话号码均存在,则把其当做通话便签进行处理,否则当做普通便签进行初始化 - if (TextUtils.isEmpty(phoneNumber)) {//如果记录的通话号码为空,则显示警告 + 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(),//根据电话号码和日期找到对应标识符,赋给noteId. + if ((noteId = DataUtils.getNoteIdByPhoneNumberAndCallDate(getContentResolver(), phoneNumber, callDate)) > 0) { mWorkingNote = WorkingNote.load(this, noteId); if (mWorkingNote == null) { @@ -243,7 +331,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, finish(); return false; } - } else {//将电话号码与手机的号码簿相关联 + } else { mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId, widgetType, bgResId); mWorkingNote.convertToCallNote(phoneNumber, callDate); @@ -257,7 +345,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); } else { - Log.e(TAG, "Intent not specified action, should not support");//显示错误信息,Intent没有指定动作,不应支持 + Log.e(TAG, "Intent not specified action, should not support"); finish(); return false; } @@ -265,22 +353,23 @@ public class NoteEditActivity extends Activity implements OnClickListener, return true; } + @Override - protected void onResume() {//重写Activity的onResume方法,将标签编辑界面作为界面的最上层呈现 + protected void onResume() { super.onResume(); initNoteScreen(); } - private void initNoteScreen() {//初始化便签界面的窗口 + private void initNoteScreen() { mNoteEditor.setTextAppearance(this, TextAppearanceResources .getTexAppearanceResource(mFontSizeId)); - if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {//如果载入的workingnote对象模式为Check_List则调用switchToListMode函数 - switchToListMode(mWorkingNote.getContent());//切换到清单模式 + if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { + switchToListMode(mWorkingNote.getContent()); } else { - mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery));//设置文本选中的文字和长度 + mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery)); mNoteEditor.setSelection(mNoteEditor.getText().length()); } - for (Integer id : sBgSelectorSelectionMap.keySet()) {//对所有图片文件做遍历循环,将其可视性设为不可视 + for (Integer id : sBgSelectorSelectionMap.keySet()) { findViewById(sBgSelectorSelectionMap.get(id)).setVisibility(View.GONE); } mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId()); @@ -296,40 +385,84 @@ public class NoteEditActivity extends Activity implements OnClickListener, * is not ready */ showAlertHeader(); + //将有图片路径的位置转换为图片 + convertToImage(); } - private void showAlertHeader() {//显示便签提醒的标头 + private void showAlertHeader() { if (mWorkingNote.hasClockAlert()) { - long time = System.currentTimeMillis();//获取当前时间,定义为long类型 - if (time > mWorkingNote.getAlertDate()) {//.如果系统时间大于了闹钟设置的时间,那么闹钟失效 + 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));//如果提醒时间未到,则设置标题中显示提醒时间 + mWorkingNote.getAlertDate(), time, DateUtils.MINUTE_IN_MILLIS)); } - mNoteHeaderHolder.tvAlertDate.setVisibility(View.VISIBLE);//显示闹钟提醒的开始图标 - mNoteHeaderHolder.ivAlertIcon.setVisibility(View.VISIBLE);//提醒时间图标显示可见 + mNoteHeaderHolder.tvAlertDate.setVisibility(View.VISIBLE); + mNoteHeaderHolder.ivAlertIcon.setVisibility(View.VISIBLE); } else { mNoteHeaderHolder.tvAlertDate.setVisibility(View.GONE); - mNoteHeaderHolder.ivAlertIcon.setVisibility(View.GONE);//如果便签不包含提醒,则不显示 + mNoteHeaderHolder.ivAlertIcon.setVisibility(View.GONE); }; } + //路径字符串格式 转换为 图片image格式 + private void convertToImage() { + NoteEditText noteEditText = (NoteEditText) findViewById(R.id.note_edit_view); //获取当前的edit + Editable editable = noteEditText.getText();//1.获取text + String noteText = editable.toString(); //2.将note内容转换为字符串 + int length = editable.length(); //内容的长度 + //3.截取img片段 [local]+uri+[local],提取uri + for(int i = 0; i < length; i++) { + for(int j = i; j < length; j++) { + String img_fragment = noteText.substring(i, j+1); //img_fragment:关于图片路径的片段 + if(img_fragment.length() > 15 && img_fragment.endsWith("[/local]") && img_fragment.startsWith("[local]")){ + int limit = 7; //[local]为7个字符 + //[local][/local]共15个字符,剩下的为真正的path长度 + int len = img_fragment.length()-15; + //从[local]之后的len个字符就是path + String path = img_fragment.substring(limit,limit+len);//获取到了图片路径 + Bitmap bitmap = null; + Log.d(TAG, "图片的路径是:"+path); + try { + bitmap = BitmapFactory.decodeFile(path);//将图片路径解码为图片格式 + } catch (Exception e) { + e.printStackTrace(); + } + if(bitmap!=null){ //若图片存在 + Log.d(TAG, "图片不为null"); + ImageSpan imageSpan = new ImageSpan(NoteEditActivity.this, bitmap); + //4.创建一个SpannableString对象,以便插入用ImageSpan对象封装的图像 + String ss = "[local]" + path + "[/local]"; + SpannableString spannableString = new SpannableString(ss); + //5.将指定的标记对象附加到文本的开始...结束范围 + spannableString.setSpan(imageSpan, 0, ss.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + Log.d(TAG, "Create spannable string success!"); + Editable edit_text = noteEditText.getEditableText(); + edit_text.delete(i,i+len+15); //6.删掉图片路径的文字 + edit_text.insert(i, spannableString); //7.在路径的起始位置插入图片 + } + } + } + } + } + + @Override - protected void onNewIntent(Intent intent) {//当活动从后台切换但前台时会调用该函数,再次启动Activity的状态 + protected void onNewIntent(Intent intent) { super.onNewIntent(intent); initActivityState(intent); } @Override - protected void onSaveInstanceState(Bundle outState) {//该函数用于分派触摸事件,其中参数MotionEvent是对屏幕触控的传递机制 + 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()) {//当文字大小选择器可见,并且触控事件不在它的范围内时,执行下面代码 + if (!mWorkingNote.existInDatabase()) { saveNote(); } outState.putLong(Intent.EXTRA_UID, mWorkingNote.getNoteId()); @@ -337,7 +470,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, } @Override - public boolean dispatchTouchEvent(MotionEvent ev) {//判断屏幕上的触控动作是否在视图范围内 + public boolean dispatchTouchEvent(MotionEvent ev) { if (mNoteBgColorSelector.getVisibility() == View.VISIBLE && !inRangeOfView(mNoteBgColorSelector, ev)) { mNoteBgColorSelector.setVisibility(View.GONE); @@ -354,10 +487,10 @@ public class NoteEditActivity extends Activity implements OnClickListener, private boolean inRangeOfView(View view, MotionEvent ev) { int []location = new int[2]; - view.getLocationOnScreen(location);//获取屏幕上的起点位置 + view.getLocationOnScreen(location); int x = location[0]; int y = location[1]; - if (ev.getX() < x//当触摸点的位置超出该控件的视图区域范围时,返回false + if (ev.getX() < x || ev.getX() > (x + view.getWidth()) || ev.getY() < y || ev.getY() > (y + view.getHeight())) { @@ -366,7 +499,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, return true; } - private void initResources() {//对标签各项属性内容的初始化 + private void initResources() { mHeadViewPanel = findViewById(R.id.note_title); mNoteHeaderHolder = new HeadViewHolder(); mNoteHeaderHolder.tvModified = (TextView) findViewById(R.id.tv_modified_date); @@ -382,41 +515,41 @@ public class NoteEditActivity extends Activity implements OnClickListener, iv.setOnClickListener(this); } - mFontSizeSelector = findViewById(R.id.font_size_selector);//为背景颜色选择界面的每一个按钮设置相对应的资源文件,并且设置了点击事件监听器 + mFontSizeSelector = findViewById(R.id.font_size_selector); for (int id : sFontSizeBtnsMap.keySet()) { View view = findViewById(id); view.setOnClickListener(this); }; - mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(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()) {//如果Size大于TextAppearance的大小,则将之设置为默认大小 + if(mFontSizeId >= TextAppearanceResources.getResourcesSize()) { mFontSizeId = ResourceParser.BG_DEFAULT_FONT_SIZE; } - mEditTextList = (LinearLayout) findViewById(R.id.note_edit_list);//得到布局列表 + mEditTextList = (LinearLayout) findViewById(R.id.note_edit_list); } @Override - protected void onPause() {//重写onPause方法,将便签编辑界面暂停 + protected void onPause() { super.onPause(); if(saveNote()) { - Log.d(TAG, "Note data was saved with length:" + mWorkingNote.getContent().length());//暂停时即进行便签的存储,记录log文件 + Log.d(TAG, "Note data was saved with length:" + mWorkingNote.getContent().length()); } clearSettingState(); } - private void updateWidget() {//更新窗口与桌面小窗口同步 + private void updateWidget() { Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE); if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_2X) { - intent.setClass(this, NoteWidgetProvider_2x.class);//判断当前工作中的便签的桌面挂件的类型,并根据不同类型的桌面挂件指定Intent不同的目的组件 + 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");//Log输出error信息,不支持的widget类型 + Log.e(TAG, "Unspported widget type"); return; } @@ -428,27 +561,27 @@ public class NoteEditActivity extends Activity implements OnClickListener, setResult(RESULT_OK, intent); } - public void onClick(View v) {//事件点击时执行该方法 - int id = v.getId();//获取点击目标的id - if (id == R.id.btn_set_bg_color) {//如果点击的是设置背景颜色,执行下面的函数 + 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)) {//将备选颜色界面设为不可见 + 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)) {//判断是否是文字大小设置器中的文字大小选项按钮 + } 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) {//如果workingNote模式为核对列表模式,则执行下面函数 + if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { getWorkingText(); switchToListMode(mWorkingNote.getContent()); } else { - mNoteEditor.setTextAppearance(this,//如果不是check模式,则设置文字编辑器中文字为相应字体大小 + mNoteEditor.setTextAppearance(this, TextAppearanceResources.getTexAppearanceResource(mFontSizeId)); } mFontSizeSelector.setVisibility(View.GONE); @@ -456,9 +589,8 @@ public class NoteEditActivity extends Activity implements OnClickListener, } @Override - public void onBackPressed() {//点击返回键时的操作 - if(clearSettingState()) {//如果字体选择器和背景选择器均不可见,即为便签编辑界面,点击返回键退出,保存便签如果字体选择器和背景选择器可见,则点击返回键时关闭选择界面 - + public void onBackPressed() { + if(clearSettingState()) { return; } @@ -466,42 +598,42 @@ public class NoteEditActivity extends Activity implements OnClickListener, super.onBackPressed(); } - private boolean clearSettingState() {//清除设置状态 - if (mNoteBgColorSelector.getVisibility() == View.VISIBLE) {//将字体选择器和背景颜色选择器设为不可见 + private boolean clearSettingState() { + if (mNoteBgColorSelector.getVisibility() == View.VISIBLE) { mNoteBgColorSelector.setVisibility(View.GONE); return true; - } else if (mFontSizeSelector.getVisibility() == View.VISIBLE) {//如果文字大小选择器可见,则将其设置为不可见 + } else if (mFontSizeSelector.getVisibility() == View.VISIBLE) { mFontSizeSelector.setVisibility(View.GONE); return true; } return false; } - public void onBackgroundColorChanged() {//设置背景颜色改变的监听 + public void onBackgroundColorChanged() { findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility( - View.VISIBLE);//将便签背景色设置为可见,并显示该视图 - mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId());//将文件编辑区域的背景资源设置为便签背景色 - mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId());//将便签头的背景资源设置为标题的背景色 + View.VISIBLE); + mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId()); + mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId()); } @Override public boolean onPrepareOptionsMenu(Menu menu) { - if (isFinishing()) {//如果窗口正在关闭,则不做处理 + if (isFinishing()) { return true; } - clearSettingState();//清除设置状态 - menu.clear();//清除菜单项 - if (mWorkingNote.getFolderId() == Notes.ID_CALL_RECORD_FOLDER) {//如果便签所在的文件夹为便签的通话记录文件夹,执行下面函数 + clearSettingState(); + menu.clear(); + if (mWorkingNote.getFolderId() == Notes.ID_CALL_RECORD_FOLDER) { getMenuInflater().inflate(R.menu.call_note_edit, menu); } else { getMenuInflater().inflate(R.menu.note_edit, menu); } - if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {//判断语句判断条件为是否为清单模式,根据是否为清单模式填充不同的资源 + 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()) {//如果便签中有闹钟的提醒。则菜单中的提醒按钮不可见。如果没有提醒,删除提醒按钮不可见 + if (mWorkingNote.hasClockAlert()) { menu.findItem(R.id.menu_alert).setVisible(false); } else { menu.findItem(R.id.menu_delete_remind).setVisible(false); @@ -510,45 +642,45 @@ public class NoteEditActivity extends Activity implements OnClickListener, } @Override - public boolean onOptionsItemSelected(MenuItem item) {//监听菜单中的项是否被选择 - switch (item.getItemId()) {//获得项的id,即根据菜单中不同的按钮设置不同的处理 + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { case R.id.menu_new_note: - createNewNote();//创建新的便签 + createNewNote(); break; case R.id.menu_delete: - AlertDialog.Builder builder = new AlertDialog.Builder(this);//新建一个提醒对话框实例,用于确认删除操作 - builder.setTitle(getString(R.string.alert_title_delete));//创建关于删除操作的对话框 - builder.setIcon(android.R.drawable.ic_dialog_alert);//设置对话框图标 - builder.setMessage(getString(R.string.alert_message_delete_note));//设置对话框消息内容 - builder.setPositiveButton(android.R.string.ok,//设置确认按钮,并监听它是否被点击 + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(getString(R.string.alert_title_delete)); + builder.setIcon(android.R.drawable.ic_dialog_alert); + builder.setMessage(getString(R.string.alert_message_delete_note)); + builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) {//设置对话框的点击函数 - deleteCurrentNote();//删除当前的便签 - finish();//结束这个activity + public void onClick(DialogInterface dialog, int which) { + deleteCurrentNote(); + finish(); } }); - builder.setNegativeButton(android.R.string.cancel, null);//设置取消按钮 - builder.show();//显示提醒对话框 + builder.setNegativeButton(android.R.string.cancel, null); + builder.show(); break; - case R.id.menu_font_size://菜单字体大小的设置 - mFontSizeSelector.setVisibility(View.VISIBLE);//将字体大小选择器设置为可见 - findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE);//通过id找到相应字体的大小 + case R.id.menu_font_size: + mFontSizeSelector.setVisibility(View.VISIBLE); + findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE); break; - case R.id.menu_list_mode://选择清单模式 - mWorkingNote.setCheckListMode(mWorkingNote.getCheckListMode() == 0 ?//设置清单模式,若当前为清单模式,则取消;否之则设为清单模式 + 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());//发送文本 + case R.id.menu_share: + getWorkingText(); + sendTo(this, mWorkingNote.getContent()); break; - case R.id.menu_send_to_desktop://选择发送到桌面 + case R.id.menu_send_to_desktop: sendToDesktop(); break; - case R.id.menu_alert://选择设置提醒 + case R.id.menu_alert: setReminder(); break; - case R.id.menu_delete_remind://选择删除提醒 + case R.id.menu_delete_remind: mWorkingNote.setAlertDate(0, false); break; default: @@ -557,8 +689,8 @@ public class NoteEditActivity extends Activity implements OnClickListener, return true; } - private void setReminder() {//设置提醒器 - DateTimePickerDialog d = new DateTimePickerDialog(this, System.currentTimeMillis());//实例化一个时间日期选择器的对话框,进行提醒日期的设置 + 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); @@ -571,26 +703,26 @@ public class NoteEditActivity extends Activity implements OnClickListener, * Share note to apps that support {@link Intent#ACTION_SEND} action * and {@text/plain} type */ - private void sendTo(Context context, String info) {//将便签的文本发送到其他支持plain类型文字显示的app中 + private void sendTo(Context context, String info) { Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_TEXT, info); intent.setType("text/plain"); context.startActivity(intent); } - private void createNewNote() {//创建新的便签 + private void createNewNote() { // Firstly, save current editing notes saveNote(); // For safety, start a new NoteEditActivity finish(); - Intent intent = new Intent(this, NoteEditActivity.class);//设置一个新的便签活动编辑器 + Intent intent = new Intent(this, NoteEditActivity.class); intent.setAction(Intent.ACTION_INSERT_OR_EDIT); intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mWorkingNote.getFolderId()); startActivity(intent); } - private void deleteCurrentNote() {//删除当前的便签 + private void deleteCurrentNote() { if (mWorkingNote.existInDatabase()) { HashSet ids = new HashSet(); long id = mWorkingNote.getNoteId(); @@ -612,19 +744,19 @@ public class NoteEditActivity extends Activity implements OnClickListener, mWorkingNote.markDeleted(true); } - private boolean isSyncMode() {//判断是否为同步模式 + private boolean isSyncMode() { return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0; - }//返回同步的用户名长度,如果大于0则有同步状态,否则非同步 + } - public void onClockAlertChanged(long date, boolean set) {//设置闹钟提醒改变的监听 + 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()) {//如果设置提醒的便签未保存,则先保存 + if (!mWorkingNote.existInDatabase()) { saveNote(); } - if (mWorkingNote.getNoteId() > 0) {//数据库中有该提醒的id,执行下面操作。否则,报错 + if (mWorkingNote.getNoteId() > 0) { Intent intent = new Intent(this, AlarmReceiver.class); intent.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, mWorkingNote.getNoteId())); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); @@ -648,9 +780,9 @@ public class NoteEditActivity extends Activity implements OnClickListener, public void onWidgetChanged() { updateWidget(); - }//当widget变化时,执行更新widget的函数 + } - public void onEditTextDelete(int index, String text) {//当删除编辑文本时,执行这个函数 + public void onEditTextDelete(int index, String text) { int childCount = mEditTextList.getChildCount(); if (childCount == 1) { return; @@ -676,11 +808,11 @@ public class NoteEditActivity extends Activity implements OnClickListener, edit.setSelection(length); } - public void onEditTextEnter(int index, String text) {//进入编辑文本框所触发的事件 + public void onEditTextEnter(int index, String text) { /** * Should not happen, check for debug */ - if(index > mEditTextList.getChildCount()) {//如果便签长度超过了限制,则提示错误 + if(index > mEditTextList.getChildCount()) { Log.e(TAG, "Index out of mEditTextList boundrary, should not happen"); } @@ -689,13 +821,13 @@ public class NoteEditActivity extends Activity implements OnClickListener, NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); edit.requestFocus(); edit.setSelection(0); - for (int i = index + 1; i < mEditTextList.getChildCount(); i++) {//遍历子文本框并设置对应对下标 + 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) {//切换至列表模式 + private void switchToListMode(String text) { mEditTextList.removeAllViews(); String[] items = text.split("\n"); int index = 0; @@ -710,9 +842,9 @@ public class NoteEditActivity extends Activity implements OnClickListener, mNoteEditor.setVisibility(View.GONE); mEditTextList.setVisibility(View.VISIBLE); - }//清空所有视图 初始化下标 遍历所有文本单元并添加到文本框中 优先请求此操作 便签编辑器不可见 将文本编辑框置为可见 + } - private Spannable getHighlightQueryResult(String fullText, String userQuery) {//获取高亮效果的反馈结果 + private Spannable getHighlightQueryResult(String fullText, String userQuery) { SpannableString spannable = new SpannableString(fullText == null ? "" : fullText); if (!TextUtils.isEmpty(userQuery)) { mPattern = Pattern.compile(userQuery); @@ -729,14 +861,14 @@ public class NoteEditActivity extends Activity implements OnClickListener, return spannable; } - private View getListItem(String item, int index) {//获取列表项 + 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) {//如果CheckBox已勾选,则执行下面函数,设置显示方式 - if (isChecked) {//如果已经被标记 + 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); @@ -744,7 +876,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, } }); - if (item.startsWith(TAG_CHECKED)) {//判断是否勾选 + 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(); @@ -760,7 +892,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, return view; } - public void onTextChange(int index, boolean hasText) {//便签内容发生改变所触发的事件 越界报错 如果内容不为空则将其子编辑框可见性置为可见,否则不可见 + public void onTextChange(int index, boolean hasText) { if (index >= mEditTextList.getChildCount()) { Log.e(TAG, "Wrong index, should not happen"); return; @@ -772,7 +904,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, } } - public void onCheckListModeChanged(int oldMode, int newMode) {//监听清单模式的变化 + public void onCheckListModeChanged(int oldMode, int newMode) { if (newMode == TextNote.MODE_CHECK_LIST) { switchToListMode(mNoteEditor.getText().toString()); } else { @@ -783,11 +915,13 @@ public class NoteEditActivity extends Activity implements OnClickListener, mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery)); mEditTextList.setVisibility(View.GONE); mNoteEditor.setVisibility(View.VISIBLE); + convertToImage(); + //退出清单模式,应该将有图片的地方显示出来 } - }//如果新模式为列表模式,则调用switchToListMode()方法将便签编辑器的文本切换到列表模式,否则若是获取到文本就改变其检查标记,修改文本编辑器的内容和可见性 + } - private boolean getWorkingText() {//获取当前活动便签的文本并保存到数据库中 - boolean hasChecked = false;//初始化check标记 + private boolean getWorkingText() { + boolean hasChecked = false; if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < mEditTextList.getChildCount(); i++) { @@ -807,9 +941,9 @@ public class NoteEditActivity extends Activity implements OnClickListener, mWorkingNote.setWorkingText(mNoteEditor.getText().toString()); } return hasChecked; - }//如果当前工作便签为清单模式,转化为文字形式保存其数据否则直接保存文字数据到数据库中 + } - private boolean saveNote() {//保存便签 + private boolean saveNote() { getWorkingText(); boolean saved = mWorkingNote.saveNote(); if (saved) { @@ -825,7 +959,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, return saved; } - private void sendToDesktop() {//将便签发送至桌面 + 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 @@ -833,9 +967,9 @@ public class NoteEditActivity extends Activity implements OnClickListener, */ if (!mWorkingNote.existInDatabase()) { saveNote(); - }//核对正编辑的便签是否存在于数据库中,若不存在,则先保存便签 + } - if (mWorkingNote.getNoteId() > 0) {//若便签的id大于0,则执行以下程序 + if (mWorkingNote.getNoteId() > 0) { Intent sender = new Intent(); Intent shortcutIntent = new Intent(this, NoteEditActivity.class); shortcutIntent.setAction(Intent.ACTION_VIEW); @@ -848,8 +982,8 @@ public class NoteEditActivity extends Activity implements OnClickListener, sender.putExtra("duplicate", true); sender.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); showToast(R.string.info_note_enter_desktop); - sendBroadcast(sender);//建立发送到桌面的连接器 链接为一个视图 将便签的相关信息都添加到要发送的文件里 设置sneder的行为是发送 - } else {//如果便签的id错误,则保存提醒用户 + 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 @@ -860,18 +994,152 @@ public class NoteEditActivity extends Activity implements OnClickListener, } } - private String makeShortcutIconTitle(String content) {//编辑小图标的标题 + 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); - }//显示提示的视图 + } - private void showToast(int resId, int duration) {//持续显示提示的视图 + private void showToast(int resId, int duration) { Toast.makeText(this, resId, duration).show(); } + + @Override + //重写onActivityResult()来处理返回的数据 + protected void onActivityResult(int requestCode, int resultCode, Intent intent) { + super.onActivityResult(requestCode, resultCode, intent); + ContentResolver resolver = getContentResolver(); + switch (requestCode) { + case PHOTO_REQUEST: + Uri originalUri = intent.getData(); //1.获得图片的真实路径 + Bitmap bitmap = null; + try { + bitmap = BitmapFactory.decodeStream(resolver.openInputStream(originalUri));//2.解码图片 + } catch (FileNotFoundException e) { + Log.d(TAG, "onActivityResult: get file_exception"); + e.printStackTrace(); + } + + if(bitmap != null){ + //3.根据Bitmap对象创建ImageSpan对象 + Log.d(TAG, "onActivityResult: bitmap is not null"); + ImageSpan imageSpan = new ImageSpan(NoteEditActivity.this, bitmap); + String path = getPath(this,originalUri); + //4.使用[local][/local]将path括起来,用于之后方便识别图片路径在note中的位置 + String img_fragment= "[local]" + path + "[/local]"; + //创建一个SpannableString对象,以便插入用ImageSpan对象封装的图像 + SpannableString spannableString = new SpannableString(img_fragment); + spannableString.setSpan(imageSpan, 0, img_fragment.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + //5.将选择的图片追加到EditText中光标所在位置 + NoteEditText e = (NoteEditText) findViewById(R.id.note_edit_view); + int index = e.getSelectionStart(); //获取光标所在位置 + Log.d(TAG, "Index是: " + index); + Editable edit_text = e.getEditableText(); + edit_text.insert(index, spannableString); //将图片插入到光标所在位置 + + mWorkingNote.mContent = e.getText().toString(); + //6.把改动提交到数据库中,两个数据库表都要改的 + ContentResolver contentResolver = getContentResolver(); + ContentValues contentValues = new ContentValues(); + final long id = mWorkingNote.getNoteId(); + contentValues.put("snippet",mWorkingNote.mContent); + contentResolver.update(Uri.parse("content://micode_notes/note"), contentValues,"_id=?",new String[]{""+id}); + ContentValues contentValues1 = new ContentValues(); + contentValues1.put("content",mWorkingNote.mContent); + contentResolver.update(Uri.parse("content://micode_notes/data"), contentValues1,"mime_type=? and note_id=?", new String[]{"vnd.android.cursor.item/text_note",""+id}); + + }else{ + Toast.makeText(NoteEditActivity.this, "获取图片失败", Toast.LENGTH_SHORT).show(); + } + break; + default: + break; + } + } + + + //获取文件的real path + @TargetApi(Build.VERSION_CODES.KITKAT) + public String getPath(final Context context, final Uri uri) { + + final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; + + // DocumentProvider + if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { + // ExternalStorageProvider +// if (isExternalStorageDocument(uri)) { +// final String docId = DocumentsContract.getDocumentId(uri); +// final String[] split = docId.split(":"); +// final String type = split[0]; +// +// if ("primary".equalsIgnoreCase(type)) { +// return Environment.getExternalStorageDirectory() + "/" + split[1]; +// } +// } +// // DownloadsProvider +// else if (isDownloadsDocument(uri)) { +// final String id = DocumentsContract.getDocumentId(uri); +// final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); +// return getDataColumn(context, contentUri, null, null); +// } + // MediaProvider +// else + if (isMediaDocument(uri)) { + final String docId = DocumentsContract.getDocumentId(uri); + final String[] split = docId.split(":"); + final String type = split[0]; + + Uri contentUri = null; + if ("image".equals(type)) { + contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; + } + + final String selection = "_id=?"; + final String[] selectionArgs = new String[]{split[1]}; + + return getDataColumn(context, contentUri, selection, selectionArgs); + } + } + // Media + else if ("content".equalsIgnoreCase(uri.getScheme())) { + return getDataColumn(context, uri, null, null); + } + // File + else if ("file".equalsIgnoreCase(uri.getScheme())) { + return uri.getPath(); + } + return null; + } + + + //获取数据列_获取此 Uri 的数据列的值。这对MediaStore Uris 和其他基于文件的 ContentProvider。 + public String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) { + + Cursor cursor = null; + final String column = "_data"; + final String[] projection = {column}; + + try { + cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null); + if (cursor != null && cursor.moveToFirst()) { + final int column_index = cursor.getColumnIndexOrThrow(column); + return cursor.getString(column_index); + } + } finally { + if (cursor != null) + cursor.close(); + } + return null; + } + + //是否为媒体文件 + public boolean isMediaDocument(Uri uri) { + return "com.android.providers.media.documents".equals(uri.getAuthority()); + } + } diff --git a/src/net/micode/notes/ui/NoteEditText.java b/src/app/src/main/java/net/micode/notes/ui/NoteEditText.java similarity index 100% rename from src/net/micode/notes/ui/NoteEditText.java rename to src/app/src/main/java/net/micode/notes/ui/NoteEditText.java diff --git a/src/net/micode/notes/ui/NoteItemData.java b/src/app/src/main/java/net/micode/notes/ui/NoteItemData.java similarity index 100% rename from src/net/micode/notes/ui/NoteItemData.java rename to src/app/src/main/java/net/micode/notes/ui/NoteItemData.java diff --git a/doc/精读报告/ui/NotesListActivity.doc b/src/app/src/main/java/net/micode/notes/ui/NotesListActivity.java similarity index 57% rename from doc/精读报告/ui/NotesListActivity.doc rename to src/app/src/main/java/net/micode/notes/ui/NotesListActivity.java index 784995a..216a1be 100644 --- a/doc/精读报告/ui/NotesListActivity.doc +++ b/src/app/src/main/java/net/micode/notes/ui/NotesListActivity.java @@ -16,6 +16,7 @@ package net.micode.notes.ui; +import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; @@ -78,108 +79,95 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.util.HashSet; -// 定义一个类,继承自Activity类,实现OnClickListener和OnItemLongClickListener接口 public class NotesListActivity extends Activity implements OnClickListener, OnItemLongClickListener { - // 定义一个常量,表示文件夹笔记列表查询的标识符 + + + private static final int FOLDER_NOTE_LIST_QUERY_TOKEN = 0; - // 定义一个常量,表示文件夹列表查询的标识符 private static final int FOLDER_LIST_QUERY_TOKEN = 1; - // 定义一个常量,表示菜单中删除文件夹的选项 private static final int MENU_FOLDER_DELETE = 0; - // 定义一个常量,表示菜单中查看文件夹的选项 private static final int MENU_FOLDER_VIEW = 1; - // 定义一个常量,表示菜单中修改文件夹名称的选项 private static final int MENU_FOLDER_CHANGE_NAME = 2; - // 定义一个常量,表示偏好设置中添加介绍的选项 private static final String PREFERENCE_ADD_INTRODUCTION = "net.micode.notes.introduction"; - // 定义一个枚举类型,表示列表编辑的状态,有三种可能:笔记列表、子文件夹、通话记录文件夹 private enum ListEditState { NOTE_LIST, SUB_FOLDER, CALL_RECORD_FOLDER }; - // 定义一个变量,表示当前的列表编辑状态 private ListEditState mState; - // 定义一个变量,表示后台查询处理器 private BackgroundQueryHandler mBackgroundQueryHandler; - // 定义一个变量,表示笔记列表适配器 private NotesListAdapter mNotesListAdapter; - // 定义一个变量,表示笔记列表视图 private ListView mNotesListView; - private Button mAddNewNote; // 添加新便签的按钮 - private boolean mDispatch; // 用于判断是否需要分发触摸事件 - private int mOriginY; // 用于记录触摸事件的原始 Y 坐标 - private int mDispatchY; // 用于记录分发触摸事件的 Y 坐标 - private TextView mTitleBar; // 用于显示标题栏的文本视图 - private long mCurrentFolderId; // 用于记录当前文件夹的 ID - private ContentResolver mContentResolver; // 用于访问内容提供器的对象 - private ModeCallback mModeCallBack; // 用于处理上下文菜单的回调对象 - private static final String TAG = "NotesListActivity"; // 定义一个常量字符串,用于日志输出 + private Button mAddNewNote; + + private boolean mDispatch; + + private int mOriginY; + + private int mDispatchY; - public static final int NOTES_LISTVIEW_SCROLL_RATE = 30; // 定义一个常量整数,用于设置便签列表视图的滚动速率 + private TextView mTitleBar; - private NoteItemData mFocusNoteDataItem; // 用于记录当前焦点便签的数据对象 + 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)"; + + 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(Bundle savedInstanceState) {// 调用父类的方法 - super.onCreate(savedInstanceState);// 设置布局文件为note_list.xml - - setContentView(R.layout.note_list);// 初始化资源 + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.note_list); initResources(); /** * Insert an introduction when user firstly use this application */ - setAppInfoFromRawRes(); // 从原始资源文件中设置应用程序的介绍信息 + setAppInfoFromRawRes(); } @Override - // 这个方法是在一个Activity从另一个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); } } - // 这个方法是从raw资源文件中读取应用信息,并保存到SharedPreferences中 private void setAppInfoFromRawRes() { - // 获取SharedPreferences对象 SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); - // 如果没有添加过介绍信息,就执行以下操作 if (!sp.getBoolean(PREFERENCE_ADD_INTRODUCTION, false)) { - // 创建一个StringBuilder对象,用来存储读取的内容 StringBuilder sb = new StringBuilder(); - // 声明一个输入流对象 InputStream in = null; try { - // 从raw资源文件中打开输入流 - in = getResources().openRawResource(R.raw.introduction); - // 如果输入流不为空,就创建一个字符输入流和缓冲输入流,按照字符数组读取内容,并追加到StringBuilder中 + in = getResources().openRawResource(R.raw.introduction); if (in != null) { InputStreamReader isr = new InputStreamReader(in); BufferedReader br = new BufferedReader(isr); @@ -189,16 +177,13 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt 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(); @@ -209,17 +194,13 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } } - // 这个代码段是在读取完介绍信息后,创建一个空的WorkingNote对象,并设置其属性和内容 WorkingNote note = WorkingNote.createEmptyNote(this, Notes.ID_ROOT_FOLDER, AppWidgetManager.INVALID_APPWIDGET_ID, Notes.TYPE_WIDGET_INVALIDE, ResourceParser.RED); - // 设置WorkingNote对象的文本内容为StringBuilder中的内容 note.setWorkingText(sb.toString()); - // 如果保存WorkingNote对象成功,就把SharedPreferences中的添加介绍信息的标志设为true if (note.saveNote()) { sp.edit().putBoolean(PREFERENCE_ADD_INTRODUCTION, true).commit(); } else { - // 如果保存失败,就打印错误日志并返回 Log.e(TAG, "Save introduction note error"); return; } @@ -227,84 +208,60 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } @Override - // 这个方法是在Activity启动时调用的 protected void onStart() { - // 调用父类的方法 super.onStart(); - // 开始异步查询笔记列表 startAsyncNotesListQuery(); } - // 这个方法是初始化资源的 private void initResources() { - // 获取内容解析器对象 mContentResolver = this.getContentResolver(); - // 创建一个后台查询处理器对象 mBackgroundQueryHandler = new BackgroundQueryHandler(this.getContentResolver()); - // 设置当前文件夹的ID为根文件夹的ID mCurrentFolderId = Notes.ID_ROOT_FOLDER; - // 获取笔记列表视图对象,并设置其底部视图和点击监听器 mNotesListView = (ListView) findViewById(R.id.notes_list); mNotesListView.addFooterView(LayoutInflater.from(this).inflate(R.layout.note_list_footer, null), null, false); mNotesListView.setOnItemClickListener(new OnListItemClickListener()); mNotesListView.setOnItemLongClickListener(this); - // 创建一个笔记列表适配器对象,并设置给笔记列表视图 mNotesListAdapter = new NotesListAdapter(this); mNotesListView.setAdapter(mNotesListAdapter); - // 获取添加新笔记按钮对象,并设置其点击监听器和触摸监听器 mAddNewNote = (Button) findViewById(R.id.btn_new_note); mAddNewNote.setOnClickListener(this); mAddNewNote.setOnTouchListener(new NewNoteOnTouchListener()); - // 初始化一些变量,用来控制事件分发和标题栏显示 mDispatch = false; mDispatchY = 0; mOriginY = 0; mTitleBar = (TextView) findViewById(R.id.tv_title_bar); - // 设置当前的列表编辑状态为笔记列表状态 mState = ListEditState.NOTE_LIST; - // 创建一个模式回调对象,用来处理上下文菜单的操作 mModeCallBack = new ModeCallback(); } - // 这个内部类实现了多选模式监听器和菜单项点击监听器的接口,用来处理列表视图的多选模式和菜单操作 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); } - // 保存操作模式对象的引用,并设置列表适配器的选择模式为true 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(MenuItem item) { mNotesListAdapter.selectAll(!mNotesListAdapter.isAllSelected()); @@ -315,14 +272,12 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt }); return true; } - // 这个方法是更新菜单状态的 + private void updateMenu() { - // 获取已选择的笔记数量 int selectedCount = mNotesListAdapter.getSelectedCount(); - // 更新下拉菜单的标题,显示已选择的数量 + // Update dropdown menu String format = getResources().getString(R.string.menu_select_title, selectedCount); mDropDownMenu.setTitle(format); - // 获取下拉菜单中的全选菜单项,并根据是否全选设置其标题和状态 MenuItem item = mDropDownMenu.findItem(R.id.action_select_all); if (item != null) { if (mNotesListAdapter.isAllSelected()) { @@ -335,75 +290,59 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } } - // 这个方法是在准备操作模式时调用的,这里没有实现任何功能 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) { - // 设置列表适配器的选择模式为false,并恢复列表视图的长按功能和添加新笔记按钮的可见性 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) { - // 设置列表适配器中对应位置的笔记为选中或未选中,并更新菜单状态 + boolean checked) { mNotesListAdapter.setCheckedItem(position, checked); updateMenu(); } - // 这个方法是实现菜单项点击监听器的接口,用来处理删除和移动菜单项的点击事件 public boolean onMenuItemClick(MenuItem item) { - // 如果没有选择任何笔记,就弹出一个提示信息,并返回true if (mNotesListAdapter.getSelectedCount() == 0) { Toast.makeText(NotesListActivity.this, getString(R.string.menu_select_none), Toast.LENGTH_SHORT).show(); return true; } - // 根据菜单项的ID,执行相应的操作 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())); - // 如果用户点击确定,就调用批量删除的方法 + mNotesListAdapter.getSelectedCount())); builder.setPositiveButton(android.R.string.ok, - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, - int which) { - batchDelete(); - } - }); - // 如果用户点击取消,就什么都不做 + 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; - // 如果是其他菜单项,就返回false default: return false; } @@ -411,153 +350,119 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } } - // 这个内部类实现了触摸监听器的接口,用来处理添加新笔记按钮的触摸事件 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; - // 获取触摸事件在屏幕上的Y坐标,并加上按钮的起始位置 int eventY = start + (int) event.getY(); /** * Minus TitleBar's height */ - // 如果当前的列表编辑状态是子文件夹状态,就减去标题栏的高度 if (mState == ListEditState.SUB_FOLDER) { eventY -= mTitleBar.getHeight(); start -= mTitleBar.getHeight(); } - - // 如果触摸事件在一个特定的区域内,就执行以下操作 + /** + * HACKME:When click the transparent part of "New Note" button, dispatch + * the event to the list view behind this button. The transparent part of + * "New Note" button could be expressed by formula y=-0.12x+94(Unit:pixel) + * and the line top of the button. The coordinate based on left of the "New + * Note" button. The 94 represents maximum height of the transparent part. + * Notice that, if the background of the button changes, the formula should + * also change. This is very bad, just for the UI designer's strong requirement. + */ if (event.getY() < (event.getX() * (-0.12) + 94)) { - // 获取列表视图中最后一个可见的视图对象(除了底部视图) View view = mNotesListView.getChildAt(mNotesListView.getChildCount() - 1 - mNotesListView.getFooterViewsCount()); - // 如果视图对象不为空,并且它的底部位置大于按钮的起始位置,并且它的顶部位置小于按钮的结束位置,就执行以下操作 if (view != null && view.getBottom() > start && (view.getTop() < (start + 94))) { - // 保存触摸事件在按钮上的Y坐标和在屏幕上的Y坐标 mOriginY = (int) event.getY(); mDispatchY = eventY; - // 设置触摸事件在屏幕上的Y坐标为之前保存的值 event.setLocation(event.getX(), mDispatchY); - // 设置分发标志为true,并把触摸事件分发给列表视图处理 mDispatch = true; return mNotesListView.dispatchTouchEvent(event); } } break; } - // 如果是移动事件,就执行以下操作 case MotionEvent.ACTION_MOVE: { - // 如果分发标志为true,就执行以下操作 if (mDispatch) { - // 更新触摸事件在屏幕上的Y坐标,并设置给触摸事件对象 mDispatchY += (int) event.getY() - mOriginY; event.setLocation(event.getX(), mDispatchY); - // 把触摸事件分发给列表视图处理,并返回true return mNotesListView.dispatchTouchEvent(event); } break; } - // 如果是其他类型的事件,就执行以下操作 default: { - // 如果分发标志为true,就执行以下操作 if (mDispatch) { - // 设置触摸事件在屏幕上的Y坐标为之前保存的值,并把分发标志设为false event.setLocation(event.getX(), mDispatchY); mDispatch = false; - // 把触摸事件分发给列表视图处理,并返回true return mNotesListView.dispatchTouchEvent(event); } break; } } - // 如果没有分发触摸事件,就返回false return false; } }; - // 这个方法是开始异步查询笔记列表的 private void startAsyncNotesListQuery() { - // 根据当前文件夹的ID,设置查询条件 String selection = (mCurrentFolderId == Notes.ID_ROOT_FOLDER) ? ROOT_FOLDER_SELECTION : NORMAL_SELECTION; - // 调用后台查询处理器对象,开始查询笔记的数据,并指定查询标识符、投影、条件和排序方式 mBackgroundQueryHandler.startQuery(FOLDER_NOTE_LIST_QUERY_TOKEN, null, Notes.CONTENT_NOTE_URI, NoteItemData.PROJECTION, selection, new String[] { - String.valueOf(mCurrentFolderId) + 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(); } @@ -568,79 +473,61 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt this.startActivityForResult(intent, REQUEST_CODE_NEW_NODE); } - // 定义一个私有方法,用于批量删除笔记 + @SuppressLint("StaticFieldLeak") private void batchDelete() { - // 创建一个异步任务,传入空参数,返回一个AppWidgetAttribute的集合 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) { - // 判断小部件的id和类型是否有效 if (widget.widgetId != AppWidgetManager.INVALID_APPWIDGET_ID && widget.widgetType != Notes.TYPE_WIDGET_INVALIDE) { - // 更新小部件的显示内容 updateWidget(widget.widgetId, widget.widgetType); } } } - // 结束操作模式 mModeCallBack.finishActionMode(); } - }.execute(); // 执行异步任务 + }.execute(); } - // 这个方法是删除一个文件夹的,传入一个文件夹的ID private void deleteFolder(long folderId) { - // 如果文件夹的ID是根文件夹的ID,就打印错误日志,并返回 if (folderId == Notes.ID_ROOT_FOLDER) { Log.e(TAG, "Wrong folder id, should not happen " + folderId); return; } - // 创建一个哈希集合对象,用来存储要删除的文件夹的ID 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 @@ -651,170 +538,123 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } } - // 这个方法是打开一个笔记节点的,传入一个笔记项数据对象 private void openNode(NoteItemData data) { - // 创建一个意图对象,并设置其动作为查看 Intent intent = new Intent(this, NoteEditActivity.class); intent.setAction(Intent.ACTION_VIEW); - // 把笔记项数据对象的ID作为额外数据传给意图对象 intent.putExtra(Intent.EXTRA_UID, data.getId()); - // 用该意图启动一个新的Activity,并指定请求码 this.startActivityForResult(intent, REQUEST_CODE_OPEN_NODE); } - // 这个方法是打开一个文件夹的,传入一个笔记项数据对象 private void openFolder(NoteItemData data) { - // 设置当前文件夹的ID为笔记项数据对象的ID,并开始异步查询笔记列表 mCurrentFolderId = data.getId(); startAsyncNotesListQuery(); - // 判断笔记项数据对象的ID是否是通话记录文件夹的ID,如果是,就设置当前的列表编辑状态为通话记录文件夹状态,并隐藏添加新笔记按钮 if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { mState = ListEditState.CALL_RECORD_FOLDER; mAddNewNote.setVisibility(View.GONE); } else { - // 否则,设置当前的列表编辑状态为子文件夹状态 mState = ListEditState.SUB_FOLDER; } - // 判断笔记项数据对象的ID是否是通话记录文件夹的ID,如果是,就设置标题栏的文本为通话记录文件夹的名称 if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { mTitleBar.setText(R.string.call_record_folder_name); } else { - // 否则,设置标题栏的文本为笔记项数据对象的摘要 mTitleBar.setText(data.getSnippet()); } - // 设置标题栏为可见 mTitleBar.setVisibility(View.VISIBLE); } - // 这个方法是实现点击监听器的接口,用来处理点击事件 public void onClick(View v) { - // 根据被点击的视图的ID,执行相应的操作 switch (v.getId()) { - // 如果是添加新笔记按钮,就调用创建新笔记的方法 case R.id.btn_new_note: createNewNote(); break; - // 如果是其他视图,就什么都不做 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()) + 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 { @@ -822,7 +662,6 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } } - // 这个方法是在文本变化之后调用的,这里没有实现任何功能 public void afterTextChanged(Editable s) { // TODO Auto-generated method stub @@ -831,18 +670,14 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } @Override - // 这个方法是在用户按下返回键时调用的 public void onBackPressed() { - // 根据当前的列表编辑状态,执行相应的操作 switch (mState) { - // 如果是子文件夹状态,就把当前文件夹的ID设为根文件夹的ID,并把列表编辑状态设为笔记列表状态,然后开始异步查询笔记列表,并隐藏标题栏 case SUB_FOLDER: mCurrentFolderId = Notes.ID_ROOT_FOLDER; mState = ListEditState.NOTE_LIST; startAsyncNotesListQuery(); mTitleBar.setVisibility(View.GONE); break; - // 如果是通话记录文件夹状态,就把当前文件夹的ID设为根文件夹的ID,并把列表编辑状态设为笔记列表状态,然后开始异步查询笔记列表,并显示添加新笔记按钮,并隐藏标题栏 case CALL_RECORD_FOLDER: mCurrentFolderId = Notes.ID_ROOT_FOLDER; mState = ListEditState.NOTE_LIST; @@ -850,50 +685,37 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt mTitleBar.setVisibility(View.GONE); startAsyncNotesListQuery(); break; - // 如果是笔记列表状态,就调用父类的方法 case NOTE_LIST: super.onBackPressed(); break; - // 如果是其他状态,就什么都不做 default: break; } } - // 这个方法是更新小部件的,传入一个小部件的ID和类型 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; } - // 把小部件的ID作为额外数据传给意图对象 intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { - appWidgetId + 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()); - // 添加三个菜单项,分别是查看文件夹、删除文件夹和修改文件夹名称,并设置其ID和标题 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); @@ -902,137 +724,102 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt }; @Override - // 这个方法是在上下文菜单关闭时调用的,传入一个菜单对象 public void onContextMenuClosed(Menu menu) { - // 如果列表视图对象不为空,就设置其创建上下文菜单的监听器为null if (mNotesListView != null) { mNotesListView.setOnCreateContextMenuListener(null); } - // 调用父类的方法 super.onContextMenuClosed(menu); } - @Override - // 这个方法是在选择上下文菜单中的某一项时调用的,传入一个菜单项对象 + @Override public boolean onContextItemSelected(MenuItem item) { - // 如果当前的焦点笔记项数据对象为空,就打印错误日志,并返回false if (mFocusNoteDataItem == null) { Log.e(TAG, "The long click data item is null"); return false; } - // 根据菜单项的ID,执行相应的操作 switch (item.getItemId()) { - // 如果是查看文件夹菜单项,就调用打开文件夹的方法,传入焦点笔记项数据对象 case MENU_FOLDER_VIEW: openFolder(mFocusNoteDataItem); break; - // 如果是删除文件夹菜单项,就弹出一个确认对话框,询问用户是否要删除该文件夹 case MENU_FOLDER_DELETE: AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(getString(R.string.alert_title_delete)); builder.setIcon(android.R.drawable.ic_dialog_alert); builder.setMessage(getString(R.string.alert_message_delete_folder)); - // 如果用户点击确定,就调用删除文件夹的方法,传入焦点笔记项数据对象的ID 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; - // 如果是修改文件夹名称菜单项,就调用显示创建或修改文件夹对话框的方法,传入false表示不是创建 case MENU_FOLDER_CHANGE_NAME: showCreateOrModifyFolderDialog(false); break; - // 如果是其他菜单项,就什么都不做 default: break; } - // 返回true表示处理了该事件 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); } - // 返回true表示准备好了选项菜单 return true; } @Override - // 这个方法是在选择选项菜单中的某一项时调用的,传入一个菜单项对象 public boolean onOptionsItemSelected(MenuItem item) { - // 根据菜单项的ID,执行相应的操作 switch (item.getItemId()) { - // 如果是新建文件夹菜单项,就调用显示创建或修改文件夹对话框的方法,传入true表示是创建 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 { - // 如果不是同步模式,就调用启动偏好设置Activity的方法 startPreferenceActivity(); } break; } - // 如果是设置菜单项,就调用启动偏好设置Activity的方法 case R.id.menu_setting: { startPreferenceActivity(); break; } - // 如果是新建笔记菜单项,就调用创建新笔记的方法 case R.id.menu_new_note: { createNewNote(); break; } - // 如果是搜索菜单项,就调用启动搜索请求的方法 case R.id.menu_search: onSearchRequested(); break; - // 如果是其他菜单项,就什么都不做 default: break; } - // 返回true表示处理了该事件 return true; } @@ -1052,53 +839,35 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } @Override - // 这个方法是在异步任务执行完毕后调用的 protected void onPostExecute(Integer result) { - // 根据结果的不同,显示不同的对话框 if (result == BackupUtils.STATE_SD_CARD_UNMOUONTED) { - // 如果结果是SD卡未挂载,就创建一个警告对话框 AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); - // 设置对话框的标题为导出失败 builder.setTitle(NotesListActivity.this .getString(R.string.failed_sdcard_export)); - // 设置对话框的内容为SD卡未挂载的错误信息 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(); } @@ -1112,56 +881,39 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt from.startActivityIfNeeded(intent, -1); } - // 这个内部类实现了列表项点击监听器的接口,用来处理列表视图中的点击事件 private class OnListItemClickListener implements OnItemClickListener { - // 这个方法是在点击列表视图中的某一项时调用的,传入一个父视图对象、一个被点击的视图对象、一个位置和一个ID 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; } @@ -1170,15 +922,11 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } - // 这个方法是开始查询目标文件夹的 private void startQueryDestinationFolders() { - // 设置查询条件,筛选出类型为文件夹,并且父ID不是回收站文件夹,并且ID不是当前文件夹的笔记项 String selection = NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>? AND " + NoteColumns.ID + "<>?"; - // 如果当前的列表编辑状态是笔记列表状态,就保持原来的查询条件,否则就加上根文件夹的ID selection = (mState == ListEditState.NOTE_LIST) ? selection: - "(" + selection + ") OR (" + NoteColumns.ID + "=" + Notes.ID_ROOT_FOLDER + ")"; + "(" + selection + ") OR (" + NoteColumns.ID + "=" + Notes.ID_ROOT_FOLDER + ")"; - // 调用后台查询处理器对象,开始查询笔记的数据,并指定查询标识符、投影、条件和排序方式 mBackgroundQueryHandler.startQuery(FOLDER_LIST_QUERY_TOKEN, null, Notes.CONTENT_NOTE_URI, @@ -1192,29 +940,23 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt NoteColumns.MODIFIED_DATE + " DESC"); } - // 这个方法是实现列表项长按监听器的接口,用来处理列表视图中的长按事件 public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { - // 如果被长按的视图对象是一个笔记列表项对象,就执行以下操作 if (view instanceof NotesListItem) { - // 获取笔记列表项对象中的笔记项数据对象,并赋值给当前的焦点笔记项数据对象 mFocusNoteDataItem = ((NotesListItem) view).getItemData(); - // 判断焦点笔记项数据对象的类型是否是笔记类型,并且列表适配器是否不处于选择模式 if (mFocusNoteDataItem.getType() == Notes.TYPE_NOTE && !mNotesListAdapter.isInChoiceMode()) { - // 如果是,就调用列表视图对象的方法,启动操作模式,并传入操作模式回调对象 if (mNotesListView.startActionMode(mModeCallBack) != null) { - // 如果启动成功,就调用操作模式回调对象的方法,改变被长按位置的选中状态,并执行触觉反馈 mModeCallBack.onItemCheckedStateChanged(null, position, id, true); mNotesListView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); } else { - // 如果启动失败,就打印错误日志 Log.e(TAG, "startActionMode fails"); } } else if (mFocusNoteDataItem.getType() == Notes.TYPE_FOLDER) { - // 如果焦点笔记项数据对象的类型是文件夹类型,就设置列表视图对象的创建上下文菜单的监听器为文件夹创建上下文菜单的监听器 mNotesListView.setOnCreateContextMenuListener(mFolderOnCreateContextMenuListener); } } - // 返回false表示没有处理该事件 return false; } + + + } diff --git a/src/net/micode/notes/ui/NotesListAdapter.java b/src/app/src/main/java/net/micode/notes/ui/NotesListAdapter.java similarity index 100% rename from src/net/micode/notes/ui/NotesListAdapter.java rename to src/app/src/main/java/net/micode/notes/ui/NotesListAdapter.java diff --git a/src/net/micode/notes/ui/NotesListItem.java b/src/app/src/main/java/net/micode/notes/ui/NotesListItem.java similarity index 100% rename from src/net/micode/notes/ui/NotesListItem.java rename to src/app/src/main/java/net/micode/notes/ui/NotesListItem.java diff --git a/src/net/micode/notes/ui/NotesPreferenceActivity.java b/src/app/src/main/java/net/micode/notes/ui/NotesPreferenceActivity.java similarity index 100% rename from src/net/micode/notes/ui/NotesPreferenceActivity.java rename to src/app/src/main/java/net/micode/notes/ui/NotesPreferenceActivity.java diff --git a/src/net/micode/notes/widget/NoteWidgetProvider.java b/src/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java similarity index 100% rename from src/net/micode/notes/widget/NoteWidgetProvider.java rename to src/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java diff --git a/src/net/micode/notes/widget/NoteWidgetProvider_2x.java b/src/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider_2x.java similarity index 100% rename from src/net/micode/notes/widget/NoteWidgetProvider_2x.java rename to src/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider_2x.java diff --git a/src/net/micode/notes/widget/NoteWidgetProvider_4x.java b/src/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider_4x.java similarity index 100% rename from src/net/micode/notes/widget/NoteWidgetProvider_4x.java rename to src/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider_4x.java diff --git a/res/color/primary_text_dark.xml b/src/app/src/main/res/color/primary_text_dark.xml similarity index 100% rename from res/color/primary_text_dark.xml rename to src/app/src/main/res/color/primary_text_dark.xml diff --git a/res/color/secondary_text_dark.xml b/src/app/src/main/res/color/secondary_text_dark.xml similarity index 100% rename from res/color/secondary_text_dark.xml rename to src/app/src/main/res/color/secondary_text_dark.xml diff --git a/res/drawable-hdpi/bg_btn_set_color.png b/src/app/src/main/res/drawable-hdpi/bg_btn_set_color.png similarity index 100% rename from res/drawable-hdpi/bg_btn_set_color.png rename to src/app/src/main/res/drawable-hdpi/bg_btn_set_color.png diff --git a/res/drawable-hdpi/bg_color_btn_mask.png b/src/app/src/main/res/drawable-hdpi/bg_color_btn_mask.png similarity index 100% rename from res/drawable-hdpi/bg_color_btn_mask.png rename to src/app/src/main/res/drawable-hdpi/bg_color_btn_mask.png diff --git a/res/drawable-hdpi/call_record.png b/src/app/src/main/res/drawable-hdpi/call_record.png similarity index 100% rename from res/drawable-hdpi/call_record.png rename to src/app/src/main/res/drawable-hdpi/call_record.png diff --git a/res/drawable-hdpi/clock.png b/src/app/src/main/res/drawable-hdpi/clock.png similarity index 100% rename from res/drawable-hdpi/clock.png rename to src/app/src/main/res/drawable-hdpi/clock.png diff --git a/res/drawable-hdpi/delete.png b/src/app/src/main/res/drawable-hdpi/delete.png similarity index 100% rename from res/drawable-hdpi/delete.png rename to src/app/src/main/res/drawable-hdpi/delete.png diff --git a/res/drawable-hdpi/dropdown_icon.9.png b/src/app/src/main/res/drawable-hdpi/dropdown_icon.9.png similarity index 100% rename from res/drawable-hdpi/dropdown_icon.9.png rename to src/app/src/main/res/drawable-hdpi/dropdown_icon.9.png diff --git a/res/drawable-hdpi/edit_blue.9.png b/src/app/src/main/res/drawable-hdpi/edit_blue.9.png similarity index 100% rename from res/drawable-hdpi/edit_blue.9.png rename to src/app/src/main/res/drawable-hdpi/edit_blue.9.png diff --git a/res/drawable-hdpi/edit_green.9.png b/src/app/src/main/res/drawable-hdpi/edit_green.9.png similarity index 100% rename from res/drawable-hdpi/edit_green.9.png rename to src/app/src/main/res/drawable-hdpi/edit_green.9.png diff --git a/res/drawable-hdpi/edit_red.9.png b/src/app/src/main/res/drawable-hdpi/edit_red.9.png similarity index 100% rename from res/drawable-hdpi/edit_red.9.png rename to src/app/src/main/res/drawable-hdpi/edit_red.9.png diff --git a/res/drawable-hdpi/edit_title_blue.9.png b/src/app/src/main/res/drawable-hdpi/edit_title_blue.9.png similarity index 100% rename from res/drawable-hdpi/edit_title_blue.9.png rename to src/app/src/main/res/drawable-hdpi/edit_title_blue.9.png diff --git a/res/drawable-hdpi/edit_title_green.9.png b/src/app/src/main/res/drawable-hdpi/edit_title_green.9.png similarity index 100% rename from res/drawable-hdpi/edit_title_green.9.png rename to src/app/src/main/res/drawable-hdpi/edit_title_green.9.png diff --git a/res/drawable-hdpi/edit_title_red.9.png b/src/app/src/main/res/drawable-hdpi/edit_title_red.9.png similarity index 100% rename from res/drawable-hdpi/edit_title_red.9.png rename to src/app/src/main/res/drawable-hdpi/edit_title_red.9.png diff --git a/res/drawable-hdpi/edit_title_white.9.png b/src/app/src/main/res/drawable-hdpi/edit_title_white.9.png similarity index 100% rename from res/drawable-hdpi/edit_title_white.9.png rename to src/app/src/main/res/drawable-hdpi/edit_title_white.9.png diff --git a/res/drawable-hdpi/edit_title_yellow.9.png b/src/app/src/main/res/drawable-hdpi/edit_title_yellow.9.png similarity index 100% rename from res/drawable-hdpi/edit_title_yellow.9.png rename to src/app/src/main/res/drawable-hdpi/edit_title_yellow.9.png diff --git a/res/drawable-hdpi/edit_white.9.png b/src/app/src/main/res/drawable-hdpi/edit_white.9.png similarity index 100% rename from res/drawable-hdpi/edit_white.9.png rename to src/app/src/main/res/drawable-hdpi/edit_white.9.png diff --git a/res/drawable-hdpi/edit_yellow.9.png b/src/app/src/main/res/drawable-hdpi/edit_yellow.9.png similarity index 100% rename from res/drawable-hdpi/edit_yellow.9.png rename to src/app/src/main/res/drawable-hdpi/edit_yellow.9.png diff --git a/res/drawable-hdpi/font_large.png b/src/app/src/main/res/drawable-hdpi/font_large.png similarity index 100% rename from res/drawable-hdpi/font_large.png rename to src/app/src/main/res/drawable-hdpi/font_large.png diff --git a/res/drawable-hdpi/font_normal.png b/src/app/src/main/res/drawable-hdpi/font_normal.png similarity index 100% rename from res/drawable-hdpi/font_normal.png rename to src/app/src/main/res/drawable-hdpi/font_normal.png diff --git a/res/drawable-hdpi/font_size_selector_bg.9.png b/src/app/src/main/res/drawable-hdpi/font_size_selector_bg.9.png similarity index 100% rename from res/drawable-hdpi/font_size_selector_bg.9.png rename to src/app/src/main/res/drawable-hdpi/font_size_selector_bg.9.png diff --git a/res/drawable-hdpi/font_small.png b/src/app/src/main/res/drawable-hdpi/font_small.png similarity index 100% rename from res/drawable-hdpi/font_small.png rename to src/app/src/main/res/drawable-hdpi/font_small.png diff --git a/res/drawable-hdpi/font_super.png b/src/app/src/main/res/drawable-hdpi/font_super.png similarity index 100% rename from res/drawable-hdpi/font_super.png rename to src/app/src/main/res/drawable-hdpi/font_super.png diff --git a/res/drawable-hdpi/icon_app.png b/src/app/src/main/res/drawable-hdpi/icon_app.png similarity index 100% rename from res/drawable-hdpi/icon_app.png rename to src/app/src/main/res/drawable-hdpi/icon_app.png diff --git a/res/drawable-hdpi/list_background.png b/src/app/src/main/res/drawable-hdpi/list_background.png similarity index 100% rename from res/drawable-hdpi/list_background.png rename to src/app/src/main/res/drawable-hdpi/list_background.png diff --git a/res/drawable-hdpi/list_blue_down.9.png b/src/app/src/main/res/drawable-hdpi/list_blue_down.9.png similarity index 100% rename from res/drawable-hdpi/list_blue_down.9.png rename to src/app/src/main/res/drawable-hdpi/list_blue_down.9.png diff --git a/res/drawable-hdpi/list_blue_middle.9.png b/src/app/src/main/res/drawable-hdpi/list_blue_middle.9.png similarity index 100% rename from res/drawable-hdpi/list_blue_middle.9.png rename to src/app/src/main/res/drawable-hdpi/list_blue_middle.9.png diff --git a/res/drawable-hdpi/list_blue_single.9.png b/src/app/src/main/res/drawable-hdpi/list_blue_single.9.png similarity index 100% rename from res/drawable-hdpi/list_blue_single.9.png rename to src/app/src/main/res/drawable-hdpi/list_blue_single.9.png diff --git a/res/drawable-hdpi/list_blue_up.9.png b/src/app/src/main/res/drawable-hdpi/list_blue_up.9.png similarity index 100% rename from res/drawable-hdpi/list_blue_up.9.png rename to src/app/src/main/res/drawable-hdpi/list_blue_up.9.png diff --git a/res/drawable-hdpi/list_folder.9.png b/src/app/src/main/res/drawable-hdpi/list_folder.9.png similarity index 100% rename from res/drawable-hdpi/list_folder.9.png rename to src/app/src/main/res/drawable-hdpi/list_folder.9.png diff --git a/res/drawable-hdpi/list_footer_bg.9.png b/src/app/src/main/res/drawable-hdpi/list_footer_bg.9.png similarity index 100% rename from res/drawable-hdpi/list_footer_bg.9.png rename to src/app/src/main/res/drawable-hdpi/list_footer_bg.9.png diff --git a/res/drawable-hdpi/list_green_down.9.png b/src/app/src/main/res/drawable-hdpi/list_green_down.9.png similarity index 100% rename from res/drawable-hdpi/list_green_down.9.png rename to src/app/src/main/res/drawable-hdpi/list_green_down.9.png diff --git a/res/drawable-hdpi/list_green_middle.9.png b/src/app/src/main/res/drawable-hdpi/list_green_middle.9.png similarity index 100% rename from res/drawable-hdpi/list_green_middle.9.png rename to src/app/src/main/res/drawable-hdpi/list_green_middle.9.png diff --git a/res/drawable-hdpi/list_green_single.9.png b/src/app/src/main/res/drawable-hdpi/list_green_single.9.png similarity index 100% rename from res/drawable-hdpi/list_green_single.9.png rename to src/app/src/main/res/drawable-hdpi/list_green_single.9.png diff --git a/res/drawable-hdpi/list_green_up.9.png b/src/app/src/main/res/drawable-hdpi/list_green_up.9.png similarity index 100% rename from res/drawable-hdpi/list_green_up.9.png rename to src/app/src/main/res/drawable-hdpi/list_green_up.9.png diff --git a/res/drawable-hdpi/list_red_down.9.png b/src/app/src/main/res/drawable-hdpi/list_red_down.9.png similarity index 100% rename from res/drawable-hdpi/list_red_down.9.png rename to src/app/src/main/res/drawable-hdpi/list_red_down.9.png diff --git a/res/drawable-hdpi/list_red_middle.9.png b/src/app/src/main/res/drawable-hdpi/list_red_middle.9.png similarity index 100% rename from res/drawable-hdpi/list_red_middle.9.png rename to src/app/src/main/res/drawable-hdpi/list_red_middle.9.png diff --git a/res/drawable-hdpi/list_red_single.9.png b/src/app/src/main/res/drawable-hdpi/list_red_single.9.png similarity index 100% rename from res/drawable-hdpi/list_red_single.9.png rename to src/app/src/main/res/drawable-hdpi/list_red_single.9.png diff --git a/res/drawable-hdpi/list_red_up.9.png b/src/app/src/main/res/drawable-hdpi/list_red_up.9.png similarity index 100% rename from res/drawable-hdpi/list_red_up.9.png rename to src/app/src/main/res/drawable-hdpi/list_red_up.9.png diff --git a/res/drawable-hdpi/list_white_down.9.png b/src/app/src/main/res/drawable-hdpi/list_white_down.9.png similarity index 100% rename from res/drawable-hdpi/list_white_down.9.png rename to src/app/src/main/res/drawable-hdpi/list_white_down.9.png diff --git a/res/drawable-hdpi/list_white_middle.9.png b/src/app/src/main/res/drawable-hdpi/list_white_middle.9.png similarity index 100% rename from res/drawable-hdpi/list_white_middle.9.png rename to src/app/src/main/res/drawable-hdpi/list_white_middle.9.png diff --git a/res/drawable-hdpi/list_white_single.9.png b/src/app/src/main/res/drawable-hdpi/list_white_single.9.png similarity index 100% rename from res/drawable-hdpi/list_white_single.9.png rename to src/app/src/main/res/drawable-hdpi/list_white_single.9.png diff --git a/res/drawable-hdpi/list_white_up.9.png b/src/app/src/main/res/drawable-hdpi/list_white_up.9.png similarity index 100% rename from res/drawable-hdpi/list_white_up.9.png rename to src/app/src/main/res/drawable-hdpi/list_white_up.9.png diff --git a/res/drawable-hdpi/list_yellow_down.9.png b/src/app/src/main/res/drawable-hdpi/list_yellow_down.9.png similarity index 100% rename from res/drawable-hdpi/list_yellow_down.9.png rename to src/app/src/main/res/drawable-hdpi/list_yellow_down.9.png diff --git a/res/drawable-hdpi/list_yellow_middle.9.png b/src/app/src/main/res/drawable-hdpi/list_yellow_middle.9.png similarity index 100% rename from res/drawable-hdpi/list_yellow_middle.9.png rename to src/app/src/main/res/drawable-hdpi/list_yellow_middle.9.png diff --git a/res/drawable-hdpi/list_yellow_single.9.png b/src/app/src/main/res/drawable-hdpi/list_yellow_single.9.png similarity index 100% rename from res/drawable-hdpi/list_yellow_single.9.png rename to src/app/src/main/res/drawable-hdpi/list_yellow_single.9.png diff --git a/res/drawable-hdpi/list_yellow_up.9.png b/src/app/src/main/res/drawable-hdpi/list_yellow_up.9.png similarity index 100% rename from res/drawable-hdpi/list_yellow_up.9.png rename to src/app/src/main/res/drawable-hdpi/list_yellow_up.9.png diff --git a/res/drawable-hdpi/menu_delete.png b/src/app/src/main/res/drawable-hdpi/menu_delete.png similarity index 100% rename from res/drawable-hdpi/menu_delete.png rename to src/app/src/main/res/drawable-hdpi/menu_delete.png diff --git a/res/drawable-hdpi/menu_move.png b/src/app/src/main/res/drawable-hdpi/menu_move.png similarity index 100% rename from res/drawable-hdpi/menu_move.png rename to src/app/src/main/res/drawable-hdpi/menu_move.png diff --git a/res/drawable-hdpi/new_note_normal.png b/src/app/src/main/res/drawable-hdpi/new_note_normal.png similarity index 100% rename from res/drawable-hdpi/new_note_normal.png rename to src/app/src/main/res/drawable-hdpi/new_note_normal.png diff --git a/res/drawable-hdpi/new_note_pressed.png b/src/app/src/main/res/drawable-hdpi/new_note_pressed.png similarity index 100% rename from res/drawable-hdpi/new_note_pressed.png rename to src/app/src/main/res/drawable-hdpi/new_note_pressed.png diff --git a/res/drawable-hdpi/note_edit_color_selector_panel.png b/src/app/src/main/res/drawable-hdpi/note_edit_color_selector_panel.png similarity index 100% rename from res/drawable-hdpi/note_edit_color_selector_panel.png rename to src/app/src/main/res/drawable-hdpi/note_edit_color_selector_panel.png diff --git a/res/drawable-hdpi/notification.png b/src/app/src/main/res/drawable-hdpi/notification.png similarity index 100% rename from res/drawable-hdpi/notification.png rename to src/app/src/main/res/drawable-hdpi/notification.png diff --git a/res/drawable-hdpi/search_result.png b/src/app/src/main/res/drawable-hdpi/search_result.png similarity index 100% rename from res/drawable-hdpi/search_result.png rename to src/app/src/main/res/drawable-hdpi/search_result.png diff --git a/res/drawable-hdpi/selected.png b/src/app/src/main/res/drawable-hdpi/selected.png similarity index 100% rename from res/drawable-hdpi/selected.png rename to src/app/src/main/res/drawable-hdpi/selected.png diff --git a/res/drawable-hdpi/title_alert.png b/src/app/src/main/res/drawable-hdpi/title_alert.png similarity index 100% rename from res/drawable-hdpi/title_alert.png rename to src/app/src/main/res/drawable-hdpi/title_alert.png diff --git a/res/drawable-hdpi/title_bar_bg.9.png b/src/app/src/main/res/drawable-hdpi/title_bar_bg.9.png similarity index 100% rename from res/drawable-hdpi/title_bar_bg.9.png rename to src/app/src/main/res/drawable-hdpi/title_bar_bg.9.png diff --git a/res/drawable-hdpi/widget_2x_blue.png b/src/app/src/main/res/drawable-hdpi/widget_2x_blue.png similarity index 100% rename from res/drawable-hdpi/widget_2x_blue.png rename to src/app/src/main/res/drawable-hdpi/widget_2x_blue.png diff --git a/res/drawable-hdpi/widget_2x_green.png b/src/app/src/main/res/drawable-hdpi/widget_2x_green.png similarity index 100% rename from res/drawable-hdpi/widget_2x_green.png rename to src/app/src/main/res/drawable-hdpi/widget_2x_green.png diff --git a/res/drawable-hdpi/widget_2x_red.png b/src/app/src/main/res/drawable-hdpi/widget_2x_red.png similarity index 100% rename from res/drawable-hdpi/widget_2x_red.png rename to src/app/src/main/res/drawable-hdpi/widget_2x_red.png diff --git a/res/drawable-hdpi/widget_2x_white.png b/src/app/src/main/res/drawable-hdpi/widget_2x_white.png similarity index 100% rename from res/drawable-hdpi/widget_2x_white.png rename to src/app/src/main/res/drawable-hdpi/widget_2x_white.png diff --git a/res/drawable-hdpi/widget_2x_yellow.png b/src/app/src/main/res/drawable-hdpi/widget_2x_yellow.png similarity index 100% rename from res/drawable-hdpi/widget_2x_yellow.png rename to src/app/src/main/res/drawable-hdpi/widget_2x_yellow.png diff --git a/res/drawable-hdpi/widget_4x_blue.png b/src/app/src/main/res/drawable-hdpi/widget_4x_blue.png similarity index 100% rename from res/drawable-hdpi/widget_4x_blue.png rename to src/app/src/main/res/drawable-hdpi/widget_4x_blue.png diff --git a/res/drawable-hdpi/widget_4x_green.png b/src/app/src/main/res/drawable-hdpi/widget_4x_green.png similarity index 100% rename from res/drawable-hdpi/widget_4x_green.png rename to src/app/src/main/res/drawable-hdpi/widget_4x_green.png diff --git a/res/drawable-hdpi/widget_4x_red.png b/src/app/src/main/res/drawable-hdpi/widget_4x_red.png similarity index 100% rename from res/drawable-hdpi/widget_4x_red.png rename to src/app/src/main/res/drawable-hdpi/widget_4x_red.png diff --git a/res/drawable-hdpi/widget_4x_white.png b/src/app/src/main/res/drawable-hdpi/widget_4x_white.png similarity index 100% rename from res/drawable-hdpi/widget_4x_white.png rename to src/app/src/main/res/drawable-hdpi/widget_4x_white.png diff --git a/res/drawable-hdpi/widget_4x_yellow.png b/src/app/src/main/res/drawable-hdpi/widget_4x_yellow.png similarity index 100% rename from res/drawable-hdpi/widget_4x_yellow.png rename to src/app/src/main/res/drawable-hdpi/widget_4x_yellow.png diff --git a/res/drawable/new_note.xml b/src/app/src/main/res/drawable/new_note.xml similarity index 100% rename from res/drawable/new_note.xml rename to src/app/src/main/res/drawable/new_note.xml diff --git a/res/layout/account_dialog_title.xml b/src/app/src/main/res/layout/account_dialog_title.xml similarity index 100% rename from res/layout/account_dialog_title.xml rename to src/app/src/main/res/layout/account_dialog_title.xml diff --git a/res/layout/add_account_text.xml b/src/app/src/main/res/layout/add_account_text.xml similarity index 100% rename from res/layout/add_account_text.xml rename to src/app/src/main/res/layout/add_account_text.xml diff --git a/res/layout/datetime_picker.xml b/src/app/src/main/res/layout/datetime_picker.xml similarity index 100% rename from res/layout/datetime_picker.xml rename to src/app/src/main/res/layout/datetime_picker.xml diff --git a/res/layout/dialog_edit_text.xml b/src/app/src/main/res/layout/dialog_edit_text.xml similarity index 100% rename from res/layout/dialog_edit_text.xml rename to src/app/src/main/res/layout/dialog_edit_text.xml diff --git a/res/layout/folder_list_item.xml b/src/app/src/main/res/layout/folder_list_item.xml similarity index 100% rename from res/layout/folder_list_item.xml rename to src/app/src/main/res/layout/folder_list_item.xml diff --git a/res/layout/note_edit.xml b/src/app/src/main/res/layout/note_edit.xml similarity index 100% rename from res/layout/note_edit.xml rename to src/app/src/main/res/layout/note_edit.xml diff --git a/res/layout/note_edit_list_item.xml b/src/app/src/main/res/layout/note_edit_list_item.xml similarity index 100% rename from res/layout/note_edit_list_item.xml rename to src/app/src/main/res/layout/note_edit_list_item.xml diff --git a/res/layout/note_item.xml b/src/app/src/main/res/layout/note_item.xml similarity index 100% rename from res/layout/note_item.xml rename to src/app/src/main/res/layout/note_item.xml diff --git a/res/layout/note_list.xml b/src/app/src/main/res/layout/note_list.xml similarity index 100% rename from res/layout/note_list.xml rename to src/app/src/main/res/layout/note_list.xml diff --git a/res/layout/note_list_dropdown_menu.xml b/src/app/src/main/res/layout/note_list_dropdown_menu.xml similarity index 100% rename from res/layout/note_list_dropdown_menu.xml rename to src/app/src/main/res/layout/note_list_dropdown_menu.xml diff --git a/res/layout/note_list_footer.xml b/src/app/src/main/res/layout/note_list_footer.xml similarity index 100% rename from res/layout/note_list_footer.xml rename to src/app/src/main/res/layout/note_list_footer.xml diff --git a/res/layout/settings_header.xml b/src/app/src/main/res/layout/settings_header.xml similarity index 100% rename from res/layout/settings_header.xml rename to src/app/src/main/res/layout/settings_header.xml diff --git a/res/layout/widget_2x.xml b/src/app/src/main/res/layout/widget_2x.xml similarity index 100% rename from res/layout/widget_2x.xml rename to src/app/src/main/res/layout/widget_2x.xml diff --git a/res/layout/widget_4x.xml b/src/app/src/main/res/layout/widget_4x.xml similarity index 100% rename from res/layout/widget_4x.xml rename to src/app/src/main/res/layout/widget_4x.xml diff --git a/res/menu/call_note_edit.xml b/src/app/src/main/res/menu/call_note_edit.xml similarity index 100% rename from res/menu/call_note_edit.xml rename to src/app/src/main/res/menu/call_note_edit.xml diff --git a/res/menu/call_record_folder.xml b/src/app/src/main/res/menu/call_record_folder.xml similarity index 100% rename from res/menu/call_record_folder.xml rename to src/app/src/main/res/menu/call_record_folder.xml diff --git a/res/menu/note_edit.xml b/src/app/src/main/res/menu/note_edit.xml similarity index 100% rename from res/menu/note_edit.xml rename to src/app/src/main/res/menu/note_edit.xml diff --git a/res/menu/note_list.xml b/src/app/src/main/res/menu/note_list.xml similarity index 100% rename from res/menu/note_list.xml rename to src/app/src/main/res/menu/note_list.xml diff --git a/res/menu/note_list_dropdown.xml b/src/app/src/main/res/menu/note_list_dropdown.xml similarity index 100% rename from res/menu/note_list_dropdown.xml rename to src/app/src/main/res/menu/note_list_dropdown.xml diff --git a/res/menu/note_list_options.xml b/src/app/src/main/res/menu/note_list_options.xml similarity index 100% rename from res/menu/note_list_options.xml rename to src/app/src/main/res/menu/note_list_options.xml diff --git a/res/menu/sub_folder.xml b/src/app/src/main/res/menu/sub_folder.xml similarity index 100% rename from res/menu/sub_folder.xml rename to src/app/src/main/res/menu/sub_folder.xml diff --git a/res/raw-zh-rCN/introduction b/src/app/src/main/res/raw-zh-rCN/introduction similarity index 100% rename from res/raw-zh-rCN/introduction rename to src/app/src/main/res/raw-zh-rCN/introduction diff --git a/res/raw/introduction b/src/app/src/main/res/raw/introduction similarity index 100% rename from res/raw/introduction rename to src/app/src/main/res/raw/introduction diff --git a/res/values-zh-rCN/arrays.xml b/src/app/src/main/res/values-zh-rCN/arrays.xml similarity index 100% rename from res/values-zh-rCN/arrays.xml rename to src/app/src/main/res/values-zh-rCN/arrays.xml diff --git a/res/values-zh-rCN/strings.xml b/src/app/src/main/res/values-zh-rCN/strings.xml similarity index 100% rename from res/values-zh-rCN/strings.xml rename to src/app/src/main/res/values-zh-rCN/strings.xml diff --git a/res/values-zh-rTW/arrays.xml b/src/app/src/main/res/values-zh-rTW/arrays.xml similarity index 100% rename from res/values-zh-rTW/arrays.xml rename to src/app/src/main/res/values-zh-rTW/arrays.xml diff --git a/res/values-zh-rTW/strings.xml b/src/app/src/main/res/values-zh-rTW/strings.xml similarity index 100% rename from res/values-zh-rTW/strings.xml rename to src/app/src/main/res/values-zh-rTW/strings.xml diff --git a/res/values/arrays.xml b/src/app/src/main/res/values/arrays.xml similarity index 100% rename from res/values/arrays.xml rename to src/app/src/main/res/values/arrays.xml diff --git a/res/values/colors.xml b/src/app/src/main/res/values/colors.xml similarity index 100% rename from res/values/colors.xml rename to src/app/src/main/res/values/colors.xml diff --git a/res/values/dimens.xml b/src/app/src/main/res/values/dimens.xml similarity index 100% rename from res/values/dimens.xml rename to src/app/src/main/res/values/dimens.xml diff --git a/res/values/strings.xml b/src/app/src/main/res/values/strings.xml similarity index 100% rename from res/values/strings.xml rename to src/app/src/main/res/values/strings.xml diff --git a/res/values/styles.xml b/src/app/src/main/res/values/styles.xml similarity index 100% rename from res/values/styles.xml rename to src/app/src/main/res/values/styles.xml diff --git a/res/xml/preferences.xml b/src/app/src/main/res/xml/preferences.xml similarity index 100% rename from res/xml/preferences.xml rename to src/app/src/main/res/xml/preferences.xml diff --git a/res/xml/searchable.xml b/src/app/src/main/res/xml/searchable.xml similarity index 100% rename from res/xml/searchable.xml rename to src/app/src/main/res/xml/searchable.xml diff --git a/res/xml/widget_2x_info.xml b/src/app/src/main/res/xml/widget_2x_info.xml similarity index 100% rename from res/xml/widget_2x_info.xml rename to src/app/src/main/res/xml/widget_2x_info.xml diff --git a/res/xml/widget_4x_info.xml b/src/app/src/main/res/xml/widget_4x_info.xml similarity index 100% rename from res/xml/widget_4x_info.xml rename to src/app/src/main/res/xml/widget_4x_info.xml diff --git a/src/app/src/net/micode/notes/data/Contact.java b/src/app/src/net/micode/notes/data/Contact.java new file mode 100644 index 0000000..d97ac5d --- /dev/null +++ b/src/app/src/net/micode/notes/data/Contact.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.data; + +import android.content.Context; +import android.database.Cursor; +import android.provider.ContactsContract.CommonDataKinds.Phone; +import android.provider.ContactsContract.Data; +import android.telephony.PhoneNumberUtils; +import android.util.Log; + +import java.util.HashMap; + +public class Contact { + private static HashMap sContactCache; + private static final String TAG = "Contact"; + + private static final String CALLER_ID_SELECTION = "PHONE_NUMBERS_EQUAL(" + Phone.NUMBER + + ",?) AND " + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'" + + " AND " + Data.RAW_CONTACT_ID + " IN " + + "(SELECT raw_contact_id " + + " FROM phone_lookup" + + " WHERE min_match = '+')"; + + public static String getContact(Context context, String phoneNumber) { + if(sContactCache == null) { + sContactCache = new HashMap(); + } + + if(sContactCache.containsKey(phoneNumber)) { + return sContactCache.get(phoneNumber); + } + + String selection = CALLER_ID_SELECTION.replace("+", + PhoneNumberUtils.toCallerIDMinMatch(phoneNumber)); + Cursor cursor = context.getContentResolver().query( + Data.CONTENT_URI, + new String [] { Phone.DISPLAY_NAME }, + selection, + new String[] { phoneNumber }, + null); + + if (cursor != null && cursor.moveToFirst()) { + try { + String name = cursor.getString(0); + sContactCache.put(phoneNumber, name); + return name; + } catch (IndexOutOfBoundsException e) { + Log.e(TAG, " Cursor get string error " + e.toString()); + return null; + } finally { + cursor.close(); + } + } else { + Log.d(TAG, "No contact matched with number:" + phoneNumber); + return null; + } + } +} diff --git a/src/app/src/net/micode/notes/data/Notes.java b/src/app/src/net/micode/notes/data/Notes.java new file mode 100644 index 0000000..f240604 --- /dev/null +++ b/src/app/src/net/micode/notes/data/Notes.java @@ -0,0 +1,279 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.data; + +import android.net.Uri; +public class Notes { + public static final String AUTHORITY = "micode_notes"; + public static final String TAG = "Notes"; + public static final int TYPE_NOTE = 0; + public static final int TYPE_FOLDER = 1; + public static final int TYPE_SYSTEM = 2; + + /** + * Following IDs are system folders' identifiers + * {@link Notes#ID_ROOT_FOLDER } is default folder + * {@link Notes#ID_TEMPARAY_FOLDER } is for notes belonging no folder + * {@link Notes#ID_CALL_RECORD_FOLDER} is to store call records + */ + public static final int ID_ROOT_FOLDER = 0; + public static final int ID_TEMPARAY_FOLDER = -1; + public static final int ID_CALL_RECORD_FOLDER = -2; + public static final int ID_TRASH_FOLER = -3; + + public static final String INTENT_EXTRA_ALERT_DATE = "net.micode.notes.alert_date"; + public static final String INTENT_EXTRA_BACKGROUND_ID = "net.micode.notes.background_color_id"; + public static final String INTENT_EXTRA_WIDGET_ID = "net.micode.notes.widget_id"; + public static final String INTENT_EXTRA_WIDGET_TYPE = "net.micode.notes.widget_type"; + public static final String INTENT_EXTRA_FOLDER_ID = "net.micode.notes.folder_id"; + public static final String INTENT_EXTRA_CALL_DATE = "net.micode.notes.call_date"; + + public static final int TYPE_WIDGET_INVALIDE = -1; + public static final int TYPE_WIDGET_2X = 0; + public static final int TYPE_WIDGET_4X = 1; + + public static class DataConstants { + public static final String NOTE = TextNote.CONTENT_ITEM_TYPE; + public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE; + } + + /** + * Uri to query all notes and folders + */ + public static final Uri CONTENT_NOTE_URI = Uri.parse("content://" + AUTHORITY + "/note"); + + /** + * Uri to query data + */ + public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + AUTHORITY + "/data"); + + public interface NoteColumns { + /** + * The unique ID for a row + *

Type: INTEGER (long)

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

Type: INTEGER (long)

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

Type: INTEGER (long)

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

Type: INTEGER (long)

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

Type: INTEGER (long)

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

Type: TEXT

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

Type: INTEGER (long)

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

Type: INTEGER (long)

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

Type: INTEGER (long)

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

Type: INTEGER

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

Type: INTEGER (long)

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

Type: INTEGER

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

Type: INTEGER (long)

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

Type: INTEGER

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

Type : INTEGER

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

Type : TEXT

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

Type : INTEGER (long)

+ */ + public static final String VERSION = "version"; + } + + public interface DataColumns { + /** + * The unique ID for a row + *

Type: INTEGER (long)

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

Type: Text

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

Type: INTEGER (long)

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

Type: INTEGER (long)

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

Type: INTEGER (long)

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

Type: TEXT

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

Type: INTEGER

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

Type: INTEGER

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

Type: TEXT

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

Type: TEXT

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

Type: TEXT

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

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

+ */ + public static final String MODE = DATA1; + + public static final int MODE_CHECK_LIST = 1; + + public static final String CONTENT_TYPE = "vnd.android.cursor.dir/text_note"; + + public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/text_note"; + + public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/text_note"); + } + + public static final class CallNote implements DataColumns { + /** + * Call date for this record + *

Type: INTEGER (long)

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

Type: TEXT

+ */ + public static final String PHONE_NUMBER = DATA3; + + public static final String CONTENT_TYPE = "vnd.android.cursor.dir/call_note"; + + public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/call_note"; + + public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/call_note"); + } +} diff --git a/src/app/src/net/micode/notes/data/NotesDatabaseHelper.java b/src/app/src/net/micode/notes/data/NotesDatabaseHelper.java new file mode 100644 index 0000000..ffe5d57 --- /dev/null +++ b/src/app/src/net/micode/notes/data/NotesDatabaseHelper.java @@ -0,0 +1,362 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.data; + +import android.content.ContentValues; +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.util.Log; + +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.DataConstants; +import net.micode.notes.data.Notes.NoteColumns; + + +public class NotesDatabaseHelper extends SQLiteOpenHelper { + private static final String DB_NAME = "note.db"; + + private static final int DB_VERSION = 4; + + public interface TABLE { + public static final String NOTE = "note"; + + public static final String DATA = "data"; + } + + private static final String TAG = "NotesDatabaseHelper"; + + private static NotesDatabaseHelper mInstance; + + private static final String CREATE_NOTE_TABLE_SQL = + "CREATE TABLE " + TABLE.NOTE + "(" + + NoteColumns.ID + " INTEGER PRIMARY KEY," + + NoteColumns.PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.ALERTED_DATE + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.BG_COLOR_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + + NoteColumns.HAS_ATTACHMENT + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + + NoteColumns.NOTES_COUNT + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.SNIPPET + " TEXT NOT NULL DEFAULT ''," + + NoteColumns.TYPE + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.WIDGET_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.WIDGET_TYPE + " INTEGER NOT NULL DEFAULT -1," + + NoteColumns.SYNC_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.LOCAL_MODIFIED + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.ORIGIN_PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.GTASK_ID + " TEXT NOT NULL DEFAULT ''," + + NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0" + + ")"; + + private static final String CREATE_DATA_TABLE_SQL = + "CREATE TABLE " + TABLE.DATA + "(" + + DataColumns.ID + " INTEGER PRIMARY KEY," + + DataColumns.MIME_TYPE + " TEXT NOT NULL," + + DataColumns.NOTE_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + + NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + + DataColumns.CONTENT + " TEXT NOT NULL DEFAULT ''," + + DataColumns.DATA1 + " INTEGER," + + DataColumns.DATA2 + " INTEGER," + + DataColumns.DATA3 + " TEXT NOT NULL DEFAULT ''," + + DataColumns.DATA4 + " TEXT NOT NULL DEFAULT ''," + + DataColumns.DATA5 + " TEXT NOT NULL DEFAULT ''" + + ")"; + + private static final String CREATE_DATA_NOTE_ID_INDEX_SQL = + "CREATE INDEX IF NOT EXISTS note_id_index ON " + + TABLE.DATA + "(" + DataColumns.NOTE_ID + ");"; + + /** + * Increase folder's note count when move note to the folder + */ + private static final String NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = + "CREATE TRIGGER increase_folder_count_on_update "+ + " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + + " BEGIN " + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + + " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + + " END"; + + /** + * Decrease folder's note count when move note from folder + */ + private static final String NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = + "CREATE TRIGGER decrease_folder_count_on_update " + + " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + + " BEGIN " + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + + " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + + " AND " + NoteColumns.NOTES_COUNT + ">0" + ";" + + " END"; + + /** + * Increase folder's note count when insert new note to the folder + */ + private static final String NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER = + "CREATE TRIGGER increase_folder_count_on_insert " + + " AFTER INSERT ON " + TABLE.NOTE + + " BEGIN " + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + + " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + + " END"; + + /** + * Decrease folder's note count when delete note from the folder + */ + private static final String NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER = + "CREATE TRIGGER decrease_folder_count_on_delete " + + " AFTER DELETE ON " + TABLE.NOTE + + " BEGIN " + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + + " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + + " AND " + NoteColumns.NOTES_COUNT + ">0;" + + " END"; + + /** + * Update note's content when insert data with type {@link DataConstants#NOTE} + */ + private static final String DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER = + "CREATE TRIGGER update_note_content_on_insert " + + " AFTER INSERT ON " + TABLE.DATA + + " WHEN new." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + + " BEGIN" + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + + " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + + " END"; + + /** + * Update note's content when data with {@link DataConstants#NOTE} type has changed + */ + private static final String DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER = + "CREATE TRIGGER update_note_content_on_update " + + " AFTER UPDATE ON " + TABLE.DATA + + " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + + " BEGIN" + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + + " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + + " END"; + + /** + * Update note's content when data with {@link DataConstants#NOTE} type has deleted + */ + private static final String DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER = + "CREATE TRIGGER update_note_content_on_delete " + + " AFTER delete ON " + TABLE.DATA + + " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + + " BEGIN" + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.SNIPPET + "=''" + + " WHERE " + NoteColumns.ID + "=old." + DataColumns.NOTE_ID + ";" + + " END"; + + /** + * Delete datas belong to note which has been deleted + */ + private static final String NOTE_DELETE_DATA_ON_DELETE_TRIGGER = + "CREATE TRIGGER delete_data_on_delete " + + " AFTER DELETE ON " + TABLE.NOTE + + " BEGIN" + + " DELETE FROM " + TABLE.DATA + + " WHERE " + DataColumns.NOTE_ID + "=old." + NoteColumns.ID + ";" + + " END"; + + /** + * Delete notes belong to folder which has been deleted + */ + private static final String FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER = + "CREATE TRIGGER folder_delete_notes_on_delete " + + " AFTER DELETE ON " + TABLE.NOTE + + " BEGIN" + + " DELETE FROM " + TABLE.NOTE + + " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + + " END"; + + /** + * Move notes belong to folder which has been moved to trash folder + */ + private static final String FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER = + "CREATE TRIGGER folder_move_notes_on_trash " + + " AFTER UPDATE ON " + TABLE.NOTE + + " WHEN new." + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + + " BEGIN" + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + + " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + + " END"; + + public NotesDatabaseHelper(Context context) { + super(context, DB_NAME, null, DB_VERSION); + } + + public void createNoteTable(SQLiteDatabase db) { + db.execSQL(CREATE_NOTE_TABLE_SQL); + reCreateNoteTableTriggers(db); + createSystemFolder(db); + Log.d(TAG, "note table has been created"); + } + + private void reCreateNoteTableTriggers(SQLiteDatabase db) { + db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_update"); + db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_update"); + db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_delete"); + db.execSQL("DROP TRIGGER IF EXISTS delete_data_on_delete"); + db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_insert"); + db.execSQL("DROP TRIGGER IF EXISTS folder_delete_notes_on_delete"); + db.execSQL("DROP TRIGGER IF EXISTS folder_move_notes_on_trash"); + + db.execSQL(NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER); + db.execSQL(NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER); + db.execSQL(NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER); + db.execSQL(NOTE_DELETE_DATA_ON_DELETE_TRIGGER); + db.execSQL(NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER); + db.execSQL(FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER); + db.execSQL(FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER); + } + + private void createSystemFolder(SQLiteDatabase db) { + ContentValues values = new ContentValues(); + + /** + * call record foler for call notes + */ + values.put(NoteColumns.ID, Notes.ID_CALL_RECORD_FOLDER); + values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + db.insert(TABLE.NOTE, null, values); + + /** + * root folder which is default folder + */ + values.clear(); + values.put(NoteColumns.ID, Notes.ID_ROOT_FOLDER); + values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + db.insert(TABLE.NOTE, null, values); + + /** + * temporary folder which is used for moving note + */ + values.clear(); + values.put(NoteColumns.ID, Notes.ID_TEMPARAY_FOLDER); + values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + db.insert(TABLE.NOTE, null, values); + + /** + * create trash folder + */ + values.clear(); + values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); + values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + db.insert(TABLE.NOTE, null, values); + } + + public void createDataTable(SQLiteDatabase db) { + db.execSQL(CREATE_DATA_TABLE_SQL); + reCreateDataTableTriggers(db); + db.execSQL(CREATE_DATA_NOTE_ID_INDEX_SQL); + Log.d(TAG, "data table has been created"); + } + + private void reCreateDataTableTriggers(SQLiteDatabase db) { + db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_insert"); + db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_update"); + db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_delete"); + + db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER); + db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER); + db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER); + } + + static synchronized NotesDatabaseHelper getInstance(Context context) { + if (mInstance == null) { + mInstance = new NotesDatabaseHelper(context); + } + return mInstance; + } + + @Override + public void onCreate(SQLiteDatabase db) { + createNoteTable(db); + createDataTable(db); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + boolean reCreateTriggers = false; + boolean skipV2 = false; + + if (oldVersion == 1) { + upgradeToV2(db); + skipV2 = true; // this upgrade including the upgrade from v2 to v3 + oldVersion++; + } + + if (oldVersion == 2 && !skipV2) { + upgradeToV3(db); + reCreateTriggers = true; + oldVersion++; + } + + if (oldVersion == 3) { + upgradeToV4(db); + oldVersion++; + } + + if (reCreateTriggers) { + reCreateNoteTableTriggers(db); + reCreateDataTableTriggers(db); + } + + if (oldVersion != newVersion) { + throw new IllegalStateException("Upgrade notes database to version " + newVersion + + "fails"); + } + } + + private void upgradeToV2(SQLiteDatabase db) { + db.execSQL("DROP TABLE IF EXISTS " + TABLE.NOTE); + db.execSQL("DROP TABLE IF EXISTS " + TABLE.DATA); + createNoteTable(db); + createDataTable(db); + } + + private void upgradeToV3(SQLiteDatabase db) { + // drop unused triggers + db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_insert"); + db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_delete"); + db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_update"); + // add a column for gtask id + db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.GTASK_ID + + " TEXT NOT NULL DEFAULT ''"); + // add a trash system folder + ContentValues values = new ContentValues(); + values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); + values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + db.insert(TABLE.NOTE, null, values); + } + + private void upgradeToV4(SQLiteDatabase db) { + db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.VERSION + + " INTEGER NOT NULL DEFAULT 0"); + } +} diff --git a/src/app/src/net/micode/notes/data/NotesProvider.java b/src/app/src/net/micode/notes/data/NotesProvider.java new file mode 100644 index 0000000..edb0a60 --- /dev/null +++ b/src/app/src/net/micode/notes/data/NotesProvider.java @@ -0,0 +1,305 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.data; + + +import android.app.SearchManager; +import android.content.ContentProvider; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.Intent; +import android.content.UriMatcher; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.net.Uri; +import android.text.TextUtils; +import android.util.Log; + +import net.micode.notes.R; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.data.NotesDatabaseHelper.TABLE; + + +public class NotesProvider extends ContentProvider { + private static final UriMatcher mMatcher; + + private NotesDatabaseHelper mHelper; + + private static final String TAG = "NotesProvider"; + + private static final int URI_NOTE = 1; + private static final int URI_NOTE_ITEM = 2; + private static final int URI_DATA = 3; + private static final int URI_DATA_ITEM = 4; + + private static final int URI_SEARCH = 5; + private static final int URI_SEARCH_SUGGEST = 6; + + static { + mMatcher = new UriMatcher(UriMatcher.NO_MATCH); + mMatcher.addURI(Notes.AUTHORITY, "note", URI_NOTE); + mMatcher.addURI(Notes.AUTHORITY, "note/#", URI_NOTE_ITEM); + mMatcher.addURI(Notes.AUTHORITY, "data", URI_DATA); + mMatcher.addURI(Notes.AUTHORITY, "data/#", URI_DATA_ITEM); + mMatcher.addURI(Notes.AUTHORITY, "search", URI_SEARCH); + mMatcher.addURI(Notes.AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY, URI_SEARCH_SUGGEST); + mMatcher.addURI(Notes.AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY + "/*", URI_SEARCH_SUGGEST); + } + + /** + * x'0A' represents the '\n' character in sqlite. For title and content in the search result, + * we will trim '\n' and white space in order to show more information. + */ + private static final String NOTES_SEARCH_PROJECTION = NoteColumns.ID + "," + + NoteColumns.ID + " AS " + SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA + "," + + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_1 + "," + + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_2 + "," + + R.drawable.search_result + " AS " + SearchManager.SUGGEST_COLUMN_ICON_1 + "," + + "'" + Intent.ACTION_VIEW + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_ACTION + "," + + "'" + Notes.TextNote.CONTENT_TYPE + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA; + + private static String NOTES_SNIPPET_SEARCH_QUERY = "SELECT " + NOTES_SEARCH_PROJECTION + + " FROM " + TABLE.NOTE + + " WHERE " + NoteColumns.SNIPPET + " LIKE ?" + + " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER + + " AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE; + + @Override + public boolean onCreate() { + mHelper = NotesDatabaseHelper.getInstance(getContext()); + return true; + } + + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, + String sortOrder) { + Cursor c = null; + SQLiteDatabase db = mHelper.getReadableDatabase(); + String id = null; + switch (mMatcher.match(uri)) { + case URI_NOTE: + c = db.query(TABLE.NOTE, projection, selection, selectionArgs, null, null, + sortOrder); + break; + case URI_NOTE_ITEM: + id = uri.getPathSegments().get(1); + c = db.query(TABLE.NOTE, projection, NoteColumns.ID + "=" + id + + parseSelection(selection), selectionArgs, null, null, sortOrder); + break; + case URI_DATA: + c = db.query(TABLE.DATA, projection, selection, selectionArgs, null, null, + sortOrder); + break; + case URI_DATA_ITEM: + id = uri.getPathSegments().get(1); + c = db.query(TABLE.DATA, projection, DataColumns.ID + "=" + id + + parseSelection(selection), selectionArgs, null, null, sortOrder); + break; + case URI_SEARCH: + case URI_SEARCH_SUGGEST: + if (sortOrder != null || projection != null) { + throw new IllegalArgumentException( + "do not specify sortOrder, selection, selectionArgs, or projection" + "with this query"); + } + + String searchString = null; + if (mMatcher.match(uri) == URI_SEARCH_SUGGEST) { + if (uri.getPathSegments().size() > 1) { + searchString = uri.getPathSegments().get(1); + } + } else { + searchString = uri.getQueryParameter("pattern"); + } + + if (TextUtils.isEmpty(searchString)) { + return null; + } + + try { + searchString = String.format("%%%s%%", searchString); + c = db.rawQuery(NOTES_SNIPPET_SEARCH_QUERY, + new String[] { searchString }); + } catch (IllegalStateException ex) { + Log.e(TAG, "got exception: " + ex.toString()); + } + break; + default: + throw new IllegalArgumentException("Unknown URI " + uri); + } + if (c != null) { + c.setNotificationUri(getContext().getContentResolver(), uri); + } + return c; + } + + @Override + public Uri insert(Uri uri, ContentValues values) { + SQLiteDatabase db = mHelper.getWritableDatabase(); + long dataId = 0, noteId = 0, insertedId = 0; + switch (mMatcher.match(uri)) { + case URI_NOTE: + insertedId = noteId = db.insert(TABLE.NOTE, null, values); + break; + case URI_DATA: + if (values.containsKey(DataColumns.NOTE_ID)) { + noteId = values.getAsLong(DataColumns.NOTE_ID); + } else { + Log.d(TAG, "Wrong data format without note id:" + values.toString()); + } + insertedId = dataId = db.insert(TABLE.DATA, null, values); + break; + default: + throw new IllegalArgumentException("Unknown URI " + uri); + } + // Notify the note uri + if (noteId > 0) { + getContext().getContentResolver().notifyChange( + ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), null); + } + + // Notify the data uri + if (dataId > 0) { + getContext().getContentResolver().notifyChange( + ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId), null); + } + + return ContentUris.withAppendedId(uri, insertedId); + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + int count = 0; + String id = null; + SQLiteDatabase db = mHelper.getWritableDatabase(); + boolean deleteData = false; + switch (mMatcher.match(uri)) { + case URI_NOTE: + selection = "(" + selection + ") AND " + NoteColumns.ID + ">0 "; + count = db.delete(TABLE.NOTE, selection, selectionArgs); + break; + case URI_NOTE_ITEM: + id = uri.getPathSegments().get(1); + /** + * ID that smaller than 0 is system folder which is not allowed to + * trash + */ + long noteId = Long.valueOf(id); + if (noteId <= 0) { + break; + } + count = db.delete(TABLE.NOTE, + NoteColumns.ID + "=" + id + parseSelection(selection), selectionArgs); + break; + case URI_DATA: + count = db.delete(TABLE.DATA, selection, selectionArgs); + deleteData = true; + break; + case URI_DATA_ITEM: + id = uri.getPathSegments().get(1); + count = db.delete(TABLE.DATA, + DataColumns.ID + "=" + id + parseSelection(selection), selectionArgs); + deleteData = true; + break; + default: + throw new IllegalArgumentException("Unknown URI " + uri); + } + if (count > 0) { + if (deleteData) { + getContext().getContentResolver().notifyChange(Notes.CONTENT_NOTE_URI, null); + } + getContext().getContentResolver().notifyChange(uri, null); + } + return count; + } + + @Override + public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { + int count = 0; + String id = null; + SQLiteDatabase db = mHelper.getWritableDatabase(); + boolean updateData = false; + switch (mMatcher.match(uri)) { + case URI_NOTE: + increaseNoteVersion(-1, selection, selectionArgs); + count = db.update(TABLE.NOTE, values, selection, selectionArgs); + break; + case URI_NOTE_ITEM: + id = uri.getPathSegments().get(1); + increaseNoteVersion(Long.valueOf(id), selection, selectionArgs); + count = db.update(TABLE.NOTE, values, NoteColumns.ID + "=" + id + + parseSelection(selection), selectionArgs); + break; + case URI_DATA: + count = db.update(TABLE.DATA, values, selection, selectionArgs); + updateData = true; + break; + case URI_DATA_ITEM: + id = uri.getPathSegments().get(1); + count = db.update(TABLE.DATA, values, DataColumns.ID + "=" + id + + parseSelection(selection), selectionArgs); + updateData = true; + break; + default: + throw new IllegalArgumentException("Unknown URI " + uri); + } + + if (count > 0) { + if (updateData) { + getContext().getContentResolver().notifyChange(Notes.CONTENT_NOTE_URI, null); + } + getContext().getContentResolver().notifyChange(uri, null); + } + return count; + } + + private String parseSelection(String selection) { + return (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : ""); + } + + private void increaseNoteVersion(long id, String selection, String[] selectionArgs) { + StringBuilder sql = new StringBuilder(120); + sql.append("UPDATE "); + sql.append(TABLE.NOTE); + sql.append(" SET "); + sql.append(NoteColumns.VERSION); + sql.append("=" + NoteColumns.VERSION + "+1 "); + + if (id > 0 || !TextUtils.isEmpty(selection)) { + sql.append(" WHERE "); + } + if (id > 0) { + sql.append(NoteColumns.ID + "=" + String.valueOf(id)); + } + if (!TextUtils.isEmpty(selection)) { + String selectString = id > 0 ? parseSelection(selection) : selection; + for (String args : selectionArgs) { + selectString = selectString.replaceFirst("\\?", args); + } + sql.append(selectString); + } + + mHelper.getWritableDatabase().execSQL(sql.toString()); + } + + @Override + public String getType(Uri uri) { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/src/net/micode/notes/gtask/data/MetaData.java b/src/app/src/net/micode/notes/gtask/data/MetaData.java similarity index 100% rename from src/net/micode/notes/gtask/data/MetaData.java rename to src/app/src/net/micode/notes/gtask/data/MetaData.java diff --git a/src/net/micode/notes/gtask/data/Node.java b/src/app/src/net/micode/notes/gtask/data/Node.java similarity index 100% rename from src/net/micode/notes/gtask/data/Node.java rename to src/app/src/net/micode/notes/gtask/data/Node.java diff --git a/src/net/micode/notes/gtask/data/SqlData.java b/src/app/src/net/micode/notes/gtask/data/SqlData.java similarity index 100% rename from src/net/micode/notes/gtask/data/SqlData.java rename to src/app/src/net/micode/notes/gtask/data/SqlData.java diff --git a/src/net/micode/notes/gtask/data/SqlNote.java b/src/app/src/net/micode/notes/gtask/data/SqlNote.java similarity index 100% rename from src/net/micode/notes/gtask/data/SqlNote.java rename to src/app/src/net/micode/notes/gtask/data/SqlNote.java diff --git a/src/net/micode/notes/gtask/data/Task.java b/src/app/src/net/micode/notes/gtask/data/Task.java similarity index 100% rename from src/net/micode/notes/gtask/data/Task.java rename to src/app/src/net/micode/notes/gtask/data/Task.java diff --git a/src/net/micode/notes/gtask/data/TaskList.java b/src/app/src/net/micode/notes/gtask/data/TaskList.java similarity index 100% rename from src/net/micode/notes/gtask/data/TaskList.java rename to src/app/src/net/micode/notes/gtask/data/TaskList.java diff --git a/src/app/src/net/micode/notes/gtask/exception/ActionFailureException.java b/src/app/src/net/micode/notes/gtask/exception/ActionFailureException.java new file mode 100644 index 0000000..15504be --- /dev/null +++ b/src/app/src/net/micode/notes/gtask/exception/ActionFailureException.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.exception; + +public class ActionFailureException extends RuntimeException { + private static final long serialVersionUID = 4425249765923293627L; + + public ActionFailureException() { + super(); + } + + public ActionFailureException(String paramString) { + super(paramString); + } + + public ActionFailureException(String paramString, Throwable paramThrowable) { + super(paramString, paramThrowable); + } +} diff --git a/src/app/src/net/micode/notes/gtask/exception/NetworkFailureException.java b/src/app/src/net/micode/notes/gtask/exception/NetworkFailureException.java new file mode 100644 index 0000000..b08cfb1 --- /dev/null +++ b/src/app/src/net/micode/notes/gtask/exception/NetworkFailureException.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.exception; + +public class NetworkFailureException extends Exception { + private static final long serialVersionUID = 2107610287180234136L; + + public NetworkFailureException() { + super(); + } + + public NetworkFailureException(String paramString) { + super(paramString); + } + + public NetworkFailureException(String paramString, Throwable paramThrowable) { + super(paramString, paramThrowable); + } +} diff --git a/src/net/micode/notes/gtask/remote/GTaskASyncTask.java b/src/app/src/net/micode/notes/gtask/remote/GTaskASyncTask.java similarity index 100% rename from src/net/micode/notes/gtask/remote/GTaskASyncTask.java rename to src/app/src/net/micode/notes/gtask/remote/GTaskASyncTask.java diff --git a/src/app/src/net/micode/notes/gtask/remote/GTaskClient.java b/src/app/src/net/micode/notes/gtask/remote/GTaskClient.java new file mode 100644 index 0000000..c67dfdf --- /dev/null +++ b/src/app/src/net/micode/notes/gtask/remote/GTaskClient.java @@ -0,0 +1,585 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.remote; + +import android.accounts.Account; +import android.accounts.AccountManager; +import android.accounts.AccountManagerFuture; +import android.app.Activity; +import android.os.Bundle; +import android.text.TextUtils; +import android.util.Log; + +import net.micode.notes.gtask.data.Node; +import net.micode.notes.gtask.data.Task; +import net.micode.notes.gtask.data.TaskList; +import net.micode.notes.gtask.exception.ActionFailureException; +import net.micode.notes.gtask.exception.NetworkFailureException; +import net.micode.notes.tool.GTaskStringUtils; +import net.micode.notes.ui.NotesPreferenceActivity; + +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.cookie.Cookie; +import org.apache.http.impl.client.BasicCookieStore; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.params.BasicHttpParams; +import org.apache.http.params.HttpConnectionParams; +import org.apache.http.params.HttpParams; +import org.apache.http.params.HttpProtocolParams; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.LinkedList; +import java.util.List; +import java.util.zip.GZIPInputStream; +import java.util.zip.Inflater; +import java.util.zip.InflaterInputStream; + + +public class GTaskClient { + private static final String TAG = GTaskClient.class.getSimpleName(); + + private static final String GTASK_URL = "https://mail.google.com/tasks/"; + + private static final String GTASK_GET_URL = "https://mail.google.com/tasks/ig"; + + private static final String GTASK_POST_URL = "https://mail.google.com/tasks/r/ig"; + + private static GTaskClient mInstance = null; + + private DefaultHttpClient mHttpClient; + + private String mGetUrl; + + private String mPostUrl; + + private long mClientVersion; + + private boolean mLoggedin; + + private long mLastLoginTime; + + private int mActionId; + + private Account mAccount; + + private JSONArray mUpdateArray; + + private GTaskClient() { + mHttpClient = null; + mGetUrl = GTASK_GET_URL; + mPostUrl = GTASK_POST_URL; + mClientVersion = -1; + mLoggedin = false; + mLastLoginTime = 0; + mActionId = 1; + mAccount = null; + mUpdateArray = null; + } + + public static synchronized GTaskClient getInstance() { + if (mInstance == null) { + mInstance = new GTaskClient(); + } + return mInstance; + } + + public boolean login(Activity activity) { + // we suppose that the cookie would expire after 5 minutes + // then we need to re-login + final long interval = 1000 * 60 * 5; + if (mLastLoginTime + interval < System.currentTimeMillis()) { + mLoggedin = false; + } + + // need to re-login after account switch + if (mLoggedin + && !TextUtils.equals(getSyncAccount().name, NotesPreferenceActivity + .getSyncAccountName(activity))) { + mLoggedin = false; + } + + if (mLoggedin) { + Log.d(TAG, "already logged in"); + return true; + } + + mLastLoginTime = System.currentTimeMillis(); + String authToken = loginGoogleAccount(activity, false); + if (authToken == null) { + Log.e(TAG, "login google account failed"); + return false; + } + + // login with custom domain if necessary + if (!(mAccount.name.toLowerCase().endsWith("gmail.com") || mAccount.name.toLowerCase() + .endsWith("googlemail.com"))) { + StringBuilder url = new StringBuilder(GTASK_URL).append("a/"); + int index = mAccount.name.indexOf('@') + 1; + String suffix = mAccount.name.substring(index); + url.append(suffix + "/"); + mGetUrl = url.toString() + "ig"; + mPostUrl = url.toString() + "r/ig"; + + if (tryToLoginGtask(activity, authToken)) { + mLoggedin = true; + } + } + + // try to login with google official url + if (!mLoggedin) { + mGetUrl = GTASK_GET_URL; + mPostUrl = GTASK_POST_URL; + if (!tryToLoginGtask(activity, authToken)) { + return false; + } + } + + mLoggedin = true; + return true; + } + + private String loginGoogleAccount(Activity activity, boolean invalidateToken) { + String authToken; + AccountManager accountManager = AccountManager.get(activity); + Account[] accounts = accountManager.getAccountsByType("com.google"); + + if (accounts.length == 0) { + Log.e(TAG, "there is no available google account"); + return null; + } + + String accountName = NotesPreferenceActivity.getSyncAccountName(activity); + Account account = null; + for (Account a : accounts) { + if (a.name.equals(accountName)) { + account = a; + break; + } + } + if (account != null) { + mAccount = account; + } else { + Log.e(TAG, "unable to get an account with the same name in the settings"); + return null; + } + + // get the token now + AccountManagerFuture accountManagerFuture = accountManager.getAuthToken(account, + "goanna_mobile", null, activity, null, null); + try { + Bundle authTokenBundle = accountManagerFuture.getResult(); + authToken = authTokenBundle.getString(AccountManager.KEY_AUTHTOKEN); + if (invalidateToken) { + accountManager.invalidateAuthToken("com.google", authToken); + loginGoogleAccount(activity, false); + } + } catch (Exception e) { + Log.e(TAG, "get auth token failed"); + authToken = null; + } + + return authToken; + } + + private boolean tryToLoginGtask(Activity activity, String authToken) { + if (!loginGtask(authToken)) { + // maybe the auth token is out of date, now let's invalidate the + // token and try again + authToken = loginGoogleAccount(activity, true); + if (authToken == null) { + Log.e(TAG, "login google account failed"); + return false; + } + + if (!loginGtask(authToken)) { + Log.e(TAG, "login gtask failed"); + return false; + } + } + return true; + } + + private boolean loginGtask(String authToken) { + int timeoutConnection = 10000; + int timeoutSocket = 15000; + HttpParams httpParameters = new BasicHttpParams(); + HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); + HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); + mHttpClient = new DefaultHttpClient(httpParameters); + BasicCookieStore localBasicCookieStore = new BasicCookieStore(); + mHttpClient.setCookieStore(localBasicCookieStore); + HttpProtocolParams.setUseExpectContinue(mHttpClient.getParams(), false); + + // login gtask + try { + String loginUrl = mGetUrl + "?auth=" + authToken; + HttpGet httpGet = new HttpGet(loginUrl); + HttpResponse response = null; + response = mHttpClient.execute(httpGet); + + // get the cookie now + List cookies = mHttpClient.getCookieStore().getCookies(); + boolean hasAuthCookie = false; + for (Cookie cookie : cookies) { + if (cookie.getName().contains("GTL")) { + hasAuthCookie = true; + } + } + if (!hasAuthCookie) { + Log.w(TAG, "it seems that there is no auth cookie"); + } + + // get the client version + String resString = getResponseContent(response.getEntity()); + String jsBegin = "_setup("; + String jsEnd = ")}"; + int begin = resString.indexOf(jsBegin); + int end = resString.lastIndexOf(jsEnd); + String jsString = null; + if (begin != -1 && end != -1 && begin < end) { + jsString = resString.substring(begin + jsBegin.length(), end); + } + JSONObject js = new JSONObject(jsString); + mClientVersion = js.getLong("v"); + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + return false; + } catch (Exception e) { + // simply catch all exceptions + Log.e(TAG, "httpget gtask_url failed"); + return false; + } + + return true; + } + + private int getActionId() { + return mActionId++; + } + + private HttpPost createHttpPost() { + HttpPost httpPost = new HttpPost(mPostUrl); + httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); + httpPost.setHeader("AT", "1"); + return httpPost; + } + + private String getResponseContent(HttpEntity entity) throws IOException { + String contentEncoding = null; + if (entity.getContentEncoding() != null) { + contentEncoding = entity.getContentEncoding().getValue(); + Log.d(TAG, "encoding: " + contentEncoding); + } + + InputStream input = entity.getContent(); + if (contentEncoding != null && contentEncoding.equalsIgnoreCase("gzip")) { + input = new GZIPInputStream(entity.getContent()); + } else if (contentEncoding != null && contentEncoding.equalsIgnoreCase("deflate")) { + Inflater inflater = new Inflater(true); + input = new InflaterInputStream(entity.getContent(), inflater); + } + + try { + InputStreamReader isr = new InputStreamReader(input); + BufferedReader br = new BufferedReader(isr); + StringBuilder sb = new StringBuilder(); + + while (true) { + String buff = br.readLine(); + if (buff == null) { + return sb.toString(); + } + sb = sb.append(buff); + } + } finally { + input.close(); + } + } + + private JSONObject postRequest(JSONObject js) throws NetworkFailureException { + if (!mLoggedin) { + Log.e(TAG, "please login first"); + throw new ActionFailureException("not logged in"); + } + + HttpPost httpPost = createHttpPost(); + try { + LinkedList list = new LinkedList(); + list.add(new BasicNameValuePair("r", js.toString())); + UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, "UTF-8"); + httpPost.setEntity(entity); + + // execute the post + HttpResponse response = mHttpClient.execute(httpPost); + String jsString = getResponseContent(response.getEntity()); + return new JSONObject(jsString); + + } catch (ClientProtocolException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new NetworkFailureException("postRequest failed"); + } catch (IOException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new NetworkFailureException("postRequest failed"); + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("unable to convert response content to jsonobject"); + } catch (Exception e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("error occurs when posting request"); + } + } + + public void createTask(Task task) throws NetworkFailureException { + commitUpdate(); + try { + JSONObject jsPost = new JSONObject(); + JSONArray actionList = new JSONArray(); + + // action_list + actionList.put(task.getCreateAction(getActionId())); + jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList); + + // client_version + jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); + + // post + JSONObject jsResponse = postRequest(jsPost); + JSONObject jsResult = (JSONObject) jsResponse.getJSONArray( + GTaskStringUtils.GTASK_JSON_RESULTS).get(0); + task.setGid(jsResult.getString(GTaskStringUtils.GTASK_JSON_NEW_ID)); + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("create task: handing jsonobject failed"); + } + } + + public void createTaskList(TaskList tasklist) throws NetworkFailureException { + commitUpdate(); + try { + JSONObject jsPost = new JSONObject(); + JSONArray actionList = new JSONArray(); + + // action_list + actionList.put(tasklist.getCreateAction(getActionId())); + jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList); + + // client version + jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); + + // post + JSONObject jsResponse = postRequest(jsPost); + JSONObject jsResult = (JSONObject) jsResponse.getJSONArray( + GTaskStringUtils.GTASK_JSON_RESULTS).get(0); + tasklist.setGid(jsResult.getString(GTaskStringUtils.GTASK_JSON_NEW_ID)); + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("create tasklist: handing jsonobject failed"); + } + } + + public void commitUpdate() throws NetworkFailureException { + if (mUpdateArray != null) { + try { + JSONObject jsPost = new JSONObject(); + + // action_list + jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, mUpdateArray); + + // client_version + jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); + + postRequest(jsPost); + mUpdateArray = null; + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("commit update: handing jsonobject failed"); + } + } + } + + public void addUpdateNode(Node node) throws NetworkFailureException { + if (node != null) { + // too many update items may result in an error + // set max to 10 items + if (mUpdateArray != null && mUpdateArray.length() > 10) { + commitUpdate(); + } + + if (mUpdateArray == null) + mUpdateArray = new JSONArray(); + mUpdateArray.put(node.getUpdateAction(getActionId())); + } + } + + public void moveTask(Task task, TaskList preParent, TaskList curParent) + throws NetworkFailureException { + commitUpdate(); + try { + JSONObject jsPost = new JSONObject(); + JSONArray actionList = new JSONArray(); + JSONObject action = new JSONObject(); + + // action_list + action.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, + GTaskStringUtils.GTASK_JSON_ACTION_TYPE_MOVE); + action.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, getActionId()); + action.put(GTaskStringUtils.GTASK_JSON_ID, task.getGid()); + if (preParent == curParent && task.getPriorSibling() != null) { + // put prioring_sibing_id only if moving within the tasklist and + // it is not the first one + action.put(GTaskStringUtils.GTASK_JSON_PRIOR_SIBLING_ID, task.getPriorSibling()); + } + action.put(GTaskStringUtils.GTASK_JSON_SOURCE_LIST, preParent.getGid()); + action.put(GTaskStringUtils.GTASK_JSON_DEST_PARENT, curParent.getGid()); + if (preParent != curParent) { + // put the dest_list only if moving between tasklists + action.put(GTaskStringUtils.GTASK_JSON_DEST_LIST, curParent.getGid()); + } + actionList.put(action); + jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList); + + // client_version + jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); + + postRequest(jsPost); + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("move task: handing jsonobject failed"); + } + } + + public void deleteNode(Node node) throws NetworkFailureException { + commitUpdate(); + try { + JSONObject jsPost = new JSONObject(); + JSONArray actionList = new JSONArray(); + + // action_list + node.setDeleted(true); + actionList.put(node.getUpdateAction(getActionId())); + jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList); + + // client_version + jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); + + postRequest(jsPost); + mUpdateArray = null; + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("delete node: handing jsonobject failed"); + } + } + + public JSONArray getTaskLists() throws NetworkFailureException { + if (!mLoggedin) { + Log.e(TAG, "please login first"); + throw new ActionFailureException("not logged in"); + } + + try { + HttpGet httpGet = new HttpGet(mGetUrl); + HttpResponse response = null; + response = mHttpClient.execute(httpGet); + + // get the task list + String resString = getResponseContent(response.getEntity()); + String jsBegin = "_setup("; + String jsEnd = ")}"; + int begin = resString.indexOf(jsBegin); + int end = resString.lastIndexOf(jsEnd); + String jsString = null; + if (begin != -1 && end != -1 && begin < end) { + jsString = resString.substring(begin + jsBegin.length(), end); + } + JSONObject js = new JSONObject(jsString); + return js.getJSONObject("t").getJSONArray(GTaskStringUtils.GTASK_JSON_LISTS); + } catch (ClientProtocolException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new NetworkFailureException("gettasklists: httpget failed"); + } catch (IOException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new NetworkFailureException("gettasklists: httpget failed"); + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("get task lists: handing jasonobject failed"); + } + } + + public JSONArray getTaskList(String listGid) throws NetworkFailureException { + commitUpdate(); + try { + JSONObject jsPost = new JSONObject(); + JSONArray actionList = new JSONArray(); + JSONObject action = new JSONObject(); + + // action_list + action.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, + GTaskStringUtils.GTASK_JSON_ACTION_TYPE_GETALL); + action.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, getActionId()); + action.put(GTaskStringUtils.GTASK_JSON_LIST_ID, listGid); + action.put(GTaskStringUtils.GTASK_JSON_GET_DELETED, false); + actionList.put(action); + jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList); + + // client_version + jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); + + JSONObject jsResponse = postRequest(jsPost); + return jsResponse.getJSONArray(GTaskStringUtils.GTASK_JSON_TASKS); + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("get task list: handing jsonobject failed"); + } + } + + public Account getSyncAccount() { + return mAccount; + } + + public void resetUpdateArray() { + mUpdateArray = null; + } +} diff --git a/src/app/src/net/micode/notes/gtask/remote/GTaskManager.java b/src/app/src/net/micode/notes/gtask/remote/GTaskManager.java new file mode 100644 index 0000000..d2b4082 --- /dev/null +++ b/src/app/src/net/micode/notes/gtask/remote/GTaskManager.java @@ -0,0 +1,800 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.remote; + +import android.app.Activity; +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.util.Log; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.data.MetaData; +import net.micode.notes.gtask.data.Node; +import net.micode.notes.gtask.data.SqlNote; +import net.micode.notes.gtask.data.Task; +import net.micode.notes.gtask.data.TaskList; +import net.micode.notes.gtask.exception.ActionFailureException; +import net.micode.notes.gtask.exception.NetworkFailureException; +import net.micode.notes.tool.DataUtils; +import net.micode.notes.tool.GTaskStringUtils; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; + + +public class GTaskManager { + private static final String TAG = GTaskManager.class.getSimpleName(); + + public static final int STATE_SUCCESS = 0; + + public static final int STATE_NETWORK_ERROR = 1; + + public static final int STATE_INTERNAL_ERROR = 2; + + public static final int STATE_SYNC_IN_PROGRESS = 3; + + public static final int STATE_SYNC_CANCELLED = 4; + + private static GTaskManager mInstance = null; + + private Activity mActivity; + + private Context mContext; + + private ContentResolver mContentResolver; + + private boolean mSyncing; + + private boolean mCancelled; + + private HashMap mGTaskListHashMap; + + private HashMap mGTaskHashMap; + + private HashMap mMetaHashMap; + + private TaskList mMetaList; + + private HashSet mLocalDeleteIdMap; + + private HashMap mGidToNid; + + private HashMap mNidToGid; + + private GTaskManager() { + mSyncing = false; + mCancelled = false; + mGTaskListHashMap = new HashMap(); + mGTaskHashMap = new HashMap(); + mMetaHashMap = new HashMap(); + mMetaList = null; + mLocalDeleteIdMap = new HashSet(); + mGidToNid = new HashMap(); + mNidToGid = new HashMap(); + } + + public static synchronized GTaskManager getInstance() { + if (mInstance == null) { + mInstance = new GTaskManager(); + } + return mInstance; + } + + public synchronized void setActivityContext(Activity activity) { + // used for getting authtoken + mActivity = activity; + } + + public int sync(Context context, GTaskASyncTask asyncTask) { + if (mSyncing) { + Log.d(TAG, "Sync is in progress"); + return STATE_SYNC_IN_PROGRESS; + } + mContext = context; + mContentResolver = mContext.getContentResolver(); + mSyncing = true; + mCancelled = false; + mGTaskListHashMap.clear(); + mGTaskHashMap.clear(); + mMetaHashMap.clear(); + mLocalDeleteIdMap.clear(); + mGidToNid.clear(); + mNidToGid.clear(); + + try { + GTaskClient client = GTaskClient.getInstance(); + client.resetUpdateArray(); + + // login google task + if (!mCancelled) { + if (!client.login(mActivity)) { + throw new NetworkFailureException("login google task failed"); + } + } + + // get the task list from google + asyncTask.publishProgess(mContext.getString(R.string.sync_progress_init_list)); + initGTaskList(); + + // do content sync work + asyncTask.publishProgess(mContext.getString(R.string.sync_progress_syncing)); + syncContent(); + } catch (NetworkFailureException e) { + Log.e(TAG, e.toString()); + return STATE_NETWORK_ERROR; + } catch (ActionFailureException e) { + Log.e(TAG, e.toString()); + return STATE_INTERNAL_ERROR; + } catch (Exception e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + return STATE_INTERNAL_ERROR; + } finally { + mGTaskListHashMap.clear(); + mGTaskHashMap.clear(); + mMetaHashMap.clear(); + mLocalDeleteIdMap.clear(); + mGidToNid.clear(); + mNidToGid.clear(); + mSyncing = false; + } + + return mCancelled ? STATE_SYNC_CANCELLED : STATE_SUCCESS; + } + + private void initGTaskList() throws NetworkFailureException { + if (mCancelled) + return; + GTaskClient client = GTaskClient.getInstance(); + try { + JSONArray jsTaskLists = client.getTaskLists(); + + // init meta list first + mMetaList = null; + for (int i = 0; i < jsTaskLists.length(); i++) { + JSONObject object = jsTaskLists.getJSONObject(i); + String gid = object.getString(GTaskStringUtils.GTASK_JSON_ID); + String name = object.getString(GTaskStringUtils.GTASK_JSON_NAME); + + if (name + .equals(GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_META)) { + mMetaList = new TaskList(); + mMetaList.setContentByRemoteJSON(object); + + // load meta data + JSONArray jsMetas = client.getTaskList(gid); + for (int j = 0; j < jsMetas.length(); j++) { + object = (JSONObject) jsMetas.getJSONObject(j); + MetaData metaData = new MetaData(); + metaData.setContentByRemoteJSON(object); + if (metaData.isWorthSaving()) { + mMetaList.addChildTask(metaData); + if (metaData.getGid() != null) { + mMetaHashMap.put(metaData.getRelatedGid(), metaData); + } + } + } + } + } + + // create meta list if not existed + if (mMetaList == null) { + mMetaList = new TaskList(); + mMetaList.setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + + GTaskStringUtils.FOLDER_META); + GTaskClient.getInstance().createTaskList(mMetaList); + } + + // init task list + for (int i = 0; i < jsTaskLists.length(); i++) { + JSONObject object = jsTaskLists.getJSONObject(i); + String gid = object.getString(GTaskStringUtils.GTASK_JSON_ID); + String name = object.getString(GTaskStringUtils.GTASK_JSON_NAME); + + if (name.startsWith(GTaskStringUtils.MIUI_FOLDER_PREFFIX) + && !name.equals(GTaskStringUtils.MIUI_FOLDER_PREFFIX + + GTaskStringUtils.FOLDER_META)) { + TaskList tasklist = new TaskList(); + tasklist.setContentByRemoteJSON(object); + mGTaskListHashMap.put(gid, tasklist); + mGTaskHashMap.put(gid, tasklist); + + // load tasks + JSONArray jsTasks = client.getTaskList(gid); + for (int j = 0; j < jsTasks.length(); j++) { + object = (JSONObject) jsTasks.getJSONObject(j); + gid = object.getString(GTaskStringUtils.GTASK_JSON_ID); + Task task = new Task(); + task.setContentByRemoteJSON(object); + if (task.isWorthSaving()) { + task.setMetaInfo(mMetaHashMap.get(gid)); + tasklist.addChildTask(task); + mGTaskHashMap.put(gid, task); + } + } + } + } + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("initGTaskList: handing JSONObject failed"); + } + } + + private void syncContent() throws NetworkFailureException { + int syncType; + Cursor c = null; + String gid; + Node node; + + mLocalDeleteIdMap.clear(); + + if (mCancelled) { + return; + } + + // for local deleted note + try { + c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, + "(type<>? AND parent_id=?)", new String[] { + String.valueOf(Notes.TYPE_SYSTEM), String.valueOf(Notes.ID_TRASH_FOLER) + }, null); + if (c != null) { + while (c.moveToNext()) { + gid = c.getString(SqlNote.GTASK_ID_COLUMN); + node = mGTaskHashMap.get(gid); + if (node != null) { + mGTaskHashMap.remove(gid); + doContentSync(Node.SYNC_ACTION_DEL_REMOTE, node, c); + } + + mLocalDeleteIdMap.add(c.getLong(SqlNote.ID_COLUMN)); + } + } else { + Log.w(TAG, "failed to query trash folder"); + } + } finally { + if (c != null) { + c.close(); + c = null; + } + } + + // sync folder first + syncFolder(); + + // for note existing in database + try { + c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, + "(type=? AND parent_id<>?)", new String[] { + String.valueOf(Notes.TYPE_NOTE), String.valueOf(Notes.ID_TRASH_FOLER) + }, NoteColumns.TYPE + " DESC"); + if (c != null) { + while (c.moveToNext()) { + gid = c.getString(SqlNote.GTASK_ID_COLUMN); + node = mGTaskHashMap.get(gid); + if (node != null) { + mGTaskHashMap.remove(gid); + mGidToNid.put(gid, c.getLong(SqlNote.ID_COLUMN)); + mNidToGid.put(c.getLong(SqlNote.ID_COLUMN), gid); + syncType = node.getSyncAction(c); + } else { + if (c.getString(SqlNote.GTASK_ID_COLUMN).trim().length() == 0) { + // local add + syncType = Node.SYNC_ACTION_ADD_REMOTE; + } else { + // remote delete + syncType = Node.SYNC_ACTION_DEL_LOCAL; + } + } + doContentSync(syncType, node, c); + } + } else { + Log.w(TAG, "failed to query existing note in database"); + } + + } finally { + if (c != null) { + c.close(); + c = null; + } + } + + // go through remaining items + Iterator> iter = mGTaskHashMap.entrySet().iterator(); + while (iter.hasNext()) { + Map.Entry entry = iter.next(); + node = entry.getValue(); + doContentSync(Node.SYNC_ACTION_ADD_LOCAL, node, null); + } + + // mCancelled can be set by another thread, so we neet to check one by + // one + // clear local delete table + if (!mCancelled) { + if (!DataUtils.batchDeleteNotes(mContentResolver, mLocalDeleteIdMap)) { + throw new ActionFailureException("failed to batch-delete local deleted notes"); + } + } + + // refresh local sync id + if (!mCancelled) { + GTaskClient.getInstance().commitUpdate(); + refreshLocalSyncId(); + } + + } + + private void syncFolder() throws NetworkFailureException { + Cursor c = null; + String gid; + Node node; + int syncType; + + if (mCancelled) { + return; + } + + // for root folder + try { + c = mContentResolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, + Notes.ID_ROOT_FOLDER), SqlNote.PROJECTION_NOTE, null, null, null); + if (c != null) { + c.moveToNext(); + gid = c.getString(SqlNote.GTASK_ID_COLUMN); + node = mGTaskHashMap.get(gid); + if (node != null) { + mGTaskHashMap.remove(gid); + mGidToNid.put(gid, (long) Notes.ID_ROOT_FOLDER); + mNidToGid.put((long) Notes.ID_ROOT_FOLDER, gid); + // for system folder, only update remote name if necessary + if (!node.getName().equals( + GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_DEFAULT)) + doContentSync(Node.SYNC_ACTION_UPDATE_REMOTE, node, c); + } else { + doContentSync(Node.SYNC_ACTION_ADD_REMOTE, node, c); + } + } else { + Log.w(TAG, "failed to query root folder"); + } + } finally { + if (c != null) { + c.close(); + c = null; + } + } + + // for call-note folder + try { + c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, "(_id=?)", + new String[] { + String.valueOf(Notes.ID_CALL_RECORD_FOLDER) + }, null); + if (c != null) { + if (c.moveToNext()) { + gid = c.getString(SqlNote.GTASK_ID_COLUMN); + node = mGTaskHashMap.get(gid); + if (node != null) { + mGTaskHashMap.remove(gid); + mGidToNid.put(gid, (long) Notes.ID_CALL_RECORD_FOLDER); + mNidToGid.put((long) Notes.ID_CALL_RECORD_FOLDER, gid); + // for system folder, only update remote name if + // necessary + if (!node.getName().equals( + GTaskStringUtils.MIUI_FOLDER_PREFFIX + + GTaskStringUtils.FOLDER_CALL_NOTE)) + doContentSync(Node.SYNC_ACTION_UPDATE_REMOTE, node, c); + } else { + doContentSync(Node.SYNC_ACTION_ADD_REMOTE, node, c); + } + } + } else { + Log.w(TAG, "failed to query call note folder"); + } + } finally { + if (c != null) { + c.close(); + c = null; + } + } + + // for local existing folders + try { + c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, + "(type=? AND parent_id<>?)", new String[] { + String.valueOf(Notes.TYPE_FOLDER), String.valueOf(Notes.ID_TRASH_FOLER) + }, NoteColumns.TYPE + " DESC"); + if (c != null) { + while (c.moveToNext()) { + gid = c.getString(SqlNote.GTASK_ID_COLUMN); + node = mGTaskHashMap.get(gid); + if (node != null) { + mGTaskHashMap.remove(gid); + mGidToNid.put(gid, c.getLong(SqlNote.ID_COLUMN)); + mNidToGid.put(c.getLong(SqlNote.ID_COLUMN), gid); + syncType = node.getSyncAction(c); + } else { + if (c.getString(SqlNote.GTASK_ID_COLUMN).trim().length() == 0) { + // local add + syncType = Node.SYNC_ACTION_ADD_REMOTE; + } else { + // remote delete + syncType = Node.SYNC_ACTION_DEL_LOCAL; + } + } + doContentSync(syncType, node, c); + } + } else { + Log.w(TAG, "failed to query existing folder"); + } + } finally { + if (c != null) { + c.close(); + c = null; + } + } + + // for remote add folders + Iterator> iter = mGTaskListHashMap.entrySet().iterator(); + while (iter.hasNext()) { + Map.Entry entry = iter.next(); + gid = entry.getKey(); + node = entry.getValue(); + if (mGTaskHashMap.containsKey(gid)) { + mGTaskHashMap.remove(gid); + doContentSync(Node.SYNC_ACTION_ADD_LOCAL, node, null); + } + } + + if (!mCancelled) + GTaskClient.getInstance().commitUpdate(); + } + + private void doContentSync(int syncType, Node node, Cursor c) throws NetworkFailureException { + if (mCancelled) { + return; + } + + MetaData meta; + switch (syncType) { + case Node.SYNC_ACTION_ADD_LOCAL: + addLocalNode(node); + break; + case Node.SYNC_ACTION_ADD_REMOTE: + addRemoteNode(node, c); + break; + case Node.SYNC_ACTION_DEL_LOCAL: + meta = mMetaHashMap.get(c.getString(SqlNote.GTASK_ID_COLUMN)); + if (meta != null) { + GTaskClient.getInstance().deleteNode(meta); + } + mLocalDeleteIdMap.add(c.getLong(SqlNote.ID_COLUMN)); + break; + case Node.SYNC_ACTION_DEL_REMOTE: + meta = mMetaHashMap.get(node.getGid()); + if (meta != null) { + GTaskClient.getInstance().deleteNode(meta); + } + GTaskClient.getInstance().deleteNode(node); + break; + case Node.SYNC_ACTION_UPDATE_LOCAL: + updateLocalNode(node, c); + break; + case Node.SYNC_ACTION_UPDATE_REMOTE: + updateRemoteNode(node, c); + break; + case Node.SYNC_ACTION_UPDATE_CONFLICT: + // merging both modifications maybe a good idea + // right now just use local update simply + updateRemoteNode(node, c); + break; + case Node.SYNC_ACTION_NONE: + break; + case Node.SYNC_ACTION_ERROR: + default: + throw new ActionFailureException("unkown sync action type"); + } + } + + private void addLocalNode(Node node) throws NetworkFailureException { + if (mCancelled) { + return; + } + + SqlNote sqlNote; + if (node instanceof TaskList) { + if (node.getName().equals( + GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_DEFAULT)) { + sqlNote = new SqlNote(mContext, Notes.ID_ROOT_FOLDER); + } else if (node.getName().equals( + GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_CALL_NOTE)) { + sqlNote = new SqlNote(mContext, Notes.ID_CALL_RECORD_FOLDER); + } else { + sqlNote = new SqlNote(mContext); + sqlNote.setContent(node.getLocalJSONFromContent()); + sqlNote.setParentId(Notes.ID_ROOT_FOLDER); + } + } else { + sqlNote = new SqlNote(mContext); + JSONObject js = node.getLocalJSONFromContent(); + try { + if (js.has(GTaskStringUtils.META_HEAD_NOTE)) { + JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + if (note.has(NoteColumns.ID)) { + long id = note.getLong(NoteColumns.ID); + if (DataUtils.existInNoteDatabase(mContentResolver, id)) { + // the id is not available, have to create a new one + note.remove(NoteColumns.ID); + } + } + } + + if (js.has(GTaskStringUtils.META_HEAD_DATA)) { + JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA); + for (int i = 0; i < dataArray.length(); i++) { + JSONObject data = dataArray.getJSONObject(i); + if (data.has(DataColumns.ID)) { + long dataId = data.getLong(DataColumns.ID); + if (DataUtils.existInDataDatabase(mContentResolver, dataId)) { + // the data id is not available, have to create + // a new one + data.remove(DataColumns.ID); + } + } + } + + } + } catch (JSONException e) { + Log.w(TAG, e.toString()); + e.printStackTrace(); + } + sqlNote.setContent(js); + + Long parentId = mGidToNid.get(((Task) node).getParent().getGid()); + if (parentId == null) { + Log.e(TAG, "cannot find task's parent id locally"); + throw new ActionFailureException("cannot add local node"); + } + sqlNote.setParentId(parentId.longValue()); + } + + // create the local node + sqlNote.setGtaskId(node.getGid()); + sqlNote.commit(false); + + // update gid-nid mapping + mGidToNid.put(node.getGid(), sqlNote.getId()); + mNidToGid.put(sqlNote.getId(), node.getGid()); + + // update meta + updateRemoteMeta(node.getGid(), sqlNote); + } + + private void updateLocalNode(Node node, Cursor c) throws NetworkFailureException { + if (mCancelled) { + return; + } + + SqlNote sqlNote; + // update the note locally + sqlNote = new SqlNote(mContext, c); + sqlNote.setContent(node.getLocalJSONFromContent()); + + Long parentId = (node instanceof Task) ? mGidToNid.get(((Task) node).getParent().getGid()) + : new Long(Notes.ID_ROOT_FOLDER); + if (parentId == null) { + Log.e(TAG, "cannot find task's parent id locally"); + throw new ActionFailureException("cannot update local node"); + } + sqlNote.setParentId(parentId.longValue()); + sqlNote.commit(true); + + // update meta info + updateRemoteMeta(node.getGid(), sqlNote); + } + + private void addRemoteNode(Node node, Cursor c) throws NetworkFailureException { + if (mCancelled) { + return; + } + + SqlNote sqlNote = new SqlNote(mContext, c); + Node n; + + // update remotely + if (sqlNote.isNoteType()) { + Task task = new Task(); + task.setContentByLocalJSON(sqlNote.getContent()); + + String parentGid = mNidToGid.get(sqlNote.getParentId()); + if (parentGid == null) { + Log.e(TAG, "cannot find task's parent tasklist"); + throw new ActionFailureException("cannot add remote task"); + } + mGTaskListHashMap.get(parentGid).addChildTask(task); + + GTaskClient.getInstance().createTask(task); + n = (Node) task; + + // add meta + updateRemoteMeta(task.getGid(), sqlNote); + } else { + TaskList tasklist = null; + + // we need to skip folder if it has already existed + String folderName = GTaskStringUtils.MIUI_FOLDER_PREFFIX; + if (sqlNote.getId() == Notes.ID_ROOT_FOLDER) + folderName += GTaskStringUtils.FOLDER_DEFAULT; + else if (sqlNote.getId() == Notes.ID_CALL_RECORD_FOLDER) + folderName += GTaskStringUtils.FOLDER_CALL_NOTE; + else + folderName += sqlNote.getSnippet(); + + Iterator> iter = mGTaskListHashMap.entrySet().iterator(); + while (iter.hasNext()) { + Map.Entry entry = iter.next(); + String gid = entry.getKey(); + TaskList list = entry.getValue(); + + if (list.getName().equals(folderName)) { + tasklist = list; + if (mGTaskHashMap.containsKey(gid)) { + mGTaskHashMap.remove(gid); + } + break; + } + } + + // no match we can add now + if (tasklist == null) { + tasklist = new TaskList(); + tasklist.setContentByLocalJSON(sqlNote.getContent()); + GTaskClient.getInstance().createTaskList(tasklist); + mGTaskListHashMap.put(tasklist.getGid(), tasklist); + } + n = (Node) tasklist; + } + + // update local note + sqlNote.setGtaskId(n.getGid()); + sqlNote.commit(false); + sqlNote.resetLocalModified(); + sqlNote.commit(true); + + // gid-id mapping + mGidToNid.put(n.getGid(), sqlNote.getId()); + mNidToGid.put(sqlNote.getId(), n.getGid()); + } + + private void updateRemoteNode(Node node, Cursor c) throws NetworkFailureException { + if (mCancelled) { + return; + } + + SqlNote sqlNote = new SqlNote(mContext, c); + + // update remotely + node.setContentByLocalJSON(sqlNote.getContent()); + GTaskClient.getInstance().addUpdateNode(node); + + // update meta + updateRemoteMeta(node.getGid(), sqlNote); + + // move task if necessary + if (sqlNote.isNoteType()) { + Task task = (Task) node; + TaskList preParentList = task.getParent(); + + String curParentGid = mNidToGid.get(sqlNote.getParentId()); + if (curParentGid == null) { + Log.e(TAG, "cannot find task's parent tasklist"); + throw new ActionFailureException("cannot update remote task"); + } + TaskList curParentList = mGTaskListHashMap.get(curParentGid); + + if (preParentList != curParentList) { + preParentList.removeChildTask(task); + curParentList.addChildTask(task); + GTaskClient.getInstance().moveTask(task, preParentList, curParentList); + } + } + + // clear local modified flag + sqlNote.resetLocalModified(); + sqlNote.commit(true); + } + + private void updateRemoteMeta(String gid, SqlNote sqlNote) throws NetworkFailureException { + if (sqlNote != null && sqlNote.isNoteType()) { + MetaData metaData = mMetaHashMap.get(gid); + if (metaData != null) { + metaData.setMeta(gid, sqlNote.getContent()); + GTaskClient.getInstance().addUpdateNode(metaData); + } else { + metaData = new MetaData(); + metaData.setMeta(gid, sqlNote.getContent()); + mMetaList.addChildTask(metaData); + mMetaHashMap.put(gid, metaData); + GTaskClient.getInstance().createTask(metaData); + } + } + } + + private void refreshLocalSyncId() throws NetworkFailureException { + if (mCancelled) { + return; + } + + // get the latest gtask list + mGTaskHashMap.clear(); + mGTaskListHashMap.clear(); + mMetaHashMap.clear(); + initGTaskList(); + + Cursor c = null; + try { + c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, + "(type<>? AND parent_id<>?)", new String[] { + String.valueOf(Notes.TYPE_SYSTEM), String.valueOf(Notes.ID_TRASH_FOLER) + }, NoteColumns.TYPE + " DESC"); + if (c != null) { + while (c.moveToNext()) { + String gid = c.getString(SqlNote.GTASK_ID_COLUMN); + Node node = mGTaskHashMap.get(gid); + if (node != null) { + mGTaskHashMap.remove(gid); + ContentValues values = new ContentValues(); + values.put(NoteColumns.SYNC_ID, node.getLastModified()); + mContentResolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, + c.getLong(SqlNote.ID_COLUMN)), values, null, null); + } else { + Log.e(TAG, "something is missed"); + throw new ActionFailureException( + "some local items don't have gid after sync"); + } + } + } else { + Log.w(TAG, "failed to query local note to refresh sync id"); + } + } finally { + if (c != null) { + c.close(); + c = null; + } + } + } + + public String getSyncAccount() { + return GTaskClient.getInstance().getSyncAccount().name; + } + + public void cancelSync() { + mCancelled = true; + } +} diff --git a/src/app/src/net/micode/notes/gtask/remote/GTaskSyncService.java b/src/app/src/net/micode/notes/gtask/remote/GTaskSyncService.java new file mode 100644 index 0000000..cca36f7 --- /dev/null +++ b/src/app/src/net/micode/notes/gtask/remote/GTaskSyncService.java @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.remote; + +import android.app.Activity; +import android.app.Service; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.os.IBinder; + +public class GTaskSyncService extends Service { + public final static String ACTION_STRING_NAME = "sync_action_type"; + + public final static int ACTION_START_SYNC = 0; + + public final static int ACTION_CANCEL_SYNC = 1; + + public final static int ACTION_INVALID = 2; + + public final static String GTASK_SERVICE_BROADCAST_NAME = "net.micode.notes.gtask.remote.gtask_sync_service"; + + public final static String GTASK_SERVICE_BROADCAST_IS_SYNCING = "isSyncing"; + + public final static String GTASK_SERVICE_BROADCAST_PROGRESS_MSG = "progressMsg"; + + private static GTaskASyncTask mSyncTask = null; + + private static String mSyncProgress = ""; + + private void startSync() { + if (mSyncTask == null) { + mSyncTask = new GTaskASyncTask(this, new GTaskASyncTask.OnCompleteListener() { + public void onComplete() { + mSyncTask = null; + sendBroadcast(""); + stopSelf(); + } + }); + sendBroadcast(""); + mSyncTask.execute(); + } + } + + private void cancelSync() { + if (mSyncTask != null) { + mSyncTask.cancelSync(); + } + } + + @Override + public void onCreate() { + mSyncTask = null; + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + Bundle bundle = intent.getExtras(); + if (bundle != null && bundle.containsKey(ACTION_STRING_NAME)) { + switch (bundle.getInt(ACTION_STRING_NAME, ACTION_INVALID)) { + case ACTION_START_SYNC: + startSync(); + break; + case ACTION_CANCEL_SYNC: + cancelSync(); + break; + default: + break; + } + return START_STICKY; + } + return super.onStartCommand(intent, flags, startId); + } + + @Override + public void onLowMemory() { + if (mSyncTask != null) { + mSyncTask.cancelSync(); + } + } + + public IBinder onBind(Intent intent) { + return null; + } + + public void sendBroadcast(String msg) { + mSyncProgress = msg; + Intent intent = new Intent(GTASK_SERVICE_BROADCAST_NAME); + intent.putExtra(GTASK_SERVICE_BROADCAST_IS_SYNCING, mSyncTask != null); + intent.putExtra(GTASK_SERVICE_BROADCAST_PROGRESS_MSG, msg); + sendBroadcast(intent); + } + + public static void startSync(Activity activity) { + GTaskManager.getInstance().setActivityContext(activity); + Intent intent = new Intent(activity, GTaskSyncService.class); + intent.putExtra(GTaskSyncService.ACTION_STRING_NAME, GTaskSyncService.ACTION_START_SYNC); + activity.startService(intent); + } + + public static void cancelSync(Context context) { + Intent intent = new Intent(context, GTaskSyncService.class); + intent.putExtra(GTaskSyncService.ACTION_STRING_NAME, GTaskSyncService.ACTION_CANCEL_SYNC); + context.startService(intent); + } + + public static boolean isSyncing() { + return mSyncTask != null; + } + + public static String getProgressString() { + return mSyncProgress; + } +} diff --git a/src/app/src/net/micode/notes/model/Note.java b/src/app/src/net/micode/notes/model/Note.java new file mode 100644 index 0000000..6706cf6 --- /dev/null +++ b/src/app/src/net/micode/notes/model/Note.java @@ -0,0 +1,253 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.model; +import android.content.ContentProviderOperation; +import android.content.ContentProviderResult; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.Context; +import android.content.OperationApplicationException; +import android.net.Uri; +import android.os.RemoteException; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.CallNote; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.data.Notes.TextNote; + +import java.util.ArrayList; + + +public class Note { + private ContentValues mNoteDiffValues; + private NoteData mNoteData; + private static final String TAG = "Note"; + /** + * Create a new note id for adding a new note to databases + */ + public static synchronized long getNewNoteId(Context context, long folderId) { + // Create a new note in the database + ContentValues values = new ContentValues(); + long createdTime = System.currentTimeMillis(); + values.put(NoteColumns.CREATED_DATE, createdTime); + values.put(NoteColumns.MODIFIED_DATE, createdTime); + values.put(NoteColumns.TYPE, Notes.TYPE_NOTE); + values.put(NoteColumns.LOCAL_MODIFIED, 1); + values.put(NoteColumns.PARENT_ID, folderId); + Uri uri = context.getContentResolver().insert(Notes.CONTENT_NOTE_URI, values); + + long noteId = 0; + try { + noteId = Long.valueOf(uri.getPathSegments().get(1)); + } catch (NumberFormatException e) { + Log.e(TAG, "Get note id error :" + e.toString()); + noteId = 0; + } + if (noteId == -1) { + throw new IllegalStateException("Wrong note id:" + noteId); + } + return noteId; + } + + public Note() { + mNoteDiffValues = new ContentValues(); + mNoteData = new NoteData(); + } + + public void setNoteValue(String key, String value) { + mNoteDiffValues.put(key, value); + mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); + mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); + } + + public void setTextData(String key, String value) { + mNoteData.setTextData(key, value); + } + + public void setTextDataId(long id) { + mNoteData.setTextDataId(id); + } + + public long getTextDataId() { + return mNoteData.mTextDataId; + } + + public void setCallDataId(long id) { + mNoteData.setCallDataId(id); + } + + public void setCallData(String key, String value) { + mNoteData.setCallData(key, value); + } + + public boolean isLocalModified() { + return mNoteDiffValues.size() > 0 || mNoteData.isLocalModified(); + } + + public boolean syncNote(Context context, long noteId) { + if (noteId <= 0) { + throw new IllegalArgumentException("Wrong note id:" + noteId); + } + + if (!isLocalModified()) { + return true; + } + + /** + * In theory, once data changed, the note should be updated on {@link NoteColumns#LOCAL_MODIFIED} and + * {@link NoteColumns#MODIFIED_DATE}. For data safety, though update note fails, we also update the + * note data info + */ + if (context.getContentResolver().update( + ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), mNoteDiffValues, null, + null) == 0) { + Log.e(TAG, "Update note error, should not happen"); + // Do not return, fall through + } + mNoteDiffValues.clear(); + + if (mNoteData.isLocalModified() + && (mNoteData.pushIntoContentResolver(context, noteId) == null)) { + return false; + } + + return true; + } + + private class NoteData { + private long mTextDataId; + + private ContentValues mTextDataValues; + + private long mCallDataId; + + private ContentValues mCallDataValues; + + private static final String TAG = "NoteData"; + + public NoteData() { + mTextDataValues = new ContentValues(); + mCallDataValues = new ContentValues(); + mTextDataId = 0; + mCallDataId = 0; + } + + boolean isLocalModified() { + return mTextDataValues.size() > 0 || mCallDataValues.size() > 0; + } + + void setTextDataId(long id) { + if(id <= 0) { + throw new IllegalArgumentException("Text data id should larger than 0"); + } + mTextDataId = id; + } + + void setCallDataId(long id) { + if (id <= 0) { + throw new IllegalArgumentException("Call data id should larger than 0"); + } + mCallDataId = id; + } + + void setCallData(String key, String value) { + mCallDataValues.put(key, value); + mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); + mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); + } + + void setTextData(String key, String value) { + mTextDataValues.put(key, value); + mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); + mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); + } + + Uri pushIntoContentResolver(Context context, long noteId) { + /** + * Check for safety + */ + if (noteId <= 0) { + throw new IllegalArgumentException("Wrong note id:" + noteId); + } + + ArrayList operationList = new ArrayList(); + ContentProviderOperation.Builder builder = null; + + if(mTextDataValues.size() > 0) { + mTextDataValues.put(DataColumns.NOTE_ID, noteId); + if (mTextDataId == 0) { + mTextDataValues.put(DataColumns.MIME_TYPE, TextNote.CONTENT_ITEM_TYPE); + Uri uri = context.getContentResolver().insert(Notes.CONTENT_DATA_URI, + mTextDataValues); + try { + setTextDataId(Long.valueOf(uri.getPathSegments().get(1))); + } catch (NumberFormatException e) { + Log.e(TAG, "Insert new text data fail with noteId" + noteId); + mTextDataValues.clear(); + return null; + } + } else { + builder = ContentProviderOperation.newUpdate(ContentUris.withAppendedId( + Notes.CONTENT_DATA_URI, mTextDataId)); + builder.withValues(mTextDataValues); + operationList.add(builder.build()); + } + mTextDataValues.clear(); + } + + if(mCallDataValues.size() > 0) { + mCallDataValues.put(DataColumns.NOTE_ID, noteId); + if (mCallDataId == 0) { + mCallDataValues.put(DataColumns.MIME_TYPE, CallNote.CONTENT_ITEM_TYPE); + Uri uri = context.getContentResolver().insert(Notes.CONTENT_DATA_URI, + mCallDataValues); + try { + setCallDataId(Long.valueOf(uri.getPathSegments().get(1))); + } catch (NumberFormatException e) { + Log.e(TAG, "Insert new call data fail with noteId" + noteId); + mCallDataValues.clear(); + return null; + } + } else { + builder = ContentProviderOperation.newUpdate(ContentUris.withAppendedId( + Notes.CONTENT_DATA_URI, mCallDataId)); + builder.withValues(mCallDataValues); + operationList.add(builder.build()); + } + mCallDataValues.clear(); + } + + if (operationList.size() > 0) { + try { + ContentProviderResult[] results = context.getContentResolver().applyBatch( + Notes.AUTHORITY, operationList); + return (results == null || results.length == 0 || results[0] == null) ? null + : ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId); + } catch (RemoteException e) { + Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); + return null; + } catch (OperationApplicationException e) { + Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); + return null; + } + } + return null; + } + } +} diff --git a/src/net/micode/notes/model/WorkingNote.java b/src/app/src/net/micode/notes/model/WorkingNote.java similarity index 100% rename from src/net/micode/notes/model/WorkingNote.java rename to src/app/src/net/micode/notes/model/WorkingNote.java diff --git a/src/app/src/net/micode/notes/tool/BackupUtils.java b/src/app/src/net/micode/notes/tool/BackupUtils.java new file mode 100644 index 0000000..39f6ec4 --- /dev/null +++ b/src/app/src/net/micode/notes/tool/BackupUtils.java @@ -0,0 +1,344 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.tool; + +import android.content.Context; +import android.database.Cursor; +import android.os.Environment; +import android.text.TextUtils; +import android.text.format.DateFormat; +import android.util.Log; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.DataConstants; +import net.micode.notes.data.Notes.NoteColumns; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.PrintStream; + + +public class BackupUtils { + private static final String TAG = "BackupUtils"; + // Singleton stuff + private static BackupUtils sInstance; + + public static synchronized BackupUtils getInstance(Context context) { + if (sInstance == null) { + sInstance = new BackupUtils(context); + } + return sInstance; + } + + /** + * Following states are signs to represents backup or restore + * status + */ + // Currently, the sdcard is not mounted + public static final int STATE_SD_CARD_UNMOUONTED = 0; + // The backup file not exist + public static final int STATE_BACKUP_FILE_NOT_EXIST = 1; + // The data is not well formated, may be changed by other programs + public static final int STATE_DATA_DESTROIED = 2; + // Some run-time exception which causes restore or backup fails + public static final int STATE_SYSTEM_ERROR = 3; + // Backup or restore success + public static final int STATE_SUCCESS = 4; + + private TextExport mTextExport; + + private BackupUtils(Context context) { + mTextExport = new TextExport(context); + } + + private static boolean externalStorageAvailable() { + return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()); + } + + public int exportToText() { + return mTextExport.exportToText(); + } + + public String getExportedTextFileName() { + return mTextExport.mFileName; + } + + public String getExportedTextFileDir() { + return mTextExport.mFileDirectory; + } + + private static class TextExport { + private static final String[] NOTE_PROJECTION = { + NoteColumns.ID, + NoteColumns.MODIFIED_DATE, + NoteColumns.SNIPPET, + NoteColumns.TYPE + }; + + private static final int NOTE_COLUMN_ID = 0; + + private static final int NOTE_COLUMN_MODIFIED_DATE = 1; + + private static final int NOTE_COLUMN_SNIPPET = 2; + + private static final String[] DATA_PROJECTION = { + DataColumns.CONTENT, + DataColumns.MIME_TYPE, + DataColumns.DATA1, + DataColumns.DATA2, + DataColumns.DATA3, + DataColumns.DATA4, + }; + + private static final int DATA_COLUMN_CONTENT = 0; + + private static final int DATA_COLUMN_MIME_TYPE = 1; + + private static final int DATA_COLUMN_CALL_DATE = 2; + + private static final int DATA_COLUMN_PHONE_NUMBER = 4; + + private final String [] TEXT_FORMAT; + private static final int FORMAT_FOLDER_NAME = 0; + private static final int FORMAT_NOTE_DATE = 1; + private static final int FORMAT_NOTE_CONTENT = 2; + + private Context mContext; + private String mFileName; + private String mFileDirectory; + + public TextExport(Context context) { + TEXT_FORMAT = context.getResources().getStringArray(R.array.format_for_exported_note); + mContext = context; + mFileName = ""; + mFileDirectory = ""; + } + + private String getFormat(int id) { + return TEXT_FORMAT[id]; + } + + /** + * Export the folder identified by folder id to text + */ + private void exportFolderToText(String folderId, PrintStream ps) { + // Query notes belong to this folder + Cursor notesCursor = mContext.getContentResolver().query(Notes.CONTENT_NOTE_URI, + NOTE_PROJECTION, NoteColumns.PARENT_ID + "=?", new String[] { + folderId + }, null); + + if (notesCursor != null) { + if (notesCursor.moveToFirst()) { + do { + // Print note's last modified date + ps.println(String.format(getFormat(FORMAT_NOTE_DATE), DateFormat.format( + mContext.getString(R.string.format_datetime_mdhm), + notesCursor.getLong(NOTE_COLUMN_MODIFIED_DATE)))); + // Query data belong to this note + String noteId = notesCursor.getString(NOTE_COLUMN_ID); + exportNoteToText(noteId, ps); + } while (notesCursor.moveToNext()); + } + notesCursor.close(); + } + } + + /** + * Export note identified by id to a print stream + */ + private void exportNoteToText(String noteId, PrintStream ps) { + Cursor dataCursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI, + DATA_PROJECTION, DataColumns.NOTE_ID + "=?", new String[] { + noteId + }, null); + + if (dataCursor != null) { + if (dataCursor.moveToFirst()) { + do { + String mimeType = dataCursor.getString(DATA_COLUMN_MIME_TYPE); + if (DataConstants.CALL_NOTE.equals(mimeType)) { + // Print phone number + String phoneNumber = dataCursor.getString(DATA_COLUMN_PHONE_NUMBER); + long callDate = dataCursor.getLong(DATA_COLUMN_CALL_DATE); + String location = dataCursor.getString(DATA_COLUMN_CONTENT); + + if (!TextUtils.isEmpty(phoneNumber)) { + ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), + phoneNumber)); + } + // Print call date + ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), DateFormat + .format(mContext.getString(R.string.format_datetime_mdhm), + callDate))); + // Print call attachment location + if (!TextUtils.isEmpty(location)) { + ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), + location)); + } + } else if (DataConstants.NOTE.equals(mimeType)) { + String content = dataCursor.getString(DATA_COLUMN_CONTENT); + if (!TextUtils.isEmpty(content)) { + ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), + content)); + } + } + } while (dataCursor.moveToNext()); + } + dataCursor.close(); + } + // print a line separator between note + try { + ps.write(new byte[] { + Character.LINE_SEPARATOR, Character.LETTER_NUMBER + }); + } catch (IOException e) { + Log.e(TAG, e.toString()); + } + } + + /** + * Note will be exported as text which is user readable + */ + public int exportToText() { + if (!externalStorageAvailable()) { + Log.d(TAG, "Media was not mounted"); + return STATE_SD_CARD_UNMOUONTED; + } + + PrintStream ps = getExportToTextPrintStream(); + if (ps == null) { + Log.e(TAG, "get print stream error"); + return STATE_SYSTEM_ERROR; + } + // First export folder and its notes + Cursor folderCursor = mContext.getContentResolver().query( + Notes.CONTENT_NOTE_URI, + NOTE_PROJECTION, + "(" + NoteColumns.TYPE + "=" + Notes.TYPE_FOLDER + " AND " + + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER + ") OR " + + NoteColumns.ID + "=" + Notes.ID_CALL_RECORD_FOLDER, null, null); + + if (folderCursor != null) { + if (folderCursor.moveToFirst()) { + do { + // Print folder's name + String folderName = ""; + if(folderCursor.getLong(NOTE_COLUMN_ID) == Notes.ID_CALL_RECORD_FOLDER) { + folderName = mContext.getString(R.string.call_record_folder_name); + } else { + folderName = folderCursor.getString(NOTE_COLUMN_SNIPPET); + } + if (!TextUtils.isEmpty(folderName)) { + ps.println(String.format(getFormat(FORMAT_FOLDER_NAME), folderName)); + } + String folderId = folderCursor.getString(NOTE_COLUMN_ID); + exportFolderToText(folderId, ps); + } while (folderCursor.moveToNext()); + } + folderCursor.close(); + } + + // Export notes in root's folder + Cursor noteCursor = mContext.getContentResolver().query( + Notes.CONTENT_NOTE_URI, + NOTE_PROJECTION, + NoteColumns.TYPE + "=" + +Notes.TYPE_NOTE + " AND " + NoteColumns.PARENT_ID + + "=0", null, null); + + if (noteCursor != null) { + if (noteCursor.moveToFirst()) { + do { + ps.println(String.format(getFormat(FORMAT_NOTE_DATE), DateFormat.format( + mContext.getString(R.string.format_datetime_mdhm), + noteCursor.getLong(NOTE_COLUMN_MODIFIED_DATE)))); + // Query data belong to this note + String noteId = noteCursor.getString(NOTE_COLUMN_ID); + exportNoteToText(noteId, ps); + } while (noteCursor.moveToNext()); + } + noteCursor.close(); + } + ps.close(); + + return STATE_SUCCESS; + } + + /** + * Get a print stream pointed to the file {@generateExportedTextFile} + */ + private PrintStream getExportToTextPrintStream() { + File file = generateFileMountedOnSDcard(mContext, R.string.file_path, + R.string.file_name_txt_format); + if (file == null) { + Log.e(TAG, "create file to exported failed"); + return null; + } + mFileName = file.getName(); + mFileDirectory = mContext.getString(R.string.file_path); + PrintStream ps = null; + try { + FileOutputStream fos = new FileOutputStream(file); + ps = new PrintStream(fos); + } catch (FileNotFoundException e) { + e.printStackTrace(); + return null; + } catch (NullPointerException e) { + e.printStackTrace(); + return null; + } + return ps; + } + } + + /** + * Generate the text file to store imported data + */ + private static File generateFileMountedOnSDcard(Context context, int filePathResId, int fileNameFormatResId) { + StringBuilder sb = new StringBuilder(); + sb.append(Environment.getExternalStorageDirectory()); + sb.append(context.getString(filePathResId)); + File filedir = new File(sb.toString()); + sb.append(context.getString( + fileNameFormatResId, + DateFormat.format(context.getString(R.string.format_date_ymd), + System.currentTimeMillis()))); + File file = new File(sb.toString()); + + try { + if (!filedir.exists()) { + filedir.mkdir(); + } + if (!file.exists()) { + file.createNewFile(); + } + return file; + } catch (SecurityException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + return null; + } +} + + diff --git a/src/app/src/net/micode/notes/tool/DataUtils.java b/src/app/src/net/micode/notes/tool/DataUtils.java new file mode 100644 index 0000000..2a14982 --- /dev/null +++ b/src/app/src/net/micode/notes/tool/DataUtils.java @@ -0,0 +1,295 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.tool; + +import android.content.ContentProviderOperation; +import android.content.ContentProviderResult; +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.OperationApplicationException; +import android.database.Cursor; +import android.os.RemoteException; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.CallNote; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.ui.NotesListAdapter.AppWidgetAttribute; + +import java.util.ArrayList; +import java.util.HashSet; + + +public class DataUtils { + public static final String TAG = "DataUtils"; + public static boolean batchDeleteNotes(ContentResolver resolver, HashSet ids) { + if (ids == null) { + Log.d(TAG, "the ids is null"); + return true; + } + if (ids.size() == 0) { + Log.d(TAG, "no id is in the hashset"); + return true; + } + + ArrayList operationList = new ArrayList(); + for (long id : ids) { + if(id == Notes.ID_ROOT_FOLDER) { + Log.e(TAG, "Don't delete system folder root"); + continue; + } + ContentProviderOperation.Builder builder = ContentProviderOperation + .newDelete(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id)); + operationList.add(builder.build()); + } + try { + ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList); + if (results == null || results.length == 0 || results[0] == null) { + Log.d(TAG, "delete notes failed, ids:" + ids.toString()); + return false; + } + return true; + } catch (RemoteException e) { + Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); + } catch (OperationApplicationException e) { + Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); + } + return false; + } + + public static void moveNoteToFoler(ContentResolver resolver, long id, long srcFolderId, long desFolderId) { + ContentValues values = new ContentValues(); + values.put(NoteColumns.PARENT_ID, desFolderId); + values.put(NoteColumns.ORIGIN_PARENT_ID, srcFolderId); + values.put(NoteColumns.LOCAL_MODIFIED, 1); + resolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id), values, null, null); + } + + public static boolean batchMoveToFolder(ContentResolver resolver, HashSet ids, + long folderId) { + if (ids == null) { + Log.d(TAG, "the ids is null"); + return true; + } + + ArrayList operationList = new ArrayList(); + for (long id : ids) { + ContentProviderOperation.Builder builder = ContentProviderOperation + .newUpdate(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id)); + builder.withValue(NoteColumns.PARENT_ID, folderId); + builder.withValue(NoteColumns.LOCAL_MODIFIED, 1); + operationList.add(builder.build()); + } + + try { + ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList); + if (results == null || results.length == 0 || results[0] == null) { + Log.d(TAG, "delete notes failed, ids:" + ids.toString()); + return false; + } + return true; + } catch (RemoteException e) { + Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); + } catch (OperationApplicationException e) { + Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); + } + return false; + } + + /** + * Get the all folder count except system folders {@link Notes#TYPE_SYSTEM}} + */ + public static int getUserFolderCount(ContentResolver resolver) { + Cursor cursor =resolver.query(Notes.CONTENT_NOTE_URI, + new String[] { "COUNT(*)" }, + NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>?", + new String[] { String.valueOf(Notes.TYPE_FOLDER), String.valueOf(Notes.ID_TRASH_FOLER)}, + null); + + int count = 0; + if(cursor != null) { + if(cursor.moveToFirst()) { + try { + count = cursor.getInt(0); + } catch (IndexOutOfBoundsException e) { + Log.e(TAG, "get folder count failed:" + e.toString()); + } finally { + cursor.close(); + } + } + } + return count; + } + + public static boolean visibleInNoteDatabase(ContentResolver resolver, long noteId, int type) { + Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), + null, + NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER, + new String [] {String.valueOf(type)}, + null); + + boolean exist = false; + if (cursor != null) { + if (cursor.getCount() > 0) { + exist = true; + } + cursor.close(); + } + return exist; + } + + public static boolean existInNoteDatabase(ContentResolver resolver, long noteId) { + Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), + null, null, null, null); + + boolean exist = false; + if (cursor != null) { + if (cursor.getCount() > 0) { + exist = true; + } + cursor.close(); + } + return exist; + } + + public static boolean existInDataDatabase(ContentResolver resolver, long dataId) { + Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId), + null, null, null, null); + + boolean exist = false; + if (cursor != null) { + if (cursor.getCount() > 0) { + exist = true; + } + cursor.close(); + } + return exist; + } + + public static boolean checkVisibleFolderName(ContentResolver resolver, String name) { + Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, null, + NoteColumns.TYPE + "=" + Notes.TYPE_FOLDER + + " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER + + " AND " + NoteColumns.SNIPPET + "=?", + new String[] { name }, null); + boolean exist = false; + if(cursor != null) { + if(cursor.getCount() > 0) { + exist = true; + } + cursor.close(); + } + return exist; + } + + public static HashSet getFolderNoteWidget(ContentResolver resolver, long folderId) { + Cursor c = resolver.query(Notes.CONTENT_NOTE_URI, + new String[] { NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE }, + NoteColumns.PARENT_ID + "=?", + new String[] { String.valueOf(folderId) }, + null); + + HashSet set = null; + if (c != null) { + if (c.moveToFirst()) { + set = new HashSet(); + do { + try { + AppWidgetAttribute widget = new AppWidgetAttribute(); + widget.widgetId = c.getInt(0); + widget.widgetType = c.getInt(1); + set.add(widget); + } catch (IndexOutOfBoundsException e) { + Log.e(TAG, e.toString()); + } + } while (c.moveToNext()); + } + c.close(); + } + return set; + } + + public static String getCallNumberByNoteId(ContentResolver resolver, long noteId) { + Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, + new String [] { CallNote.PHONE_NUMBER }, + CallNote.NOTE_ID + "=? AND " + CallNote.MIME_TYPE + "=?", + new String [] { String.valueOf(noteId), CallNote.CONTENT_ITEM_TYPE }, + null); + + if (cursor != null && cursor.moveToFirst()) { + try { + return cursor.getString(0); + } catch (IndexOutOfBoundsException e) { + Log.e(TAG, "Get call number fails " + e.toString()); + } finally { + cursor.close(); + } + } + return ""; + } + + public static long getNoteIdByPhoneNumberAndCallDate(ContentResolver resolver, String phoneNumber, long callDate) { + Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, + new String [] { CallNote.NOTE_ID }, + CallNote.CALL_DATE + "=? AND " + CallNote.MIME_TYPE + "=? AND PHONE_NUMBERS_EQUAL(" + + CallNote.PHONE_NUMBER + ",?)", + new String [] { String.valueOf(callDate), CallNote.CONTENT_ITEM_TYPE, phoneNumber }, + null); + + if (cursor != null) { + if (cursor.moveToFirst()) { + try { + return cursor.getLong(0); + } catch (IndexOutOfBoundsException e) { + Log.e(TAG, "Get call note id fails " + e.toString()); + } + } + cursor.close(); + } + return 0; + } + + public static String getSnippetById(ContentResolver resolver, long noteId) { + Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, + new String [] { NoteColumns.SNIPPET }, + NoteColumns.ID + "=?", + new String [] { String.valueOf(noteId)}, + null); + + if (cursor != null) { + String snippet = ""; + if (cursor.moveToFirst()) { + snippet = cursor.getString(0); + } + cursor.close(); + return snippet; + } + throw new IllegalArgumentException("Note is not found with id: " + noteId); + } + + public static String getFormattedSnippet(String snippet) { + if (snippet != null) { + snippet = snippet.trim(); + int index = snippet.indexOf('\n'); + if (index != -1) { + snippet = snippet.substring(0, index); + } + } + return snippet; + } +} diff --git a/doc/精读报告/tool/GTaskStringUtils.doc b/src/app/src/net/micode/notes/tool/GTaskStringUtils.java similarity index 50% rename from doc/精读报告/tool/GTaskStringUtils.doc rename to src/app/src/net/micode/notes/tool/GTaskStringUtils.java index a147377..666b729 100644 --- a/doc/精读报告/tool/GTaskStringUtils.doc +++ b/src/app/src/net/micode/notes/tool/GTaskStringUtils.java @@ -18,98 +18,96 @@ package net.micode.notes.tool; public class GTaskStringUtils { - // 定义一些常量字符串,表示Google任务的JSON格式的属性名 + public final static String GTASK_JSON_ACTION_ID = "action_id"; - public final static String GTASK_JSON_ACTION_ID = "action_id"; // 动作ID + public final static String GTASK_JSON_ACTION_LIST = "action_list"; - public final static String GTASK_JSON_ACTION_LIST = "action_list"; // 动作列表 + public final static String GTASK_JSON_ACTION_TYPE = "action_type"; - 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_CREATE = "create"; // 创建动作 + public final static String GTASK_JSON_ACTION_TYPE_GETALL = "get_all"; - 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_MOVE = "move"; // 移动动作 + public final static String GTASK_JSON_ACTION_TYPE_UPDATE = "update"; - 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_CREATOR_ID = "creator_id"; // 创建者ID + public final static String GTASK_JSON_CHILD_ENTITY = "child_entity"; - 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_CLIENT_VERSION = "client_version"; // 客户端版本 + public final static String GTASK_JSON_COMPLETED = "completed"; - 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_CURRENT_LIST_ID = "current_list_id"; // 当前列表ID + public final static String GTASK_JSON_DEFAULT_LIST_ID = "default_list_id"; - public final static String GTASK_JSON_DEFAULT_LIST_ID = "default_list_id"; // 默认列表ID + public final static String GTASK_JSON_DELETED = "deleted"; - public final static String GTASK_JSON_DELETED = "deleted"; // 删除状态 + public final static String GTASK_JSON_DEST_LIST = "dest_list"; - 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 = "dest_parent"; // 目标父实体 + public final static String GTASK_JSON_DEST_PARENT_TYPE = "dest_parent_type"; - 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_DELTA = "entity_delta"; // 实体变化 + public final static String GTASK_JSON_ENTITY_TYPE = "entity_type"; - 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_GET_DELETED = "get_deleted"; // 获取删除状态 + public final static String GTASK_JSON_ID = "id"; - public final static String GTASK_JSON_ID = "id"; // ID + public final static String GTASK_JSON_INDEX = "index"; - public final static String GTASK_JSON_INDEX = "index"; // 索引 + public final static String GTASK_JSON_LAST_MODIFIED = "last_modified"; - 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_LATEST_SYNC_POINT = "latest_sync_point"; // 最新同步点 + public final static String GTASK_JSON_LIST_ID = "list_id"; - public final static String GTASK_JSON_LIST_ID = "list_id"; // 列表ID + public final static String GTASK_JSON_LISTS = "lists"; - public final static String GTASK_JSON_LISTS = "lists"; // 列表 + public final static String GTASK_JSON_NAME = "name"; - public final static String GTASK_JSON_NAME = "name"; // 名称 + public final static String GTASK_JSON_NEW_ID = "new_id"; - public final static String GTASK_JSON_NEW_ID = "new_id"; // 新ID + public final static String GTASK_JSON_NOTES = "notes"; - public final static String GTASK_JSON_NOTES = "notes"; // 便签 + public final static String GTASK_JSON_PARENT_ID = "parent_id"; - public final static String GTASK_JSON_PARENT_ID = "parent_id"; // 父ID + public final static String GTASK_JSON_PRIOR_SIBLING_ID = "prior_sibling_id"; - public final static String GTASK_JSON_PRIOR_SIBLING_ID = "prior_sibling_id"; // 前一个兄弟ID + public final static String GTASK_JSON_RESULTS = "results"; - public final static String GTASK_JSON_RESULTS = "results"; // 结果 + public final static String GTASK_JSON_SOURCE_LIST = "source_list"; - public final static String GTASK_JSON_SOURCE_LIST = "source_list"; // 源列表 + public final static String GTASK_JSON_TASKS = "tasks"; - public final static String GTASK_JSON_TASKS = "tasks"; // 任务 + public final static String GTASK_JSON_TYPE = "type"; - public final static String GTASK_JSON_TYPE = "type"; // 类型 + public final static String GTASK_JSON_TYPE_GROUP = "GROUP"; - public final static String GTASK_JSON_TYPE_GROUP = "GROUP"; // 组类型 + public final static String GTASK_JSON_TYPE_TASK = "TASK"; - public final static String GTASK_JSON_TYPE_TASK = "TASK"; // 任务类型 + public final static String GTASK_JSON_USER = "user"; - public final static String GTASK_JSON_USER = "user"; // 用户 + public final static String MIUI_FOLDER_PREFFIX = "[MIUI_Notes]"; - public final static String MIUI_FOLDER_PREFFIX = "[MIUI_Notes]"; // MIUI文件夹的前缀 + public final static String FOLDER_DEFAULT = "Default"; - public final static String FOLDER_DEFAULT = "Default"; // 默认文件夹的名称 + public final static String FOLDER_CALL_NOTE = "Call_Note"; - public final static String FOLDER_CALL_NOTE = "Call_Note"; // 通话便签文件夹的名称 + public final static String FOLDER_META = "METADATA"; - public final static String FOLDER_META = "METADATA"; // 元数据文件夹的名称 + public final static String META_HEAD_GTASK_ID = "meta_gid"; - public final static String META_HEAD_GTASK_ID = "meta_gid"; // 元数据中的Google任务ID的头部 + public final static String META_HEAD_NOTE = "meta_note"; - public final static String META_HEAD_NOTE = "meta_note"; // 元数据中的便签的头部 + public final static String META_HEAD_DATA = "meta_data"; - public final static String META_HEAD_DATA = "meta_data"; // 元数据中的数据的头部 - - public final static String META_NOTE_NAME = "[META INFO] DON'T UPDATE AND DELETE"; // 元数据便签的名称,提示不要更新和删除 + public final static String META_NOTE_NAME = "[META INFO] DON'T UPDATE AND DELETE"; } diff --git a/src/app/src/net/micode/notes/tool/ResourceParser.java b/src/app/src/net/micode/notes/tool/ResourceParser.java new file mode 100644 index 0000000..1ad3ad6 --- /dev/null +++ b/src/app/src/net/micode/notes/tool/ResourceParser.java @@ -0,0 +1,181 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.tool; + +import android.content.Context; +import android.preference.PreferenceManager; + +import net.micode.notes.R; +import net.micode.notes.ui.NotesPreferenceActivity; + +public class ResourceParser { + + public static final int YELLOW = 0; + public static final int BLUE = 1; + public static final int WHITE = 2; + public static final int GREEN = 3; + public static final int RED = 4; + + public static final int BG_DEFAULT_COLOR = YELLOW; + + public static final int TEXT_SMALL = 0; + public static final int TEXT_MEDIUM = 1; + public static final int TEXT_LARGE = 2; + public static final int TEXT_SUPER = 3; + + public static final int BG_DEFAULT_FONT_SIZE = TEXT_MEDIUM; + + public static class NoteBgResources { + private final static int [] BG_EDIT_RESOURCES = new int [] { + R.drawable.edit_yellow, + R.drawable.edit_blue, + R.drawable.edit_white, + R.drawable.edit_green, + R.drawable.edit_red + }; + + private final static int [] BG_EDIT_TITLE_RESOURCES = new int [] { + R.drawable.edit_title_yellow, + R.drawable.edit_title_blue, + R.drawable.edit_title_white, + R.drawable.edit_title_green, + R.drawable.edit_title_red + }; + + public static int getNoteBgResource(int id) { + return BG_EDIT_RESOURCES[id]; + } + + public static int getNoteTitleBgResource(int id) { + return BG_EDIT_TITLE_RESOURCES[id]; + } + } + + public static int getDefaultBgId(Context context) { + if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean( + NotesPreferenceActivity.PREFERENCE_SET_BG_COLOR_KEY, false)) { + return (int) (Math.random() * NoteBgResources.BG_EDIT_RESOURCES.length); + } else { + return BG_DEFAULT_COLOR; + } + } + + public static class NoteItemBgResources { + private final static int [] BG_FIRST_RESOURCES = new int [] { + R.drawable.list_yellow_up, + R.drawable.list_blue_up, + R.drawable.list_white_up, + R.drawable.list_green_up, + R.drawable.list_red_up + }; + + private final static int [] BG_NORMAL_RESOURCES = new int [] { + R.drawable.list_yellow_middle, + R.drawable.list_blue_middle, + R.drawable.list_white_middle, + R.drawable.list_green_middle, + R.drawable.list_red_middle + }; + + private final static int [] BG_LAST_RESOURCES = new int [] { + R.drawable.list_yellow_down, + R.drawable.list_blue_down, + R.drawable.list_white_down, + R.drawable.list_green_down, + R.drawable.list_red_down, + }; + + private final static int [] BG_SINGLE_RESOURCES = new int [] { + R.drawable.list_yellow_single, + R.drawable.list_blue_single, + R.drawable.list_white_single, + R.drawable.list_green_single, + R.drawable.list_red_single + }; + + public static int getNoteBgFirstRes(int id) { + return BG_FIRST_RESOURCES[id]; + } + + public static int getNoteBgLastRes(int id) { + return BG_LAST_RESOURCES[id]; + } + + public static int getNoteBgSingleRes(int id) { + return BG_SINGLE_RESOURCES[id]; + } + + public static int getNoteBgNormalRes(int id) { + return BG_NORMAL_RESOURCES[id]; + } + + public static int getFolderBgRes() { + return R.drawable.list_folder; + } + } + + public static class WidgetBgResources { + private final static int [] BG_2X_RESOURCES = new int [] { + R.drawable.widget_2x_yellow, + R.drawable.widget_2x_blue, + R.drawable.widget_2x_white, + R.drawable.widget_2x_green, + R.drawable.widget_2x_red, + }; + + public static int getWidget2xBgResource(int id) { + return BG_2X_RESOURCES[id]; + } + + private final static int [] BG_4X_RESOURCES = new int [] { + R.drawable.widget_4x_yellow, + R.drawable.widget_4x_blue, + R.drawable.widget_4x_white, + R.drawable.widget_4x_green, + R.drawable.widget_4x_red + }; + + public static int getWidget4xBgResource(int id) { + return BG_4X_RESOURCES[id]; + } + } + + public static class TextAppearanceResources { + private final static int [] TEXTAPPEARANCE_RESOURCES = new int [] { + R.style.TextAppearanceNormal, + R.style.TextAppearanceMedium, + R.style.TextAppearanceLarge, + R.style.TextAppearanceSuper + }; + + public static int getTexAppearanceResource(int id) { + /** + * HACKME: Fix bug of store the resource id in shared preference. + * The id may larger than the length of resources, in this case, + * return the {@link ResourceParser#BG_DEFAULT_FONT_SIZE} + */ + if (id >= TEXTAPPEARANCE_RESOURCES.length) { + return BG_DEFAULT_FONT_SIZE; + } + return TEXTAPPEARANCE_RESOURCES[id]; + } + + public static int getResourcesSize() { + return TEXTAPPEARANCE_RESOURCES.length; + } + } +} diff --git a/doc/精读报告/ui/AlarmAlertActivity.doc b/src/app/src/net/micode/notes/ui/AlarmAlertActivity.java similarity index 60% rename from doc/精读报告/ui/AlarmAlertActivity.doc rename to src/app/src/net/micode/notes/ui/AlarmAlertActivity.java index d3f8954..85723be 100644 --- a/doc/精读报告/ui/AlarmAlertActivity.doc +++ b/src/app/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -41,42 +41,34 @@ import java.io.IOException; public class AlarmAlertActivity extends Activity implements OnClickListener, OnDismissListener { - //. 继承了Activity类,改类实现了OnClickListener和 OnDismissListener两个接口,OnClickListener接口用来监听点击事件,OnDismissListener接口用来监听关闭对话框事件 - private long mNoteId;//文本在数据库中的ID号 - private String mSnippet;//闹钟提示时显示的文本 - private static final int SNIPPET_PREW_MAX_LEN = 60;//文本最大长度 + private long mNoteId; + 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);//界面显示无标题 + super.onCreate(savedInstanceState); + requestWindowFeature(Window.FEATURE_NO_TITLE); final Window win = getWindow(); win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); if (!isScreenOn()) { win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON - //保持屏幕亮屏 | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON - //唤醒屏幕 | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON - //允许亮屏时锁屏 | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR); - }//手机息屏后若闹钟铃响则亮屏 + } 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;//判断标签片段是否达到符合长度 + : mSnippet; } catch (IllegalArgumentException e) { e.printStackTrace(); return; @@ -84,23 +76,21 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD mPlayer = new MediaPlayer(); if (DataUtils.visibleInNoteDatabase(getContentResolver(), mNoteId, Notes.TYPE_NOTE)) { - showActionDialog();//弹出对话框 - playAlarmSound();//闹钟发出提示音 + showActionDialog(); + playAlarmSound(); } else { - finish();//完成闹钟动作 + 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); @@ -111,14 +101,12 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD } try { mPlayer.setDataSource(this, url); - //根据Uri设置多媒体数据来源 - mPlayer.prepare();//播放器准备 - mPlayer.setLooping(true);//设置循环播放 - mPlayer.start();//开始播放 - + mPlayer.prepare(); + mPlayer.setLooping(true); + mPlayer.start(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block - e.printStackTrace();//e.printStackTrace()函数功能是抛出异常, 还将显示出更深的调用信息 + e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -133,43 +121,37 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD 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"按钮 + dialog.setTitle(R.string.app_name); + dialog.setMessage(mSnippet); + dialog.setPositiveButton(R.string.notealert_ok, this); 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);//开始动作 + case DialogInterface.BUTTON_NEGATIVE: + Intent intent = new Intent(this, NoteEditActivity.class); + intent.setAction(Intent.ACTION_VIEW); + intent.putExtra(Intent.EXTRA_UID, mNoteId); + startActivity(intent); break; - default://这是确定操作 + default: break; } } - public void onDismiss(DialogInterface dialog) {//忽略 - stopAlarmSound();//停止闹钟声音 - finish();//完成该动作 + public void onDismiss(DialogInterface dialog) { + stopAlarmSound(); + finish(); } private void stopAlarmSound() { if (mPlayer != null) { - mPlayer.stop();//停止播放 - mPlayer.release();//释放MediaPlayer对象 + mPlayer.stop(); + mPlayer.release(); mPlayer = null; } } diff --git a/doc/精读报告/ui/AlarmInitReceiver.doc b/src/app/src/net/micode/notes/ui/AlarmInitReceiver.java similarity index 62% rename from doc/精读报告/ui/AlarmInitReceiver.doc rename to src/app/src/net/micode/notes/ui/AlarmInitReceiver.java index 5c70518..f221202 100644 --- a/doc/精读报告/ui/AlarmInitReceiver.doc +++ b/src/app/src/net/micode/notes/ui/AlarmInitReceiver.java @@ -34,34 +34,32 @@ public class AlarmInitReceiver extends BroadcastReceiver { 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()产生一个当前的毫秒 + long currentDate = System.currentTimeMillis(); Cursor c = context.getContentResolver().query(Notes.CONTENT_NOTE_URI, PROJECTION, NoteColumns.ALERTED_DATE + ">? AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE, - new String[] { String.valueOf(currentDate) },//将long变量currentDate转化为字符串 + new String[] { String.valueOf(currentDate) }, null); -//Cursor在这里的作用是通过查找数据库中的标签内容,找到和当前系统时间相等的标签 - if (c != null) {//当c != null的时候,将cursor移动到开始处,然后执行相关对信息的读取工作,直至读取结束,然后关闭该cursor - if (c.moveToFirst()) {//游标移动到开始位置 + + if (c != null) { + if (c.moveToFirst()) { do { - long alertDate = c.getLong(COLUMN_ALERTED_DATE);//获取便签的提醒时间 - Intent sender = new Intent(context, AlarmReceiver.class);//新建一个intent类 来指向alarmreceiver 来传输数据 - sender.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, c.getLong(COLUMN_ID)));//设置数据为便签的uri和id + 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); - //使用了PendingIntent方法,得到可以延时向之前定义的Intent sender发送广播的PendingIntent实例Pendingintent - AlarmManager alermManager = (AlarmManager) context//新建系统的闹钟服务 + AlarmManager alermManager = (AlarmManager) context .getSystemService(Context.ALARM_SERVICE); alermManager.set(AlarmManager.RTC_WAKEUP, alertDate, pendingIntent); - //调用android系统方法AlarmManager,设置一个系统提醒事项,设置提醒时间为当前便签中所存alertdate,并设置激活提醒时,广播类Pendingintent - } while (c.moveToNext());//游标移动到下一位置 + } while (c.moveToNext()); } - c.close();//关闭游标 + c.close(); } } } diff --git a/doc/精读报告/ui/AlarmReceiver.doc b/src/app/src/net/micode/notes/ui/AlarmReceiver.java similarity index 71% rename from doc/精读报告/ui/AlarmReceiver.doc rename to src/app/src/net/micode/notes/ui/AlarmReceiver.java index 37f264c..54e503b 100644 --- a/doc/精读报告/ui/AlarmReceiver.doc +++ b/src/app/src/net/micode/notes/ui/AlarmReceiver.java @@ -23,9 +23,8 @@ import android.content.Intent; public class AlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - intent.setClass(context, AlarmAlertActivity.class);//启动AlarmAlertActivity + intent.setClass(context, AlarmAlertActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - //属性设置启动Activity模式:在任务栈中会判断是否存在相同的activity,如果存在,那么会清除该activity之上的其他activity对象显示,如果不存在,则会创建一个新的activity放入栈顶 - context.startActivity(intent);//使用intent启动activity + context.startActivity(intent); } } diff --git a/doc/精读报告/ui/DateTimePicker.doc b/src/app/src/net/micode/notes/ui/DateTimePicker.java similarity index 73% rename from doc/精读报告/ui/DateTimePicker.doc rename to src/app/src/net/micode/notes/ui/DateTimePicker.java index 9e6c5ee..496b0cd 100644 --- a/doc/精读报告/ui/DateTimePicker.doc +++ b/src/app/src/net/micode/notes/ui/DateTimePicker.java @@ -29,32 +29,28 @@ 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;//定义半天为12小时 - private static final int HOURS_IN_ALL_DAY = 24;//定义一天为24小时 - private static final int DAYS_IN_ALL_WEEK = 7;//定义一周为七天 - private static final int DATE_SPINNER_MIN_VAL = 0;//定义日期循环最小值为0 - private static final int DATE_SPINNER_MAX_VAL = DAYS_IN_ALL_WEEK - 1;//一周循环最大天数为一周天数减1天 - private static final int HOUR_SPINNER_MIN_VAL_24_HOUR_VIEW = 0;//24小时制小时最小值为0 - private static final int HOUR_SPINNER_MAX_VAL_24_HOUR_VIEW = 23;//定义24小时循环的最大值为23 - private static final int HOUR_SPINNER_MIN_VAL_12_HOUR_VIEW = 1;// 12小时制下小时转轮最小值 - private static final int HOUR_SPINNER_MAX_VAL_12_HOUR_VIEW = 12;// 12小时制下小时转轮最大值 - private static final int MINUT_SPINNER_MIN_VAL = 0;//分钟轮转最小值为0 - private static final int MINUT_SPINNER_MAX_VAL = 59;//分钟轮转最大值为59 - private static final int AMPM_SPINNER_MIN_VAL = 0;//标志上下午的轮转值,没有具体意义 - private static final int AMPM_SPINNER_MAX_VAL = 1;//标志上下午的轮转值,没有具体意义 - //初始化控件 + 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]; @@ -75,43 +71,41 @@ public class DateTimePicker extends FrameLayout { updateDateControl(); onDateTimeChanged(); } - };//OnValueChangeListener,这是时间改变监听器,这里主要是对日期的监听 - //将现在日期的值传递给mDate;updateDateControl是同步操作 + }; - private NumberPicker.OnValueChangeListener mOnHourChangedListener = new NumberPicker.OnValueChangeListener() {//这里是对 小时(Hour) 的监听 + private NumberPicker.OnValueChangeListener mOnHourChangedListener = new NumberPicker.OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { boolean isDateChanged = false; - Calendar cal = Calendar.getInstance();//声明一个Calendar的变量cal,便于后续的操作 + Calendar cal = Calendar.getInstance(); if (!mIs24HourView) { if (!mIsAm && oldVal == HOURS_IN_HALF_DAY - 1 && newVal == HOURS_IN_HALF_DAY) { cal.setTimeInMillis(mDate.getTimeInMillis()); cal.add(Calendar.DAY_OF_YEAR, 1); - isDateChanged = true;//这里是对于12小时制时,晚上11点和12点交替时对日期的更改 + isDateChanged = true; } else if (mIsAm && oldVal == HOURS_IN_HALF_DAY && newVal == HOURS_IN_HALF_DAY - 1) { cal.setTimeInMillis(mDate.getTimeInMillis()); cal.add(Calendar.DAY_OF_YEAR, -1); - isDateChanged = true;//这里是对于12小时制时,凌晨11点和12点交替时对日期的更改 + isDateChanged = true; } if (oldVal == HOURS_IN_HALF_DAY - 1 && newVal == HOURS_IN_HALF_DAY || oldVal == HOURS_IN_HALF_DAY && newVal == HOURS_IN_HALF_DAY - 1) { mIsAm = !mIsAm; - updateAmPmControl();//这里是对于12小时制时,中午11点和12点交替时对AM和PM的更改 + updateAmPmControl(); } } 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点交替时对日期的更改 + isDateChanged = true; } else if (oldVal == 0 && newVal == HOURS_IN_ALL_DAY - 1) { cal.setTimeInMillis(mDate.getTimeInMillis()); cal.add(Calendar.DAY_OF_YEAR, -1); - isDateChanged = true;//这里是对于12小时制时,凌晨11点和12点交替时对日期的更改 + isDateChanged = true; } } - 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 - + int newHour = mHourSpinner.getValue() % HOURS_IN_HALF_DAY + (mIsAm ? 0 : HOURS_IN_HALF_DAY); + mDate.set(Calendar.HOUR_OF_DAY, newHour); onDateTimeChanged(); if (isDateChanged) { setCurrentYear(cal.get(Calendar.YEAR)); @@ -122,17 +116,16 @@ public class DateTimePicker extends FrameLayout { }; private NumberPicker.OnValueChangeListener mOnMinuteChangedListener = new NumberPicker.OnValueChangeListener() { - @Override//这里是对 分钟(Minute)改变的监听 + @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { int minValue = mMinuteSpinner.getMinValue(); int maxValue = mMinuteSpinner.getMaxValue(); - int offset = 0;//设置offset,作为小时改变的一个记录数据 + int offset = 0; 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()); @@ -151,7 +144,7 @@ public class DateTimePicker extends FrameLayout { } }; - private NumberPicker.OnValueChangeListener mOnAmPmChangedListener = new NumberPicker.OnValueChangeListener() { //对AM和PM的监听 + private NumberPicker.OnValueChangeListener mOnAmPmChangedListener = new NumberPicker.OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { mIsAm = !mIsAm; @@ -172,64 +165,61 @@ public class DateTimePicker extends FrameLayout { public DateTimePicker(Context context) { this(context, System.currentTimeMillis()); - }//通过对数据库的访问,获取当前的系统时间 - + } - public DateTimePicker(Context context, long date) {//实例化时间日期选择器 + public DateTimePicker(Context context, long date) { this(context, date, DateFormat.is24HourFormat(context)); } public DateTimePicker(Context context, long date, boolean is24HourView) { - super(context);//获取系统时间 + 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.setMinValue(DATE_SPINNER_MIN_VAL); + mDateSpinner.setMaxValue(DATE_SPINNER_MAX_VAL); mDateSpinner.setOnValueChangedListener(mOnDateChangedListener); - mHourSpinner = (NumberPicker) findViewById(R.id.hour);//显示设置小时的视图 + 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);//置监听长按时间间隔为100ms + 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();//对24小时下的 am 与pm各属性值进行初始化 - mAmPmSpinner = (NumberPicker) findViewById(R.id.amPm);//显示设置上下午的视图 - mAmPmSpinner.setMinValue(AMPM_SPINNER_MIN_VAL);//设置组件最小值属性为上下午编码最小值 - mAmPmSpinner.setMaxValue(AMPM_SPINNER_MAX_VAL);//设置组件最大值属性为上下午编码最大值 - mAmPmSpinner.setDisplayedValues(stringsForAmPm);//设置显示上下午字符串的值 + 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将日期的各参数值更新为初始化状态 + // update controls to initial state updateDateControl(); updateHourControl(); updateAmPmControl(); set24HourView(is24HourView); - // set to current time设置当前时间 + // set to current time setCurrentDate(date); setEnabled(isEnabled()); // set the content descriptions - mInitialising = false;//表示初始化已经结束 + mInitialising = false; } @Override - public void setEnabled(boolean enabled) {//将当前监听器的状态设置为开启状态 - if (mIsEnabled == enabled) {//如果已经在开启状态,则返回 + public void setEnabled(boolean enabled) { + if (mIsEnabled == enabled) { return; } - super.setEnabled(enabled);//将各部分设置为开启状态 + super.setEnabled(enabled); mDateSpinner.setEnabled(enabled); mMinuteSpinner.setEnabled(enabled); mHourSpinner.setEnabled(enabled); @@ -249,7 +239,7 @@ public class DateTimePicker extends FrameLayout { */ public long getCurrentDateInTimeMillis() { return mDate.getTimeInMillis(); - }//实现函数——得到当前的秒数 + } /** * Set the current date @@ -260,7 +250,7 @@ public class DateTimePicker extends FrameLayout { 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 + cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE)); } /** @@ -279,14 +269,13 @@ public class DateTimePicker extends FrameLayout { setCurrentDay(dayOfMonth); setCurrentHour(hourOfDay); setCurrentMinute(minute); - }//实现函数功能——设置当前的时间,参数是各详细的变量 + } /** * Get current year * * @return The current year */ - //下面是得到year、month、day等值 public int getCurrentYear() { return mDate.get(Calendar.YEAR); } @@ -456,7 +445,7 @@ public class DateTimePicker extends FrameLayout { } mDateSpinner.setDisplayedValues(mDateDisplayValues); mDateSpinner.setValue(DAYS_IN_ALL_WEEK / 2); - mDateSpinner.invalidate();// 对于星期几的算法 + mDateSpinner.invalidate(); } private void updateAmPmControl() { @@ -466,7 +455,7 @@ public class DateTimePicker extends FrameLayout { int index = mIsAm ? Calendar.AM : Calendar.PM; mAmPmSpinner.setValue(index); mAmPmSpinner.setVisibility(View.VISIBLE); - }// 对于上下午操作的算法 + } } private void updateHourControl() { @@ -476,7 +465,7 @@ public class DateTimePicker extends FrameLayout { } else { mHourSpinner.setMinValue(HOUR_SPINNER_MIN_VAL_12_HOUR_VIEW); mHourSpinner.setMaxValue(HOUR_SPINNER_MAX_VAL_12_HOUR_VIEW); - } //对于小时的算法 + } } /** diff --git a/doc/精读报告/ui/DateTimePickerDialog.doc b/src/app/src/net/micode/notes/ui/DateTimePickerDialog.java similarity index 69% rename from doc/精读报告/ui/DateTimePickerDialog.doc rename to src/app/src/net/micode/notes/ui/DateTimePickerDialog.java index 3c5bc83..2c47ba4 100644 --- a/doc/精读报告/ui/DateTimePickerDialog.doc +++ b/src/app/src/net/micode/notes/ui/DateTimePickerDialog.java @@ -31,20 +31,19 @@ import android.text.format.DateUtils; public class DateTimePickerDialog extends AlertDialog implements OnClickListener { - private Calendar mDate = Calendar.getInstance();//创建一个Calendar类型的变量 mDate,方便时间的操作 + private Calendar mDate = Calendar.getInstance(); private boolean mIs24HourView; - private OnDateTimeSetListener mOnDateTimeSetListener;//声明一个时间日期滚动选择控件 mOnDateTimeSetListener - private DateTimePicker mDateTimePicker;//DateTimePicker控件,控件一般用于让用户可以从日期列表中选择单个值。 - //运行时,单击控件边上的下拉箭头,会显示为两个部分:一个下拉列表,一个用于选择日期 + private OnDateTimeSetListener mOnDateTimeSetListener; + private DateTimePicker mDateTimePicker; public interface OnDateTimeSetListener { void OnDateTimeSet(AlertDialog dialog, long date); } - public DateTimePickerDialog(Context context, long date) {//对该界面对话框的实例化 - super(context);//对数据库的操作 + public DateTimePickerDialog(Context context, long date) { + super(context); mDateTimePicker = new DateTimePicker(context); - setView(mDateTimePicker);//添加一个子视图 + setView(mDateTimePicker); mDateTimePicker.setOnDateTimeChangedListener(new OnDateTimeChangedListener() { public void onDateTimeChanged(DateTimePicker view, int year, int month, int dayOfMonth, int hourOfDay, int minute) { @@ -52,16 +51,16 @@ public class DateTimePickerDialog extends AlertDialog implements OnClickListener mDate.set(Calendar.MONTH, month); mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); mDate.set(Calendar.HOUR_OF_DAY, hourOfDay); - mDate.set(Calendar.MINUTE, minute);//将视图中的各选项设置为系统当前时间 + mDate.set(Calendar.MINUTE, minute); updateTitle(mDate.getTimeInMillis()); } }); - mDate.setTimeInMillis(date);//得到系统时间 - mDate.set(Calendar.SECOND, 0);//将秒数设置为0 + mDate.setTimeInMillis(date); + mDate.set(Calendar.SECOND, 0); mDateTimePicker.setCurrentDate(mDate.getTimeInMillis()); setButton(context.getString(R.string.datetime_dialog_ok), this); - setButton2(context.getString(R.string.datetime_dialog_cancel), (OnClickListener)null);//设置按钮 - set24HourView(DateFormat.is24HourFormat(this.getContext()));//时间标准化打印 + setButton2(context.getString(R.string.datetime_dialog_cancel), (OnClickListener)null); + set24HourView(DateFormat.is24HourFormat(this.getContext())); updateTitle(mDate.getTimeInMillis()); } @@ -71,7 +70,7 @@ public class DateTimePickerDialog extends AlertDialog implements OnClickListener public void setOnDateTimeSetListener(OnDateTimeSetListener callBack) { mOnDateTimeSetListener = callBack; - }//将时间日期滚动选择控件实例化 + } private void updateTitle(long date) { int flag = @@ -80,13 +79,12 @@ public class DateTimePickerDialog extends AlertDialog implements OnClickListener 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/精读报告/ui/DropdownMenu.doc b/src/app/src/net/micode/notes/ui/DropdownMenu.java similarity index 84% rename from doc/精读报告/ui/DropdownMenu.doc rename to src/app/src/net/micode/notes/ui/DropdownMenu.java index 1d7851c..613dc74 100644 --- a/doc/精读报告/ui/DropdownMenu.doc +++ b/src/app/src/net/micode/notes/ui/DropdownMenu.java @@ -29,17 +29,15 @@ import net.micode.notes.R; public class DropdownMenu { private Button mButton; - private PopupMenu mPopupMenu;//声明一个下拉菜单 + private PopupMenu mPopupMenu; private Menu mMenu; public DropdownMenu(Context context, Button button, int menuId) { mButton = button; - mButton.setBackgroundResource(R.drawable.dropdown_icon);//设置这个view的背景 + mButton.setBackgroundResource(R.drawable.dropdown_icon); 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(); @@ -50,14 +48,14 @@ public class DropdownMenu { 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); - }//布局文件,设置标题 + } } diff --git a/doc/精读报告/ui/FoldersListAdapter.doc b/src/app/src/net/micode/notes/ui/FoldersListAdapter.java similarity index 74% rename from doc/精读报告/ui/FoldersListAdapter.doc rename to src/app/src/net/micode/notes/ui/FoldersListAdapter.java index 0088aa0..96b77da 100644 --- a/doc/精读报告/ui/FoldersListAdapter.doc +++ b/src/app/src/net/micode/notes/ui/FoldersListAdapter.java @@ -16,7 +16,7 @@ package net.micode.notes.ui; -import android.content.Context;//引用一些类,大多为与数据库的交互,对文件夹的列表名称等做调整 +import android.content.Context; import android.database.Cursor; import android.view.View; import android.view.ViewGroup; @@ -30,27 +30,23 @@ 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;//初始化Column的id和name,id唯一标识了Colum + public static final int NAME_COLUMN = 1; public FoldersListAdapter(Context context, Cursor c) { super(context, c); // TODO Auto-generated constructor stub - }//数据库操作 + } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { return new FolderListItem(context); - }//创建一个文件夹,对于各文件夹中子标签的初始化 + } @Override public void bindView(View view, Context context, Cursor cursor) { @@ -59,20 +55,20 @@ public class FoldersListAdapter extends CursorAdapter { .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);//根据布局文件的名字等信息将其找出来 + super(context); + inflate(context, R.layout.folder_list_item, this); mName = (TextView) findViewById(R.id.tv_folder_name); } diff --git a/src/net/micode/notes/ui/NoteEditActivity.java b/src/app/src/net/micode/notes/ui/NoteEditActivity.java similarity index 100% rename from src/net/micode/notes/ui/NoteEditActivity.java rename to src/app/src/net/micode/notes/ui/NoteEditActivity.java diff --git a/doc/精读报告/ui/NoteEditText.doc b/src/app/src/net/micode/notes/ui/NoteEditText.java similarity index 58% rename from doc/精读报告/ui/NoteEditText.doc rename to src/app/src/net/micode/notes/ui/NoteEditText.java index 9318ea6..2afe2a8 100644 --- a/doc/精读报告/ui/NoteEditText.doc +++ b/src/app/src/net/micode/notes/ui/NoteEditText.java @@ -36,7 +36,7 @@ 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; @@ -45,9 +45,8 @@ public class NoteEditText extends EditText { 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); @@ -57,28 +56,28 @@ public class NoteEditText extends EditText { /** * Call by the {@link NoteEditActivity} to delete or add edit text */ - public interface OnTextViewChangeListener {//该接口用于实现对TextView组件中的文字信息进行修改 + public interface OnTextViewChangeListener { /** * Delete current edit text when {@link KeyEvent#KEYCODE_DEL} happens * and the text is null */ - void onEditTextDelete(int index, String text);//当delete键按下时删除当前编辑的文字块 + 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);//当enter键按下时添加一个文字编辑块 + void onEditTextEnter(int index, String text); /** * Hide or show item option when text change */ - void onTextChange(int index, boolean hasText);//当文字发生变化时隐藏或者显示设置 + void onTextChange(int index, boolean hasText); } - private OnTextViewChangeListener mOnTextViewChangeListener;//声明文本视图变化监听器 + private OnTextViewChangeListener mOnTextViewChangeListener; - public NoteEditText(Context context) {//下面有三个构造函数,继承父类的方法,各个参数不同 + public NoteEditText(Context context) { super(context, null); mIndex = 0; } @@ -91,7 +90,7 @@ public class NoteEditText extends EditText { mOnTextViewChangeListener = listener; } - public NoteEditText(Context context, AttributeSet attrs) {//下面两个函数都是NoteEditText的构造函数,它们同样继承了父类的构造函数,不同的是它们调用的参数不一样 + public NoteEditText(Context context, AttributeSet attrs) { super(context, attrs, android.R.attr.editTextStyle); } @@ -102,25 +101,24 @@ public class NoteEditText extends EditText { @Override public boolean onTouchEvent(MotionEvent event) { - //触摸屏幕编辑便签时触发,参数event为手机屏幕触摸事件封装类的对象,其中封装了该事件的所有信息,例如触摸的位置、触摸的类型以及触摸的时间等。该对象会在用户触摸手机屏幕时被创 switch (event.getAction()) { - case MotionEvent.ACTION_DOWN://重写屏幕触发事件 + case MotionEvent.ACTION_DOWN: int x = (int) event.getX(); int y = (int) event.getY(); - x -= getTotalPaddingLeft();//减去左边控件的距离 + x -= getTotalPaddingLeft(); y -= getTotalPaddingTop(); - x += getScrollX();//加上滚轮滚过的距离 + x += getScrollX(); y += getScrollY(); - Layout layout = getLayout();//用布局控件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);//这是调用父类的方法,当屏幕有Touch事件时,此方法就会被调用 + return super.onTouchEvent(event); } @Override @@ -128,94 +126,92 @@ public class NoteEditText extends EditText { switch (keyCode) { case KeyEvent.KEYCODE_ENTER: if (mOnTextViewChangeListener != null) { - //mOnTextViewChangeListener是上面接口OnTextViewChangeListener的引用,指向初始化时的listener对象,该对象是OnTextViewChangeListener的实现类的对象,接口无法直接实例化。mOnTextViewChangeListener标志着文本是否被改变。 return false; } break; case KeyEvent.KEYCODE_DEL: - mSelectionStartBeforeDelete = getSelectionStart();//获取删除文本开始位置 + mSelectionStartBeforeDelete = getSelectionStart(); break; default: break; } - return super.onKeyDown(keyCode, event);//调用父类的方法,响应其他按键,如数字键和字母键等 + return super.onKeyDown(keyCode, event); } @Override - public boolean onKeyUp(int keyCode, KeyEvent event) {//处理用户松开一个键盘按键时会触发的事件 + public boolean onKeyUp(int keyCode, KeyEvent event) { switch(keyCode) { case KeyEvent.KEYCODE_DEL: - if (mOnTextViewChangeListener != null) {//如果文本视图发生变化 - if (0 == mSelectionStartBeforeDelete && mIndex != 0) {//若之前有被修改并且文档不为空 - mOnTextViewChangeListener.onEditTextDelete(mIndex, getText().toString());//监听文本的删除 + if (mOnTextViewChangeListener != null) { + if (0 == mSelectionStartBeforeDelete && mIndex != 0) { + mOnTextViewChangeListener.onEditTextDelete(mIndex, getText().toString()); return true; } } else { - Log.d(TAG, "OnTextViewChangeListener was not seted");////其他情况报错,文档的改动监听器并没有建立 + Log.d(TAG, "OnTextViewChangeListener was not seted"); } break; case KeyEvent.KEYCODE_ENTER: if (mOnTextViewChangeListener != null) { - int selectionStart = getSelectionStart();////获取当前位置 - String text = getText().subSequence(selectionStart, length()).toString();//获取选择区域后面的文本信息 - setText(getText().subSequence(0, selectionStart));//根据获取的文本设置当前文本 - mOnTextViewChangeListener.onEditTextEnter(mIndex + 1, text);//将选择区域内的文字移到下一行 + int selectionStart = getSelectionStart(); + String text = getText().subSequence(selectionStart, length()).toString(); + setText(getText().subSequence(0, selectionStart)); + mOnTextViewChangeListener.onEditTextEnter(mIndex + 1, text); } else { - Log.d(TAG, "OnTextViewChangeListener was not seted");//其他情况报错,监听器OnTextViewChangeListener并没有建立 + Log.d(TAG, "OnTextViewChangeListener was not seted"); } break; default: break; } - return super.onKeyUp(keyCode, event);//继续执行父类的其他按键弹起的事件 + return super.onKeyUp(keyCode, event); } @Override - protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {//当焦点发生变化时,会自动调用该方法来处理焦点改变的事件 + protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { if (mOnTextViewChangeListener != null) { if (!focused && TextUtils.isEmpty(getText())) { - mOnTextViewChangeListener.onTextChange(mIndex, false);//mOnTextViewChangeListener子函数,置false隐藏事件选项 + mOnTextViewChangeListener.onTextChange(mIndex, false); } else { - mOnTextViewChangeListener.onTextChange(mIndex, true);//mOnTextViewChangeListener子函数,置true显示事件选项 - + mOnTextViewChangeListener.onTextChange(mIndex, true); } } - super.onFocusChanged(focused, direction, previouslyFocusedRect);//继续执行父类的其他焦点变化的事件 + super.onFocusChanged(focused, direction, previouslyFocusedRect); } @Override - protected void onCreateContextMenu(ContextMenu menu) {//生成上下文菜单 - if (getText() instanceof Spanned) {//如果有文本存在 + protected void onCreateContextMenu(ContextMenu menu) { + if (getText() instanceof Spanned) { int selStart = getSelectionStart(); - int selEnd = getSelectionEnd();//获取文本开始和结尾位置 + int selEnd = getSelectionEnd(); int min = Math.min(selStart, selEnd); - int max = Math.max(selStart, selEnd);//获取开始到结尾的最大、最小值 + int max = Math.max(selStart, selEnd); - final URLSpan[] urls = ((Spanned) getText()).getSpans(min, max, URLSpan.class);//获取一段text内容,并且把这段内容强制转换为Spanned类型,并存入URLSpan数组urls中 + final URLSpan[] urls = ((Spanned) getText()).getSpans(min, max, URLSpan.class); if (urls.length == 1) { int defaultResId = 0; for(String schema: sSchemaActionResMap.keySet()) { - if(urls[0].getURL().indexOf(schema) >= 0) {//若url可以添加则在添加后将defaultResId置为key所映射的值 + if(urls[0].getURL().indexOf(schema) >= 0) { defaultResId = sSchemaActionResMap.get(schema); break; } } - if (defaultResId == 0) {//defaultResId == 0则说明url并没有添加任何东西,所以置为连接其他SchemaActionResMap的值 + if (defaultResId == 0) { defaultResId = R.string.note_link_other; } menu.add(0, 0, 0, defaultResId).setOnMenuItemClickListener( new OnMenuItemClickListener() { - public boolean onMenuItemClick(MenuItem item) {//如果点击菜单执行操作 + public boolean onMenuItemClick(MenuItem item) { // goto a new intent - urls[0].onClick(NoteEditText.this);//根据相应的文本设置菜单的按键 + urls[0].onClick(NoteEditText.this); return true; } }); } } - super.onCreateContextMenu(menu);//继续执行父类的其他菜单创建的事件 + super.onCreateContextMenu(menu); } } diff --git a/src/app/src/net/micode/notes/ui/NoteItemData.java b/src/app/src/net/micode/notes/ui/NoteItemData.java new file mode 100644 index 0000000..0f5a878 --- /dev/null +++ b/src/app/src/net/micode/notes/ui/NoteItemData.java @@ -0,0 +1,224 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import android.content.Context; +import android.database.Cursor; +import android.text.TextUtils; + +import net.micode.notes.data.Contact; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.tool.DataUtils; + + +public class NoteItemData { + static final String [] PROJECTION = new String [] { + NoteColumns.ID, + 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; + + public NoteItemData(Context context, Cursor cursor) { + mId = cursor.getLong(ID_COLUMN); + mAlertDate = cursor.getLong(ALERTED_DATE_COLUMN); + mBgColorId = cursor.getInt(BG_COLOR_ID_COLUMN); + mCreatedDate = cursor.getLong(CREATED_DATE_COLUMN); + mHasAttachment = (cursor.getInt(HAS_ATTACHMENT_COLUMN) > 0) ? true : false; + mModifiedDate = cursor.getLong(MODIFIED_DATE_COLUMN); + mNotesCount = cursor.getInt(NOTES_COUNT_COLUMN); + mParentId = cursor.getLong(PARENT_ID_COLUMN); + mSnippet = cursor.getString(SNIPPET_COLUMN); + mSnippet = mSnippet.replace(NoteEditActivity.TAG_CHECKED, "").replace( + NoteEditActivity.TAG_UNCHECKED, ""); + mType = cursor.getInt(TYPE_COLUMN); + mWidgetId = cursor.getInt(WIDGET_ID_COLUMN); + mWidgetType = cursor.getInt(WIDGET_TYPE_COLUMN); + + mPhoneNumber = ""; + if (mParentId == Notes.ID_CALL_RECORD_FOLDER) { + mPhoneNumber = DataUtils.getCallNumberByNoteId(context.getContentResolver(), mId); + if (!TextUtils.isEmpty(mPhoneNumber)) { + mName = Contact.getContact(context, mPhoneNumber); + if (mName == null) { + mName = mPhoneNumber; + } + } + } + + if (mName == null) { + mName = ""; + } + checkPostion(cursor); + } + + private void checkPostion(Cursor cursor) { + mIsLastItem = cursor.isLast() ? true : false; + mIsFirstItem = cursor.isFirst() ? true : false; + mIsOnlyOneItem = (cursor.getCount() == 1); + mIsMultiNotesFollowingFolder = false; + mIsOneNoteFollowingFolder = false; + + if (mType == Notes.TYPE_NOTE && !mIsFirstItem) { + int position = cursor.getPosition(); + if (cursor.moveToPrevious()) { + if (cursor.getInt(TYPE_COLUMN) == Notes.TYPE_FOLDER + || cursor.getInt(TYPE_COLUMN) == Notes.TYPE_SYSTEM) { + if (cursor.getCount() > (position + 1)) { + mIsMultiNotesFollowingFolder = true; + } else { + mIsOneNoteFollowingFolder = true; + } + } + if (!cursor.moveToNext()) { + throw new IllegalStateException("cursor move to previous but can't move back"); + } + } + } + } + + public boolean isOneFollowingFolder() { + return mIsOneNoteFollowingFolder; + } + + public boolean isMultiFollowingFolder() { + return mIsMultiNotesFollowingFolder; + } + + public boolean isLast() { + return mIsLastItem; + } + + public String getCallName() { + return mName; + } + + public boolean isFirst() { + return mIsFirstItem; + } + + public boolean isSingle() { + return mIsOnlyOneItem; + } + + 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); + } + + public boolean isCallRecord() { + return (mParentId == Notes.ID_CALL_RECORD_FOLDER && !TextUtils.isEmpty(mPhoneNumber)); + } + + public static int getNoteType(Cursor cursor) { + return cursor.getInt(TYPE_COLUMN); + } +} diff --git a/src/net/micode/notes/ui/NotesListActivity.java b/src/app/src/net/micode/notes/ui/NotesListActivity.java similarity index 100% rename from src/net/micode/notes/ui/NotesListActivity.java rename to src/app/src/net/micode/notes/ui/NotesListActivity.java diff --git a/src/app/src/net/micode/notes/ui/NotesListAdapter.java b/src/app/src/net/micode/notes/ui/NotesListAdapter.java new file mode 100644 index 0000000..51c9cb9 --- /dev/null +++ b/src/app/src/net/micode/notes/ui/NotesListAdapter.java @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import android.content.Context; +import android.database.Cursor; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CursorAdapter; + +import net.micode.notes.data.Notes; + +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; + + +public class NotesListAdapter extends CursorAdapter { + private static final String TAG = "NotesListAdapter"; + private Context mContext; + private HashMap mSelectedIndex; + private int mNotesCount; + private boolean mChoiceMode; + + public static class AppWidgetAttribute { + public int widgetId; + public int widgetType; + }; + + public NotesListAdapter(Context context) { + super(context, null); + mSelectedIndex = new HashMap(); + mContext = context; + mNotesCount = 0; + } + + @Override + public View newView(Context context, Cursor cursor, ViewGroup parent) { + return new NotesListItem(context); + } + + @Override + public void bindView(View view, Context context, Cursor cursor) { + if (view instanceof NotesListItem) { + NoteItemData itemData = new NoteItemData(context, cursor); + ((NotesListItem) view).bind(context, itemData, mChoiceMode, + isSelectedItem(cursor.getPosition())); + } + } + + public void setCheckedItem(final int position, final boolean checked) { + mSelectedIndex.put(position, checked); + notifyDataSetChanged(); + } + + public boolean isInChoiceMode() { + return mChoiceMode; + } + + public void setChoiceMode(boolean mode) { + mSelectedIndex.clear(); + mChoiceMode = mode; + } + + public void selectAll(boolean checked) { + Cursor cursor = getCursor(); + for (int i = 0; i < getCount(); i++) { + if (cursor.moveToPosition(i)) { + if (NoteItemData.getNoteType(cursor) == Notes.TYPE_NOTE) { + setCheckedItem(i, checked); + } + } + } + } + + public HashSet getSelectedItemIds() { + HashSet itemSet = new HashSet(); + for (Integer position : mSelectedIndex.keySet()) { + if (mSelectedIndex.get(position) == true) { + Long id = getItemId(position); + if (id == Notes.ID_ROOT_FOLDER) { + Log.d(TAG, "Wrong item id, should not happen"); + } else { + itemSet.add(id); + } + } + } + + return itemSet; + } + + public HashSet getSelectedWidget() { + HashSet itemSet = new HashSet(); + for (Integer position : mSelectedIndex.keySet()) { + if (mSelectedIndex.get(position) == true) { + Cursor c = (Cursor) getItem(position); + if (c != null) { + AppWidgetAttribute widget = new AppWidgetAttribute(); + NoteItemData item = new NoteItemData(mContext, c); + widget.widgetId = item.getWidgetId(); + widget.widgetType = item.getWidgetType(); + itemSet.add(widget); + /** + * Don't close cursor here, only the adapter could close it + */ + } else { + Log.e(TAG, "Invalid cursor"); + return null; + } + } + } + return itemSet; + } + + public int getSelectedCount() { + Collection values = mSelectedIndex.values(); + if (null == values) { + return 0; + } + Iterator iter = values.iterator(); + int count = 0; + while (iter.hasNext()) { + if (true == iter.next()) { + count++; + } + } + return count; + } + + public boolean isAllSelected() { + int checkedCount = getSelectedCount(); + return (checkedCount != 0 && checkedCount == mNotesCount); + } + + public boolean isSelectedItem(final int position) { + if (null == mSelectedIndex.get(position)) { + return false; + } + return mSelectedIndex.get(position); + } + + @Override + protected void onContentChanged() { + super.onContentChanged(); + calcNotesCount(); + } + + @Override + public void changeCursor(Cursor cursor) { + super.changeCursor(cursor); + calcNotesCount(); + } + + private void calcNotesCount() { + mNotesCount = 0; + for (int i = 0; i < getCount(); i++) { + Cursor c = (Cursor) getItem(i); + if (c != null) { + if (NoteItemData.getNoteType(c) == Notes.TYPE_NOTE) { + mNotesCount++; + } + } else { + Log.e(TAG, "Invalid cursor"); + return; + } + } + } +} diff --git a/src/app/src/net/micode/notes/ui/NotesListItem.java b/src/app/src/net/micode/notes/ui/NotesListItem.java new file mode 100644 index 0000000..1221e80 --- /dev/null +++ b/src/app/src/net/micode/notes/ui/NotesListItem.java @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import android.content.Context; +import android.text.format.DateUtils; +import android.view.View; +import android.widget.CheckBox; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.tool.DataUtils; +import net.micode.notes.tool.ResourceParser.NoteItemBgResources; + + +public class NotesListItem extends LinearLayout { + private ImageView mAlert; + private TextView mTitle; + private TextView mTime; + private TextView mCallName; + private NoteItemData mItemData; + private CheckBox mCheckBox; + + public NotesListItem(Context context) { + super(context); + inflate(context, R.layout.note_item, this); + mAlert = (ImageView) findViewById(R.id.iv_alert_icon); + mTitle = (TextView) findViewById(R.id.tv_title); + mTime = (TextView) findViewById(R.id.tv_time); + mCallName = (TextView) findViewById(R.id.tv_name); + mCheckBox = (CheckBox) findViewById(android.R.id.checkbox); + } + + public void bind(Context context, NoteItemData data, boolean choiceMode, boolean checked) { + if (choiceMode && data.getType() == Notes.TYPE_NOTE) { + mCheckBox.setVisibility(View.VISIBLE); + mCheckBox.setChecked(checked); + } else { + mCheckBox.setVisibility(View.GONE); + } + + mItemData = data; + if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { + mCallName.setVisibility(View.GONE); + mAlert.setVisibility(View.VISIBLE); + mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem); + mTitle.setText(context.getString(R.string.call_record_folder_name) + + context.getString(R.string.format_folder_files_count, data.getNotesCount())); + mAlert.setImageResource(R.drawable.call_record); + } else if (data.getParentId() == Notes.ID_CALL_RECORD_FOLDER) { + mCallName.setVisibility(View.VISIBLE); + mCallName.setText(data.getCallName()); + mTitle.setTextAppearance(context,R.style.TextAppearanceSecondaryItem); + mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); + if (data.hasAlert()) { + mAlert.setImageResource(R.drawable.clock); + mAlert.setVisibility(View.VISIBLE); + } else { + mAlert.setVisibility(View.GONE); + } + } else { + mCallName.setVisibility(View.GONE); + mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem); + + if (data.getType() == Notes.TYPE_FOLDER) { + mTitle.setText(data.getSnippet() + + context.getString(R.string.format_folder_files_count, + data.getNotesCount())); + mAlert.setVisibility(View.GONE); + } else { + mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); + if (data.hasAlert()) { + mAlert.setImageResource(R.drawable.clock); + mAlert.setVisibility(View.VISIBLE); + } else { + mAlert.setVisibility(View.GONE); + } + } + } + mTime.setText(DateUtils.getRelativeTimeSpanString(data.getModifiedDate())); + + setBackground(data); + } + + private void setBackground(NoteItemData data) { + int id = data.getBgColorId(); + if (data.getType() == Notes.TYPE_NOTE) { + if (data.isSingle() || data.isOneFollowingFolder()) { + setBackgroundResource(NoteItemBgResources.getNoteBgSingleRes(id)); + } else if (data.isLast()) { + setBackgroundResource(NoteItemBgResources.getNoteBgLastRes(id)); + } else if (data.isFirst() || data.isMultiFollowingFolder()) { + setBackgroundResource(NoteItemBgResources.getNoteBgFirstRes(id)); + } else { + setBackgroundResource(NoteItemBgResources.getNoteBgNormalRes(id)); + } + } else { + setBackgroundResource(NoteItemBgResources.getFolderBgRes()); + } + } + + public NoteItemData getItemData() { + return mItemData; + } +} diff --git a/src/app/src/net/micode/notes/ui/NotesPreferenceActivity.java b/src/app/src/net/micode/notes/ui/NotesPreferenceActivity.java new file mode 100644 index 0000000..07c5f7e --- /dev/null +++ b/src/app/src/net/micode/notes/ui/NotesPreferenceActivity.java @@ -0,0 +1,388 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import android.accounts.Account; +import android.accounts.AccountManager; +import android.app.ActionBar; +import android.app.AlertDialog; +import android.content.BroadcastReceiver; +import android.content.ContentValues; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.Preference; +import android.preference.Preference.OnPreferenceClickListener; +import android.preference.PreferenceActivity; +import android.preference.PreferenceCategory; +import android.text.TextUtils; +import android.text.format.DateFormat; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; +import android.widget.Toast; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.remote.GTaskSyncService; + + +public class NotesPreferenceActivity extends PreferenceActivity { + public static final String PREFERENCE_NAME = "notes_preferences"; + + public static final String PREFERENCE_SYNC_ACCOUNT_NAME = "pref_key_account_name"; + + public static final String PREFERENCE_LAST_SYNC_TIME = "pref_last_sync_time"; + + public static final String PREFERENCE_SET_BG_COLOR_KEY = "pref_key_bg_random_appear"; + + private static final String PREFERENCE_SYNC_ACCOUNT_KEY = "pref_sync_account_key"; + + private static final String AUTHORITIES_FILTER_KEY = "authorities"; + + private PreferenceCategory mAccountCategory; + + private GTaskReceiver mReceiver; + + private Account[] mOriAccounts; + + private boolean mHasAddedAccount; + + @Override + protected void onCreate(Bundle icicle) { + super.onCreate(icicle); + + /* using the app icon for navigation */ + getActionBar().setDisplayHomeAsUpEnabled(true); + + addPreferencesFromResource(R.xml.preferences); + mAccountCategory = (PreferenceCategory) findPreference(PREFERENCE_SYNC_ACCOUNT_KEY); + mReceiver = new GTaskReceiver(); + IntentFilter filter = new IntentFilter(); + filter.addAction(GTaskSyncService.GTASK_SERVICE_BROADCAST_NAME); + registerReceiver(mReceiver, filter); + + mOriAccounts = null; + View header = LayoutInflater.from(this).inflate(R.layout.settings_header, null); + getListView().addHeaderView(header, null, true); + } + + @Override + protected void onResume() { + super.onResume(); + + // need to set sync account automatically if user has added a new + // account + if (mHasAddedAccount) { + Account[] accounts = getGoogleAccounts(); + if (mOriAccounts != null && accounts.length > mOriAccounts.length) { + for (Account accountNew : accounts) { + boolean found = false; + for (Account accountOld : mOriAccounts) { + if (TextUtils.equals(accountOld.name, accountNew.name)) { + found = true; + break; + } + } + if (!found) { + setSyncAccount(accountNew.name); + break; + } + } + } + } + + refreshUI(); + } + + @Override + protected void onDestroy() { + if (mReceiver != null) { + unregisterReceiver(mReceiver); + } + super.onDestroy(); + } + + private void loadAccountPreference() { + mAccountCategory.removeAll(); + + Preference accountPref = new Preference(this); + final String defaultAccount = getSyncAccountName(this); + accountPref.setTitle(getString(R.string.preferences_account_title)); + accountPref.setSummary(getString(R.string.preferences_account_summary)); + accountPref.setOnPreferenceClickListener(new OnPreferenceClickListener() { + public boolean onPreferenceClick(Preference preference) { + if (!GTaskSyncService.isSyncing()) { + if (TextUtils.isEmpty(defaultAccount)) { + // the first time to set account + showSelectAccountAlertDialog(); + } else { + // if the account has already been set, we need to promp + // user about the risk + showChangeAccountConfirmAlertDialog(); + } + } else { + Toast.makeText(NotesPreferenceActivity.this, + R.string.preferences_toast_cannot_change_account, Toast.LENGTH_SHORT) + .show(); + } + return true; + } + }); + + mAccountCategory.addPreference(accountPref); + } + + private void loadSyncButton() { + Button syncButton = (Button) findViewById(R.id.preference_sync_button); + TextView lastSyncTimeView = (TextView) findViewById(R.id.prefenerece_sync_status_textview); + + // set button state + if (GTaskSyncService.isSyncing()) { + syncButton.setText(getString(R.string.preferences_button_sync_cancel)); + syncButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + GTaskSyncService.cancelSync(NotesPreferenceActivity.this); + } + }); + } else { + syncButton.setText(getString(R.string.preferences_button_sync_immediately)); + syncButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + GTaskSyncService.startSync(NotesPreferenceActivity.this); + } + }); + } + syncButton.setEnabled(!TextUtils.isEmpty(getSyncAccountName(this))); + + // set last sync time + if (GTaskSyncService.isSyncing()) { + lastSyncTimeView.setText(GTaskSyncService.getProgressString()); + lastSyncTimeView.setVisibility(View.VISIBLE); + } else { + long lastSyncTime = getLastSyncTime(this); + if (lastSyncTime != 0) { + lastSyncTimeView.setText(getString(R.string.preferences_last_sync_time, + DateFormat.format(getString(R.string.preferences_last_sync_time_format), + lastSyncTime))); + lastSyncTimeView.setVisibility(View.VISIBLE); + } else { + lastSyncTimeView.setVisibility(View.GONE); + } + } + } + + private void refreshUI() { + loadAccountPreference(); + loadSyncButton(); + } + + private void showSelectAccountAlertDialog() { + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); + + View titleView = LayoutInflater.from(this).inflate(R.layout.account_dialog_title, null); + TextView titleTextView = (TextView) titleView.findViewById(R.id.account_dialog_title); + titleTextView.setText(getString(R.string.preferences_dialog_select_account_title)); + TextView subtitleTextView = (TextView) titleView.findViewById(R.id.account_dialog_subtitle); + subtitleTextView.setText(getString(R.string.preferences_dialog_select_account_tips)); + + dialogBuilder.setCustomTitle(titleView); + dialogBuilder.setPositiveButton(null, null); + + Account[] accounts = getGoogleAccounts(); + String defAccount = getSyncAccountName(this); + + mOriAccounts = accounts; + mHasAddedAccount = false; + + if (accounts.length > 0) { + CharSequence[] items = new CharSequence[accounts.length]; + final CharSequence[] itemMapping = items; + int checkedItem = -1; + int index = 0; + for (Account account : accounts) { + if (TextUtils.equals(account.name, defAccount)) { + checkedItem = index; + } + items[index++] = account.name; + } + dialogBuilder.setSingleChoiceItems(items, checkedItem, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + setSyncAccount(itemMapping[which].toString()); + dialog.dismiss(); + refreshUI(); + } + }); + } + + View addAccountView = LayoutInflater.from(this).inflate(R.layout.add_account_text, null); + dialogBuilder.setView(addAccountView); + + final AlertDialog dialog = dialogBuilder.show(); + addAccountView.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + mHasAddedAccount = true; + Intent intent = new Intent("android.settings.ADD_ACCOUNT_SETTINGS"); + intent.putExtra(AUTHORITIES_FILTER_KEY, new String[] { + "gmail-ls" + }); + startActivityForResult(intent, -1); + dialog.dismiss(); + } + }); + } + + private void showChangeAccountConfirmAlertDialog() { + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); + + View titleView = LayoutInflater.from(this).inflate(R.layout.account_dialog_title, null); + TextView titleTextView = (TextView) titleView.findViewById(R.id.account_dialog_title); + titleTextView.setText(getString(R.string.preferences_dialog_change_account_title, + getSyncAccountName(this))); + TextView subtitleTextView = (TextView) titleView.findViewById(R.id.account_dialog_subtitle); + subtitleTextView.setText(getString(R.string.preferences_dialog_change_account_warn_msg)); + dialogBuilder.setCustomTitle(titleView); + + CharSequence[] menuItemArray = new CharSequence[] { + getString(R.string.preferences_menu_change_account), + getString(R.string.preferences_menu_remove_account), + getString(R.string.preferences_menu_cancel) + }; + dialogBuilder.setItems(menuItemArray, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + if (which == 0) { + showSelectAccountAlertDialog(); + } else if (which == 1) { + removeSyncAccount(); + refreshUI(); + } + } + }); + dialogBuilder.show(); + } + + private Account[] getGoogleAccounts() { + AccountManager accountManager = AccountManager.get(this); + return accountManager.getAccountsByType("com.google"); + } + + private void setSyncAccount(String account) { + if (!getSyncAccountName(this).equals(account)) { + SharedPreferences settings = getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = settings.edit(); + if (account != null) { + editor.putString(PREFERENCE_SYNC_ACCOUNT_NAME, account); + } else { + editor.putString(PREFERENCE_SYNC_ACCOUNT_NAME, ""); + } + editor.commit(); + + // clean up last sync time + setLastSyncTime(this, 0); + + // clean up local gtask related info + new Thread(new Runnable() { + public void run() { + ContentValues values = new ContentValues(); + values.put(NoteColumns.GTASK_ID, ""); + values.put(NoteColumns.SYNC_ID, 0); + getContentResolver().update(Notes.CONTENT_NOTE_URI, values, null, null); + } + }).start(); + + Toast.makeText(NotesPreferenceActivity.this, + getString(R.string.preferences_toast_success_set_accout, account), + Toast.LENGTH_SHORT).show(); + } + } + + private void removeSyncAccount() { + SharedPreferences settings = getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = settings.edit(); + if (settings.contains(PREFERENCE_SYNC_ACCOUNT_NAME)) { + editor.remove(PREFERENCE_SYNC_ACCOUNT_NAME); + } + if (settings.contains(PREFERENCE_LAST_SYNC_TIME)) { + editor.remove(PREFERENCE_LAST_SYNC_TIME); + } + editor.commit(); + + // clean up local gtask related info + new Thread(new Runnable() { + public void run() { + ContentValues values = new ContentValues(); + values.put(NoteColumns.GTASK_ID, ""); + values.put(NoteColumns.SYNC_ID, 0); + getContentResolver().update(Notes.CONTENT_NOTE_URI, values, null, null); + } + }).start(); + } + + public static String getSyncAccountName(Context context) { + SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, + Context.MODE_PRIVATE); + return settings.getString(PREFERENCE_SYNC_ACCOUNT_NAME, ""); + } + + public static void setLastSyncTime(Context context, long time) { + SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, + Context.MODE_PRIVATE); + SharedPreferences.Editor editor = settings.edit(); + editor.putLong(PREFERENCE_LAST_SYNC_TIME, time); + editor.commit(); + } + + public static long getLastSyncTime(Context context) { + SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, + Context.MODE_PRIVATE); + return settings.getLong(PREFERENCE_LAST_SYNC_TIME, 0); + } + + private class GTaskReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + refreshUI(); + if (intent.getBooleanExtra(GTaskSyncService.GTASK_SERVICE_BROADCAST_IS_SYNCING, false)) { + TextView syncStatus = (TextView) findViewById(R.id.prefenerece_sync_status_textview); + syncStatus.setText(intent + .getStringExtra(GTaskSyncService.GTASK_SERVICE_BROADCAST_PROGRESS_MSG)); + } + + } + } + + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + Intent intent = new Intent(this, NotesListActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(intent); + return true; + default: + return false; + } + } +} diff --git a/doc/精读报告/widget/NoteWidgetProvider.doc b/src/app/src/net/micode/notes/widget/NoteWidgetProvider.java similarity index 66% rename from doc/精读报告/widget/NoteWidgetProvider.doc rename to src/app/src/net/micode/notes/widget/NoteWidgetProvider.java index 364842f..ec6f819 100644 --- a/doc/精读报告/widget/NoteWidgetProvider.doc +++ b/src/app/src/net/micode/notes/widget/NoteWidgetProvider.java @@ -33,36 +33,23 @@ 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 + NoteColumns.ID, + NoteColumns.BG_COLOR_ID, + NoteColumns.SNIPPET }; - //PROJECTION中对应列的下标 public static final int COLUMN_ID = 0; public static final int COLUMN_BG_COLOR_ID = 1; public static final int COLUMN_SNIPPET = 2; - //Log输出的标签 private static final String TAG = "NoteWidgetProvider"; - /* - * 重写onDeleted()方法,实现删除 Widget 时清除相应 Widget 对应的便签数据库中的记录 - * value:用于更新的ContentValues,将 Widget ID 设为无效值 - * appWidgetIds:被删除的所有 Widget 的 ID 数组 - */ @Override -// 定义一个方法,用于在widget被删除时更新数据库中的widget_id字段 public void onDeleted(Context context, int[] appWidgetIds) { - // 创建一个ContentValues对象,用于存放要更新的字段和值 ContentValues values = new ContentValues(); - // 把widget_id设置为无效的值 values.put(NoteColumns.WIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); - //遍历所有被删除的widget的id for (int i = 0; i < appWidgetIds.length; i++) { - // 根据widget_id更新数据库中对应的笔记记录 context.getContentResolver().update(Notes.CONTENT_NOTE_URI, values, NoteColumns.WIDGET_ID + "=?", @@ -70,9 +57,7 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider { } } -// 定义一个方法,用于根据widget_id查询数据库中的笔记信息 private Cursor getNoteWidgetInfo(Context context, int widgetId) { - // 使用ContentResolver查询笔记表,返回一个Cursor对象 return context.getContentResolver().query(Notes.CONTENT_NOTE_URI, PROJECTION, NoteColumns.WIDGET_ID + "=? AND " + NoteColumns.PARENT_ID + "<>?", @@ -80,90 +65,68 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider { null); } -// 定义一个方法,用于更新widget的视图 protected void update(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { - // 调用另一个重载的update方法,传入false表示不是访客模式 update(context, appWidgetManager, appWidgetIds, false); } + private void update(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds, - boolean privacyMode) { + boolean privacyMode) { for (int i = 0; i < appWidgetIds.length; i++) { if (appWidgetIds[i] != AppWidgetManager.INVALID_APPWIDGET_ID) { - // 获取 Widget 的默认背景 ID int bgId = ResourceParser.getDefaultBgId(context); - // 默认便签摘要为空字符串 String snippet = ""; - // 创建用于启动编辑页面的 Intent,并添加必要的参数 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()); - // 从数据库中查询指定 Widget ID 对应的便签信息 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; } - // 设置 Widget 中需要显示的便签摘要、背景 ID、绑定的便签 ID 和点击跳转功能 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); } - // 关闭查询结果的 Cursor 对象 if (c != null) { c.close(); } - // 创建 RemoteViews 对象,并为其设置相应布局及需要显示的参数 RemoteViews rv = new RemoteViews(context.getPackageName(), getLayoutId()); rv.setImageViewResource(R.id.widget_bg_image, getBgResourceId(bgId)); intent.putExtra(Notes.INTENT_EXTRA_BACKGROUND_ID, bgId); - /** * Generate the pending intent to start host for the widget */ - // 定义一个变量pendingIntent,初始化为null PendingIntent pendingIntent = null; -// 如果privacyMode为真,表示用户处于访客模式 if (privacyMode) { - // 设置widget_text的文本为“访客模式” rv.setTextViewText(R.id.widget_text, context.getString(R.string.widget_under_visit_mode)); - // 创建一个PendingIntent,用于启动NotesListActivity - pendingIntent = PendingIntent.getActivity(context, appWidgetIds[i], new Intent( + pendingIntent = PendingIntent.getActivity(context, appWidgetIds[i], new Intent( context, NotesListActivity.class), PendingIntent.FLAG_UPDATE_CURRENT); } else { - // 否则,设置widget_text的文本为snippet,即笔记的摘要 rv.setTextViewText(R.id.widget_text, snippet); - // 创建一个PendingIntent,用于启动intent指定的Activity - pendingIntent = PendingIntent.getActivity(context, appWidgetIds[i], intent, + pendingIntent = PendingIntent.getActivity(context, appWidgetIds[i], intent, PendingIntent.FLAG_UPDATE_CURRENT); } -// 设置widget_text的点击事件为pendingIntent rv.setOnClickPendingIntent(R.id.widget_text, pendingIntent); -// 更新widget的视图 appWidgetManager.updateAppWidget(appWidgetIds[i], rv); } } } -// 定义一个抽象方法,用于根据bgId返回背景资源的id protected abstract int getBgResourceId(int bgId); -// 定义一个抽象方法,用于返回布局资源的id protected abstract int getLayoutId(); -// 定义一个抽象方法,用于返回widget的类型 protected abstract int getWidgetType(); } diff --git a/src/app/src/net/micode/notes/widget/NoteWidgetProvider_2x.java b/src/app/src/net/micode/notes/widget/NoteWidgetProvider_2x.java new file mode 100644 index 0000000..adcb2f7 --- /dev/null +++ b/src/app/src/net/micode/notes/widget/NoteWidgetProvider_2x.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.widget; + +import android.appwidget.AppWidgetManager; +import android.content.Context; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.tool.ResourceParser; + + +public class NoteWidgetProvider_2x extends NoteWidgetProvider { + @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/精读报告/widget/NoteWidgetProvider_4x.doc b/src/app/src/net/micode/notes/widget/NoteWidgetProvider_4x.java similarity index 78% rename from doc/精读报告/widget/NoteWidgetProvider_4x.doc rename to src/app/src/net/micode/notes/widget/NoteWidgetProvider_4x.java index 17222a0..c12a02e 100644 --- a/doc/精读报告/widget/NoteWidgetProvider_4x.doc +++ b/src/app/src/net/micode/notes/widget/NoteWidgetProvider_4x.java @@ -25,32 +25,20 @@ import net.micode.notes.tool.ResourceParser; public class NoteWidgetProvider_4x extends NoteWidgetProvider { - @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { - // 调用父类中的 update 方法,进行具体的 Widget 内容更新操作 super.update(context, appWidgetManager, appWidgetIds); } - protected int getLayoutId() { return R.layout.widget_4x; } - /** - * 根据传入的背景颜色 ID 获取对应的背景资源 ID - * @param bgId 背景颜色 ID - * @return 对应的背景资源 ID - */ @Override protected int getBgResourceId(int bgId) { return ResourceParser.WidgetBgResources.getWidget4xBgResource(bgId); } - /** - * 获取该 Widget 对应的类型常量,用于在程序中进行判断和处理 - * @return 4x4 Widget 对应的类型常量 - */ @Override protected int getWidgetType() { return Notes.TYPE_WIDGET_4X; diff --git a/src/build.gradle b/src/build.gradle new file mode 100644 index 0000000..cdb59e3 --- /dev/null +++ b/src/build.gradle @@ -0,0 +1,17 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + google() + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:7.4.2' + } +} + +allprojects { + repositories { + google() + jcenter() + } +} diff --git a/src/gradle/wrapper/gradle-wrapper.jar b/src/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..e708b1c Binary files /dev/null and b/src/gradle/wrapper/gradle-wrapper.jar differ diff --git a/src/gradle/wrapper/gradle-wrapper.properties b/src/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..13115b6 --- /dev/null +++ b/src/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Apr 07 15:33:03 CST 2023 +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/src/gradlew b/src/gradlew new file mode 100644 index 0000000..4f906e0 --- /dev/null +++ b/src/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/src/gradlew.bat b/src/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/src/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/import-summary.txt b/src/import-summary.txt new file mode 100644 index 0000000..8fea95f --- /dev/null +++ b/src/import-summary.txt @@ -0,0 +1,42 @@ +ECLIPSE ANDROID PROJECT IMPORT SUMMARY +====================================== + +Ignored Files: +-------------- +The following files were *not* copied into the new Gradle project; you +should evaluate whether these are still needed in your project and if +so manually move them: + +* .gitignore +* .idea\ +* .idea\.gitignore +* .idea\misc.xml +* .idea\modules.xml +* .idea\workspace.xml +* NOTICE +* Notes-master.iml +* README + +Moved Files: +------------ +Android Gradle projects use a different directory structure than ADT +Eclipse projects. Here's how the projects were restructured: + +* AndroidManifest.xml => app\src\main\AndroidManifest.xml +* res\ => app\src\main\res\ +* src\ => app\src\main\java\ + +Next Steps: +----------- +You can now build the project. The Gradle project needs network +connectivity to download dependencies. + +Bugs: +----- +If for some reason your project does not build, and you determine that +it is due to a bug or limitation of the Eclipse to Gradle importer, +please file a bug at http://b.android.com with category +Component-Tools. + +(This import summary is for your information only, and can be deleted +after import once you are satisfied with the results.) diff --git a/src/local.properties b/src/local.properties new file mode 100644 index 0000000..30693dd --- /dev/null +++ b/src/local.properties @@ -0,0 +1,7 @@ +## This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# +#Fri Apr 07 15:33:03 CST 2023 +sdk.dir=C\:\\Users\\conquer\\AppData\\Local\\Android\\Sdk diff --git a/src/settings.gradle b/src/settings.gradle new file mode 100644 index 0000000..e7b4def --- /dev/null +++ b/src/settings.gradle @@ -0,0 +1 @@ +include ':app'