You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
xiangmuyi/Notes.java

292 lines
14 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* 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类型在数据库中对应的长整型表示
* <P> Type: INTEGER (long) </P>
*/
public static final String ID = "_id";
/**
* 笔记或文件夹的父级ID用于表示层级关系类型为长整型
* <P> Type: INTEGER (long) </P>
*/
public static final String PARENT_ID = "parent_id";
/**
* 笔记或文件夹的创建日期,以时间戳等长整型数值表示,方便记录和查询创建时间先后顺序等操作
* <P> Type: INTEGER (long) </P>
*/
public static final String CREATED_DATE = "created_date";
/**
* 笔记或文件夹的最近修改日期,同样以长整型表示,便于跟踪数据的更新情况
* <P> Type: INTEGER (long) </P>
*/
public static final String MODIFIED_DATE = "modified_date";
/**
* 提醒日期,例如设置了提醒功能的笔记对应的提醒时间,类型为长整型
* <P> Type: INTEGER (long) </P>
*/
public static final String ALERTED_DATE = "alert_date";
/**
* 对于文件夹来说是文件夹名称对于笔记来说是文本内容的摘要等类型为文本TEXT类型
* <P> Type: TEXT </P>
*/
public static final String SNIPPET = "snippet";
/**
* 笔记对应的桌面小部件的ID长整型用于关联笔记与相应的小部件便于小部件展示对应笔记相关信息等操作
* <P> Type: INTEGER (long) </P>
*/
public static final String WIDGET_ID = "widget_id";
/**
* 笔记对应的桌面小部件的类型,长整型,用于区分不同规格或功能的小部件
* <P> Type: INTEGER (long) </P>
*/
public static final String WIDGET_TYPE = "widget_type";
/**
* 笔记的背景颜色的ID长整型可用于设置笔记在界面上显示时的背景颜色相关属性
* <P> Type: INTEGER (long) </P>
*/
public static final String BG_COLOR_ID = "bg_color_id";
/**
* 用于表示笔记是否有附件对于文本笔记通常没有附件值为0等表示对于多媒体笔记则至少有一个附件值为1等表示类型为整型
* <P> Type: INTEGER </P>
*/
public static final String HAS_ATTACHMENT = "has_attachment";
/**
* 文件夹中包含的笔记数量,长整型,方便统计和展示文件夹内的笔记情况
* <P> Type: INTEGER (long) </P>
*/
public static final String NOTES_COUNT = "notes_count";
/**
* 表示文件类型是文件夹还是笔记整型通过不同的值如前面定义的TYPE_NOTE、TYPE_FOLDER等来区分
* <P> Type: INTEGER </P>
*/
public static final String TYPE = "type";
/**
* 最后一次同步的ID长整型可能用于与服务器等外部数据源同步数据时的标识和记录
* <P> Type: INTEGER (long) </P>
*/
public static final String SYNC_ID = "sync_id";
/**
* 用于指示本地是否有修改的标志,整型,例如修改了笔记内容后可设置相应值来表示已修改状态
* <P> Type: INTEGER </P>
*/
public static final String LOCAL_MODIFIED = "local_modified";
/**
* 在移动到临时文件夹之前的原始父级ID整型用于记录笔记在文件夹层级结构中的原始位置等情况
* <P> Type : INTEGER </P>
*/
public static final String ORIGIN_PARENT_ID = "origin_parent_id";
/**
* 与gtask相关的ID文本TEXT类型可能用于与其他任务管理相关功能的关联或标识具体取决于应用集成的任务管理体系
* <P> Type : TEXT </P>
*/
public static final String GTASK_ID = "gtask_id";
/**
* 版本代码,长整型,可用于记录笔记数据的版本情况,例如在数据更新迭代时进行版本控制等操作
* <P> Type : INTEGER (long) </P>
*/
public static final String VERSION = "version";
}
// DataColumns接口定义了存储笔记相关数据的数据表可能是更详细的数据表与NoteColumns对应的主表有所区分中各列的列名常量
public interface DataColumns {
/**
* 表示一行数据的唯一ID长整型用于唯一标识每一条数据记录
* <P> Type: INTEGER (long) </P>
*/
public static final String ID = "_id";
/**
* 该行数据所代表的项的MIME类型文本TEXT类型用于标识数据的具体格式、性质等比如是文本、图片等不同类型的数据
* <P> Type: Text </P>
*/
public static final String MIME_TYPE = "mime_type";
/**
* 该数据所属笔记的引用ID长整型建立数据与对应笔记之间的关联关系方便查找和管理属于某条笔记的具体数据
* <P> Type: INTEGER (long) </P>
*/
public static final String NOTE_ID = "note_id";
/**
* 数据的创建日期,长整型,记录数据创建的时间信息
* <P> Type: INTEGER (long) </P>
*/
public static final String CREATED_DATE = "created_date";
/**
* 数据的最近修改日期,长整型,用于跟踪数据的更新情况
* <P> Type: INTEGER (long) </P>
*/
public static final String MODIFIED_DATE = "modified_date";
/**
* 数据的具体内容文本TEXT类型实际存储的数据文本信息等就放在这一列根据不同MIME类型可能有不同的格式和含义
* <P> Type: TEXT </P>
*/
public static final String CONTENT = "content";
/**
* 通用数据列,其含义根据 {@link #MIMETYPE} 具体确定,用于整数数据类型,整型
* <P> Type: INTEGER </P>
*/
public static final String DATA1 = "data1";
/**
* 通用数据列,其含义根据 {@link #MIMETYPE} 具体确定,用于整数数据类型,整型
* <P> Type: INTEGER </P>
*/
public static final String DATA2 = "data2";
/**
* 通用数据列,其含义根据 {@link #MIMETYPE} 具体确定用于文本数据类型文本TEXT类型
* <P> Type: TEXT </P>
*/
public static final String DATA3 = "data3";
/**
* 通用数据列,其含义根据 {@link #MIMETYPE} 具体确定用于文本数据类型文本TEXT类型
* <P> Type: TEXT </P>
*/
public static final String DATA4 = "data4";
/**
* 通用数据列,其含义根据 {@link #MIMETYPE} 具体确定用于文本数据类型文本TEXT类型
* <P> Type: TEXT </P>
*/
public static final String DATA5 = "data5";
}
// TextNote内部类继承自DataColumns接口主要用于定义文本笔记相关的特定属性、常量以及内容资源标识符Uri等信息
public static final class TextNote implements DataColumns {
/**
* 用于指示文本是否处于复选框列表模式的标志整型1表示处于复选框列表模式0表示正常文本模式
* <P> Type: Integer 1:check list mode 0: normal mode </P>
*/
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 {
/**
* 通话记录的通话日期,长整型,用于记录通话发生的时间信息
* <P> Type: INTEGER (long) </P>
*/
public static final String CALL_DATE = DATA1;
/**
* 通话记录对应的电话号码文本TEXT类型存储通话的对方号码等信息
* <P> Type: TEXT </P>
*/
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");
}
}