/* * 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; // Notes类用于定义与笔记(Notes)相关的各种常量、接口以及内部类,为整个笔记应用的数据结构和操作提供统一的规范和标识 public class Notes { // 定义笔记应用的授权(Authority)字符串,用于在内容提供器(Content Provider)中标识该应用的数据来源 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; /** * 以下几个ID是系统文件夹的标识符说明 * {@link Notes#ID_ROOT_FOLDER } 表示默认文件夹 * {@link Notes#ID_TEMPARAY_FOLDER } 用于存放无所属文件夹的笔记 * {@link Notes#ID_CALL_RECORD_FOLDER} 用于存储通话记录相关的笔记 */ 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; // 定义一系列用于传递额外数据的Intent的键(Key)常量,方便在不同组件间传递与笔记相关的特定数据 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; // DataConstants内部类,用于定义笔记相关的数据类型常量,目前主要涉及文本笔记(TextNote)和通话记录笔记(CallNote)的内容类型 public static class DataConstants { public static final String NOTE = TextNote.CONTENT_ITEM_TYPE; public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE; } /** * 用于查询所有笔记和文件夹的统一资源标识符(Uri),通过指定的授权(AUTHORITY)和路径("/note")构建而成 * 外部组件可以使用这个Uri来访问该应用中所有笔记和文件夹相关的数据(通过内容提供器机制) */ public static final Uri CONTENT_NOTE_URI = Uri.parse("content://" + AUTHORITY + "/note"); /** * 用于查询数据的统一资源标识符(Uri),同样基于应用的授权(AUTHORITY)构建,路径为"/data" * 可用于获取更具体的数据信息(比如不同类型笔记包含的数据内容等) */ public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + AUTHORITY + "/data"); // NoteColumns接口,定义了笔记表(用于存储笔记相关信息的数据库表)中各列的列名常量,方便在数据库操作等代码中统一引用 public interface NoteColumns { /** * 表示一行数据(一条笔记记录)的唯一ID,类型为长整型(INTEGER类型在数据库中对应的长整型表示) *

Type: INTEGER (long)

*/ public static final String ID = "_id"; /** * 笔记或文件夹的父级ID,用于表示层级关系,类型为长整型 *

Type: INTEGER (long)

*/ public static final String PARENT_ID = "parent_id"; /** * 笔记或文件夹的创建日期,以时间戳等长整型数值表示,方便记录和查询创建时间先后顺序等操作 *

Type: INTEGER (long)

*/ public static final String CREATED_DATE = "created_date"; /** * 笔记或文件夹的最近修改日期,同样以长整型表示,便于跟踪数据的更新情况 *

Type: INTEGER (long)

*/ public static final String MODIFIED_DATE = "modified_date"; /** * 提醒日期,例如设置了提醒功能的笔记对应的提醒时间,类型为长整型 *

Type: INTEGER (long)

*/ public static final String ALERTED_DATE = "alert_date"; /** * 对于文件夹来说是文件夹名称,对于笔记来说是文本内容的摘要等,类型为文本(TEXT)类型 *

Type: TEXT

*/ public static final String SNIPPET = "snippet"; /** * 笔记对应的桌面小部件的ID,长整型,用于关联笔记与相应的小部件,便于小部件展示对应笔记相关信息等操作 *

Type: INTEGER (long)

*/ public static final String WIDGET_ID = "widget_id"; /** * 笔记对应的桌面小部件的类型,长整型,用于区分不同规格或功能的小部件 *

Type: INTEGER (long)

*/ public static final String WIDGET_TYPE = "widget_type"; /** * 笔记的背景颜色的ID,长整型,可用于设置笔记在界面上显示时的背景颜色相关属性 *

Type: INTEGER (long)

*/ public static final String BG_COLOR_ID = "bg_color_id"; /** * 用于表示笔记是否有附件,对于文本笔记通常没有附件(值为0等表示),对于多媒体笔记则至少有一个附件(值为1等表示),类型为整型 *

Type: INTEGER

*/ public static final String HAS_ATTACHMENT = "has_attachment"; /** * 文件夹中包含的笔记数量,长整型,方便统计和展示文件夹内的笔记情况 *

Type: INTEGER (long)

*/ public static final String NOTES_COUNT = "notes_count"; /** * 表示文件类型,是文件夹还是笔记,整型,通过不同的值(如前面定义的TYPE_NOTE、TYPE_FOLDER等)来区分 *

Type: INTEGER

*/ public static final String TYPE = "type"; /** * 最后一次同步的ID,长整型,可能用于与服务器等外部数据源同步数据时的标识和记录 *

Type: INTEGER (long)

*/ public static final String SYNC_ID = "sync_id"; /** * 用于指示本地是否有修改的标志,整型,例如修改了笔记内容后可设置相应值来表示已修改状态 *

Type: INTEGER

*/ public static final String LOCAL_MODIFIED = "local_modified"; /** * 在移动到临时文件夹之前的原始父级ID,整型,用于记录笔记在文件夹层级结构中的原始位置等情况 *

Type : INTEGER

*/ public static final String ORIGIN_PARENT_ID = "origin_parent_id"; /** * 与gtask相关的ID,文本(TEXT)类型,可能用于与其他任务管理相关功能的关联或标识(具体取决于应用集成的任务管理体系) *

Type : TEXT

*/ public static final String GTASK_ID = "gtask_id"; /** * 版本代码,长整型,可用于记录笔记数据的版本情况,例如在数据更新迭代时进行版本控制等操作 *

Type : INTEGER (long)

*/ public static final String VERSION = "version"; } // DataColumns接口,定义了存储笔记相关数据的数据表(可能是更详细的数据表,与NoteColumns对应的主表有所区分)中各列的列名常量 public interface DataColumns { /** * 表示一行数据的唯一ID,长整型,用于唯一标识每一条数据记录 *

