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.
git-test/src/main/java/net/micode/notes/data/Notes.java

414 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;
/**
* 小米便签应用的核心数据常量和接口定义类
* 包含便签、文件夹的类型定义、系统文件夹ID、数据库列名、内容URI等
* 是整个应用的数据模型基础,被各个组件广泛使用
*/
public class Notes {
/**
* ContentProvider的授权字符串用于标识便签内容提供者
*/
public static final String AUTHORITY = "micode_notes";
/**
* 日志标签,用于在日志系统中标识本类的日志信息
*/
public static final String TAG = "Notes";
/**
* 便签类型常量
* - TYPE_NOTE普通便签
* - TYPE_FOLDER文件夹
* - TYPE_SYSTEM系统文件夹
*/
public static final int TYPE_NOTE = 0; // 普通便签类型
public static final int TYPE_FOLDER = 1; // 文件夹类型
public static final int TYPE_SYSTEM = 2; // 系统文件夹类型
/**
* 系统文件夹ID常量
* - ID_ROOT_FOLDER根文件夹默认文件夹用于存储普通便签
* - ID_TEMPARAY_FOLDER临时文件夹用于存储没有归属文件夹的便签
* - ID_CALL_RECORD_FOLDER通话记录文件夹用于存储通话记录
* - ID_TRASH_FOLER回收站文件夹用于存储被删除的便签和文件夹
*/
public static final int ID_ROOT_FOLDER = 0; // 根文件夹ID
public static final int ID_TEMPARAY_FOLDER = -1; // 临时文件夹ID
public static final int ID_CALL_RECORD_FOLDER = -2; // 通话记录文件夹ID
public static final int ID_TRASH_FOLER = -3; // 回收站文件夹ID
/**
* Intent额外数据常量用于组件间传递参数
* - INTENT_EXTRA_ALERT_DATE提醒日期
* - INTENT_EXTRA_BACKGROUND_ID背景颜色ID
* - INTENT_EXTRA_WIDGET_ID小部件ID
* - INTENT_EXTRA_WIDGET_TYPE小部件类型
* - INTENT_EXTRA_FOLDER_ID文件夹ID
* - INTENT_EXTRA_CALL_DATE通话日期
*/
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"; // 背景颜色ID
public static final String INTENT_EXTRA_WIDGET_ID = "net.micode.notes.widget_id"; // 小部件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"; // 文件夹ID
public static final String INTENT_EXTRA_CALL_DATE = "net.micode.notes.call_date"; // 通话日期
/**
* 小部件类型常量
* - TYPE_WIDGET_INVALIDE无效小部件
* - TYPE_WIDGET_2X2x2大小的小部件
* - TYPE_WIDGET_4X4x4大小的小部件
*/
public static final int TYPE_WIDGET_INVALIDE = -1; // 无效小部件类型
public static final int TYPE_WIDGET_2X = 0; // 2x2小部件类型
public static final int TYPE_WIDGET_4X = 1; // 4x4小部件类型
/**
* 数据类型常量类,定义了不同类型的便签数据
* - NOTE普通文本便签数据
* - CALL_NOTE通话记录便签数据
*/
public static class DataConstants {
public static final String NOTE = TextNote.CONTENT_ITEM_TYPE; // 普通文本便签数据类型
public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE; // 通话记录便签数据类型
}
/**
* 用于查询所有便签和文件夹的URI
* 对应NoteProvider中的note表查询
*/
public static final Uri CONTENT_NOTE_URI = Uri.parse("content://" + AUTHORITY + "/note");
/**
* 用于查询便签详细数据的URI
* 对应NoteProvider中的data表查询
*/
public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + AUTHORITY + "/data");
/**
* Note表的列名接口定义
* 定义了便签和文件夹表的所有字段
*/
public interface NoteColumns {
/**
* 行的唯一标识符
* <P> 类型: INTEGER (long) </P>
*/
public static final String ID = "_id";
/**
* 便签或文件夹的父文件夹ID
* <P> 类型: INTEGER (long) </P>
*/
public static final String PARENT_ID = "parent_id";
/**
* 便签或文件夹的创建时间
* <P> 类型: INTEGER (long) </P>
*/
public static final String CREATED_DATE = "created_date";
/**
* 便签或文件夹的最后修改时间
* <P> 类型: INTEGER (long) </P>
*/
public static final String MODIFIED_DATE = "modified_date";
/**
* 便签的提醒时间
* <P> 类型: INTEGER (long) </P>
*/
public static final String ALERTED_DATE = "alert_date";
/**
* 文件夹的名称或便签的文本内容
* <P> 类型: TEXT </P>
*/
public static final String SNIPPET = "snippet";
/**
* 便签对应的小部件ID
* <P> 类型: INTEGER (long) </P>
*/
public static final String WIDGET_ID = "widget_id";
/**
* 便签对应的小部件类型
* <P> 类型: INTEGER (long) </P>
*/
public static final String WIDGET_TYPE = "widget_type";
/**
* 便签的背景颜色ID
* <P> 类型: INTEGER (long) </P>
*/
public static final String BG_COLOR_ID = "bg_color_id";
/**
* 便签是否有附件,对于文本便签没有附件,对于多媒体便签至少有一个附件
* <P> 类型: INTEGER </P>
*/
public static final String HAS_ATTACHMENT = "has_attachment";
/**
* 文件夹中包含的便签数量
* <P> 类型: INTEGER (long) </P>
*/
public static final String NOTES_COUNT = "notes_count";
/**
* 文件类型:文件夹或便签
* <P> 类型: INTEGER </P>
*/
public static final String TYPE = "type";
/**
* 最后同步ID
* <P> 类型: INTEGER (long) </P>
*/
public static final String SYNC_ID = "sync_id";
/**
* 本地修改标记,指示便签是否在本地被修改
* <P> 类型: INTEGER </P>
*/
public static final String LOCAL_MODIFIED = "local_modified";
/**
* 便签移动到临时文件夹之前的原始父文件夹ID
* <P> 类型 : INTEGER </P>
*/
public static final String ORIGIN_PARENT_ID = "origin_parent_id";
/**
* Google任务ID用于与Google Tasks同步
* <P> 类型 : TEXT </P>
*/
public static final String GTASK_ID = "gtask_id";
/**
* 版本号,用于跟踪便签的版本变化
* <P> 类型 : INTEGER (long) </P>
*/
public static final String VERSION = "version";
/**
* 置顶状态,用于标识便签是否置顶
* <P> 类型 : INTEGER (0: 未置顶, 1: 置顶) </P>
*/
public static final String IS_PINNED = "is_pinned";
/**
* 置顶优先级,用于排序置顶便签
* <P> 类型 : INTEGER (long),值越大优先级越高 </P>
*/
public static final String PIN_PRIORITY = "pin_priority";
/**
* 锁定状态,用于标识便签是否被密码锁定
* <P> 类型 : INTEGER (0: 未锁定, 1: 已锁定) </P>
*/
public static final String IS_LOCKED = "is_locked";
/**
* 锁定密码,存储加密后的手势密码
* <P> 类型 : TEXT </P>
*/
public static final String LOCK_PASSWORD = "lock_password";
/**
* 密码类型,标识便签使用的密码类型
* <P> 类型 : TEXT ("gesture" 或 "numeric") </P>
*/
public static final String PASSWORD_TYPE = "password_type";
/**
* 数字密码存储加密后的6位数字密码
* <P> 类型 : TEXT </P>
*/
public static final String NUMERIC_PASSWORD = "numeric_password";
/**
* 标题,便签的标题
* <P> 类型 : TEXT </P>
*/
public static final String TITLE = "title";
/**
* 标题最大长度
* <P> 类型 : INTEGER </P>
*/
public static final int TITLE_MAX_LENGTH = 50;
}
/**
* Data表的列名接口定义
* 定义了便签详细数据表的所有字段
* 支持多种类型的便签数据,如普通文本便签、通话记录便签等
*/
public interface DataColumns {
/**
* 行的唯一标识符
* <P> 类型: INTEGER (long) </P>
*/
public static final String ID = "_id";
/**
* 该行数据表示的项目的MIME类型
* 用于区分不同类型的便签数据,如普通文本便签、通话记录便签等
* <P> 类型: TEXT </P>
*/
public static final String MIME_TYPE = "mime_type";
/**
* 该行数据所属的便签ID
* 用于关联Data表和Note表
* <P> 类型: INTEGER (long) </P>
*/
public static final String NOTE_ID = "note_id";
/**
* 数据的创建时间
* <P> 类型: INTEGER (long) </P>
*/
public static final String CREATED_DATE = "created_date";
/**
* 数据的最后修改时间
* <P> 类型: INTEGER (long) </P>
*/
public static final String MODIFIED_DATE = "modified_date";
/**
* 数据的内容
* <P> 类型: TEXT </P>
*/
public static final String CONTENT = "content";
/**
* 通用数据列1具体含义由MIME类型决定用于整数类型数据
* <P> 类型: INTEGER </P>
*/
public static final String DATA1 = "data1";
/**
* 通用数据列2具体含义由MIME类型决定用于整数类型数据
* <P> 类型: INTEGER </P>
*/
public static final String DATA2 = "data2";
/**
* 通用数据列3具体含义由MIME类型决定用于文本类型数据
* <P> 类型: TEXT </P>
*/
public static final String DATA3 = "data3";
/**
* 通用数据列4具体含义由MIME类型决定用于文本类型数据
* <P> 类型: TEXT </P>
*/
public static final String DATA4 = "data4";
/**
* 通用数据列5具体含义由MIME类型决定用于文本类型数据
* <P> 类型: TEXT </P>
*/
public static final String DATA5 = "data5";
}
/**
* 普通文本便签的数据类型定义
* 实现了DataColumns接口定义了文本便签特有的字段和常量
*/
public static final class TextNote implements DataColumns {
/**
* 文本便签的模式标识,用于指示文本是否为 checklist 模式
* <P> 类型: Integer 1:checklist模式 0:普通模式 </P>
* 映射到Data表的DATA1字段
*/
public static final String MODE = DATA1;
/**
* 图片路径,用于存储插入的图片文件路径
* 映射到Data表的DATA3字段
*/
public static final String IMAGE_PATH = DATA3;
/**
* Checklist模式常量
*/
public static final int MODE_CHECK_LIST = 1;
/**
* 文本便签集合的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
*/
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/text_note");
}
/**
* 通话记录便签的数据类型定义
* 实现了DataColumns接口定义了通话记录便签特有的字段和常量
*/
public static final class CallNote implements DataColumns {
/**
* 通话记录的通话日期
* <P> 类型: INTEGER (long) </P>
* 映射到Data表的DATA1字段
*/
public static final String CALL_DATE = DATA1;
/**
* 通话记录的电话号码
* <P> 类型: TEXT </P>
* 映射到Data表的DATA3字段
*/
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
*/
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/call_note");
}
}