Type: INTEGER (long)

*/ public static final String ID = "_id"; /** * 该行数据所代表的项的MIME类型,文本(TEXT)类型,用于标识数据的具体格式、性质等,比如是文本、图片等不同类型的数据 *

Type: Text

*/ public static final String MIME_TYPE = "mime_type"; /** * 该数据所属笔记的引用ID,长整型,建立数据与对应笔记之间的关联关系,方便查找和管理属于某条笔记的具体数据 *

Type: INTEGER (long)

*/ public static final String NOTE_ID = "note_id"; /** * 数据的创建日期,长整型,记录数据创建的时间信息 *

Type: INTEGER (long)

*/ public static final String CREATED_DATE = "created_date"; /** * 数据的最近修改日期,长整型,用于跟踪数据的更新情况 *

Type: INTEGER (long)

*/ public static final String MODIFIED_DATE = "modified_date"; /** * 数据的具体内容,文本(TEXT)类型,实际存储的数据文本信息等就放在这一列(根据不同MIME类型可能有不同的格式和含义) *

Type: TEXT

*/ public static final String CONTENT = "content"; /** * 通用数据列,其含义根据 {@link #MIMETYPE} 具体确定,用于整数数据类型,整型 *

Type: INTEGER

*/ public static final String DATA1 = "data1"; /** * 通用数据列,其含义根据 {@link #MIMETYPE} 具体确定,用于整数数据类型,整型 *

Type: INTEGER

*/ public static final String DATA2 = "data2"; /** * 通用数据列,其含义根据 {@link #MIMETYPE} 具体确定,用于文本数据类型,文本(TEXT)类型 *

Type: TEXT

*/ public static final String DATA3 = "data3"; /** * 通用数据列,其含义根据 {@link #MIMETYPE} 具体确定,用于文本数据类型,文本(TEXT)类型 *

Type: TEXT

*/ public static final String DATA4 = "data4"; /** * 通用数据列,其含义根据 {@link #MIMETYPE} 具体确定,用于文本数据类型,文本(TEXT)类型 *

Type: TEXT

*/ public static final String DATA5 = "data5"; } // TextNote内部类,继承自DataColumns接口,主要用于定义文本笔记相关的特定属性、常量以及内容资源标识符(Uri)等信息 public static final class TextNote implements DataColumns { /** * 用于指示文本是否处于复选框列表模式的标志,整型,1表示处于复选框列表模式,0表示正常文本模式 *

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

*/ public static final String MODE = DATA1; public static final int MODE_CHECK_LIST = 1; // 表示文本笔记的内容类型,用于在内容提供器等场景标识该类型数据,格式符合Android的MIME类型规范 public static final String CONTENT_TYPE = "vnd.android.cursor.dir/text_note"; // 表示文本笔记的单个项目的内容类型,同样符合MIME类型规范,用于更具体的指向文本笔记中的单个条目 public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/text_note"; // 用于访问文本笔记相关数据的统一资源标识符(Uri),基于应用授权(AUTHORITY)和特定路径("/text_note")构建 public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/text_note"); } // CallNote内部类,同样继承自DataColumns接口,用于定义通话记录笔记相关的特定属性、常量以及内容资源标识符(Uri)等内容 public static final class CallNote implements DataColumns { /** * 通话记录的通话日期,长整型,用于记录通话发生的时间信息 *

Type: INTEGER (long)

*/ public static final String CALL_DATE = DATA1; /** * 通话记录对应的电话号码,文本(TEXT)类型,存储通话的对方号码等信息 *

Type: TEXT

*/ public static final String PHONE_NUMBER = DATA3; // 表示通话记录笔记的内容类型,符合MIME类型规范,用于标识该类型数据在内容提供器中的类型 public static final String CONTENT_TYPE = "vnd.android.cursor.dir/call_note"; // 表示通话记录笔记单个项目的内容类型,符合MIME类型规范,用于更具体指向通话记录笔记中的单个条目 public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/call_note"; // 用于访问通话记录笔记相关数据的统一资源标识符(Uri),基于应用授权(AUTHORITY)和特定路径("/call_note")构建 public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/call_note"); } }