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.
minote_wd/Notes.java

313 lines
19 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.
*/
// 包声明表明该类属于net.micode.notes.data包用于存放笔记相关的数据结构和常量定义等内容
package net.micode.notes.data;
import android.net.Uri;
// Notes类主要用于定义笔记应用中的各种常量、数据列接口以及特定类型笔记相关的内部类等起到统一管理和规范数据相关定义的作用
public class Notes {
// 用于定义内容提供器Content Provider的授权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比如在启动某个与笔记相关的Activity或者Service时可以通过这些键传递特定的参数此处是与提醒日期相关的键
public static final String INTENT_EXTRA_ALERT_DATE = "net.micode.notes.alert_date";
// 与笔记背景颜色ID相关的Intent额外数据的键用于传递或获取笔记背景颜色相关设置信息
public static final String INTENT_EXTRA_BACKGROUND_ID = "net.micode.notes.background_color_id";
// 与笔记对应的桌面小部件ID相关的Intent额外数据的键可用于在不同组件间传递小部件相关的标识信息
public static final String INTENT_EXTRA_WIDGET_ID = "net.micode.notes.widget_id";
// 与笔记对应的桌面小部件类型相关的Intent额外数据的键例如可能区分不同尺寸、样式的小部件类型
public static final String INTENT_EXTRA_WIDGET_TYPE = "net.micode.notes.widget_type";
// 与文件夹ID相关的Intent额外数据的键用于传递文件夹相关的标识信息方便进行文件夹相关操作的参数传递
public static final String INTENT_EXTRA_FOLDER_ID = "net.micode.notes.folder_id";
// 与通话日期相关的Intent额外数据的键针对通话记录笔记等场景传递通话发生的日期信息
public static final String INTENT_EXTRA_CALL_DATE = "net.micode.notes.call_date";
// 定义无效的桌面小部件类型常量,用于表示不符合规范或者未初始化等情况下的小部件类型
public static final int TYPE_WIDGET_INVALIDE = -1;
// 定义一种桌面小部件类型常量可能表示2倍尺寸等特定样式的小部件具体含义需根据应用实际布局和设计确定
public static final int TYPE_WIDGET_2X = 0;
// 定义另一种桌面小部件类型常量可能表示4倍尺寸等特定样式的小部件同样具体样式和用途取决于应用本身的设定
public static final int TYPE_WIDGET_4X = 1;
// DataConstants内部类用于定义数据相关的常量比如不同类型笔记对应的MIME类型等方便统一管理和识别不同类型的数据内容
public static class DataConstants {
// 表示普通文本笔记对应的MIME类型其具体值来源于TextNote内部类中定义的CONTENT_ITEM_TYPE用于标识文本笔记类型的数据
public static final String NOTE = TextNote.CONTENT_ITEM_TYPE;
// 表示通话记录笔记对应的MIME类型其值来自CallNote内部类中定义的CONTENT_ITEM_TYPE用于区分通话记录这种特殊类型的数据
public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE;
}
/**
* 用于查询所有笔记和文件夹的统一资源标识符Uri
* 通过指定 "content://" 协议以及应用的授权字符串AUTHORITY和资源路径"/note")构建而成,
* 在使用Content Provider进行数据查询操作时作为查询所有笔记和文件夹相关数据的入口地址。
*/
public static final Uri CONTENT_NOTE_URI = Uri.parse("content://" + AUTHORITY + "/note");
/**
* 用于查询数据比如笔记的具体内容、附件等相关数据的统一资源标识符Uri
* 同样按照 "content://" 协议加上授权字符串和对应资源路径("/data")来构建,
* 作为查询笔记相关详细数据内容的访问地址供Content Provider操作使用。
*/
public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + AUTHORITY + "/data");
// NoteColumns接口用于定义笔记表note表中各个数据列的名称常量方便在数据库操作以及数据处理过程中统一引用保证列名的准确性和一致性
public interface NoteColumns {
/**
* 表示一行数据对应一条笔记记录的唯一标识符ID
* <P> 数据类型INTEGER在数据库中通常对应长整型用于唯一标识每条记录 </P>
*/
public static final String ID = "_id";
/**
* 表示笔记或文件夹的父级ID用于构建笔记的层级结构例如文件夹下包含子笔记等情况通过该字段建立关联。
* <P> 数据类型INTEGER长整型 </P>
*/
public static final String PARENT_ID = "parent_id";
/**
* 笔记或文件夹的创建日期,用于记录创建时间信息,方便按时间排序、筛选等操作。
* <P> 数据类型INTEGER长整型通常存储时间戳等表示日期时间的数据 </P>
*/
public static final String CREATED_DATE = "created_date";
/**
* 最新修改日期,用于跟踪笔记或文件夹最后一次被修改的时间,可用于判断数据是否有更新等情况。
* <P> 数据类型INTEGER长整型 </P>
*/
public static final String MODIFIED_DATE = "modified_date";
/**
* 提醒日期,用于设置笔记的提醒时间相关功能,比如在特定时间提醒用户查看笔记内容等。
* <P> 数据类型INTEGER长整型 </P>
*/
public static final String ALERTED_DATE = "alert_date";
/**
* 对于文件夹而言,表示文件夹的名称;对于笔记来说,则是文本内容的摘要等简短描述信息,方便在列表展示等场景快速呈现主要内容。
* <P> 数据类型TEXT文本类型 </P>
*/
public static final String SNIPPET = "snippet";
/**
* 笔记对应的桌面小部件ID用于关联笔记与相应的桌面小部件便于在小部件上展示或操作相关笔记。
* <P> 数据类型INTEGER长整型 </P>
*/
public static final String WIDGET_ID = "widget_id";
/**
* 笔记对应的桌面小部件类型用于区分不同样式、尺寸的小部件如前面定义的2X、4X等类型。
* <P> 数据类型INTEGER长整型 </P>
*/
public static final String WIDGET_TYPE = "widget_type";
/**
* 笔记背景颜色的ID用于设置和记录笔记在界面上显示的背景颜色相关信息方便个性化展示。
* <P> 数据类型INTEGER长整型 </P>
*/
public static final String BG_COLOR_ID = "bg_color_id";
/**
* 对于文本笔记该字段表示是否有附件通常为0表示没有附件对于多媒体笔记等则表示至少有一个附件通常为1用于区分笔记是否包含额外的附属文件等情况。
* <P> 数据类型INTEGER整型 </P>
*/
public static final String HAS_ATTACHMENT = "has_attachment";
/**
* 文件夹中包含的笔记数量,用于统计每个文件夹下有多少条笔记,方便进行文件夹相关的管理操作,如显示文件夹包含的笔记数量等。
* <P> 数据类型INTEGER长整型 </P>
*/
public static final String NOTES_COUNT = "notes_count";
/**
* 表示文件类型是笔记还是文件夹等通过前面定义的TYPE_NOTE、TYPE_FOLDER、TYPE_SYSTEM等常量来区分不同性质的记录。
* <P> 数据类型INTEGER整型 </P>
*/
public static final String TYPE = "type";
/**
* 最后一次同步的ID可能用于与服务器等外部数据源进行数据同步操作时的标识记录上次同步的相关信息便于判断数据是否需要再次同步等。
* <P> 数据类型INTEGER长整型 </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";
/**
* 对应的gtask ID可能用于与某些任务管理系统如Google Tasks等进行关联或交互时的标识具体用途取决于应用与外部任务系统的集成情况。
* <P> 数据类型 : TEXT文本类型 </P>
*/
public static final String GTASK_ID = "gtask_id";
/**
* 版本代码,可用于记录笔记相关的数据版本信息,比如在数据结构变化、功能更新等情况下通过版本号来判断兼容性和进行相应处理。
* <P> 数据类型 : INTEGER长整型 </P>
*/
public static final String VERSION = "version";
}
// DataColumns接口用于定义存放笔记相关数据如附件、详细内容等的数据表data表中各数据列的名称常量与NoteColumns类似保证在数据库操作中对列名的准确引用
public interface DataColumns {
/**
* 表示一行数据对应一条数据记录比如一条附件记录或者笔记详细内容记录等的唯一标识符ID
* <P> 数据类型INTEGER长整型 </P>
*/
public static final String ID = "_id";
/**
* 该行数据所代表的项目的MIME类型用于标识数据的具体格式或类型比如文本、图片、音频等不同类型的数据通过不同的MIME类型区分。
* <P> 数据类型Text文本类型 </P>
*/
public static final String MIME_TYPE = "mime_type";
/**
* 对应该数据所属笔记的引用ID通过这个字段建立数据与笔记之间的关联表明这条数据是属于哪条笔记的附件、详细内容等情况。
* <P> 数据类型INTEGER长整型 </P>
*/
public static final String NOTE_ID = "note_id";
/**
* 笔记或文件夹的创建日期与NoteColumns中的CREATED_DATE类似用于记录该数据相关的创建时间信息可能用于排序、版本管理等操作。
* <P> 数据类型INTEGER长整型 </P>
*/
public static final String CREATED_DATE = "created_date";
/**
* 最新修改日期同样类似于NoteColumns中的MODIFIED_DATE用于跟踪该数据最后一次被修改的时间便于判断数据的时效性和是否需要同步等情况。
* <P> 数据类型INTEGER长整型 </P>
*/
public static final String MODIFIED_DATE = "modified_date";
/**
* 数据的具体内容比如文本笔记的正文内容、附件的二进制数据等根据不同的MIME类型存储相应格式的数据内容。
* <P> 数据类型TEXT文本类型 </P>
*/
public static final String CONTENT = "content";
/**
* 通用数据列,其含义取决于具体的{@link #MIMETYPE}类型主要用于存储整数类型的数据不同的MIME类型下该字段可表示不同的具体业务含义。
* <P> 数据类型INTEGER整型 </P>
*/
public static final String DATA1 = "data1";
/**
* 通用数据列含义同样取决于MIME类型用于存储整数类型的数据可在不同业务场景下根据需要赋予其具体含义。
* <P> 数据类型INTEGER整型 </P>
*/
public static final String DATA2 = "data2";
/**
* 通用数据列含义由MIME类型决定用于存储文本类型的数据可根据具体的数据类型和业务逻辑存放相应的文本信息。
* <P> 数据类型TEXT文本类型 </P>
*/
public static final String DATA3 = "data3";
/**
* 通用数据列也是基于MIME类型确定含义用于存储文本类型的数据在不同的笔记相关数据场景下可存放不同的文本内容。
* <P> 数据类型TEXT文本类型 </P>
*/
public static final String DATA4 = "data3";
/**
* 通用数据列同样根据MIME类型来明确其具体含义用于存储文本类型的数据作为一种可灵活使用的文本数据存储字段。
* <P> 数据类型TEXT文本类型 </P>
*/
public static final String DATA5 = "data5";
}
// TextNote内部类继承自DataColumns接口主要用于定义文本笔记相关的特定数据列或常量进一步细化文本笔记的数据结构和相关操作属性
public static final class TextNote implements DataColumns {
/**
* 用于指示文本是否处于复选框列表模式的标志例如在笔记内容是待办事项列表等场景下使用1表示处于复选框列表模式0表示普通文本模式。
* <P> 数据类型Integer整型取值为1或0来区分不同模式 </P>
*/
public static final String MODE = DATA1;
public static final int MODE_CHECK_LIST = 1;
// 文本笔记对应的内容类型的MIME字符串用于标识一组文本笔记内容的类型通常在Content Provider相关操作中用于匹配查询等情况。
public static final String CONTENT_TYPE = "vnd.android.cursor.dir/text_note";
// 单个文本笔记项对应的内容类型的MIME字符串用于精确标识一条文本笔记内容的类型方便更细致的Content Provider操作如获取单条文本笔记数据等。
public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/text_note";
// 用于查询文本笔记相关数据的统一资源标识符Uri按照标准的Content Provider的Uri构建方式通过授权字符串和特定资源路径"/text_note")组成,作为访问文本笔记数据的入口。
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/text_note");
}
// CallNote内部类它实现了DataColumns接口意味着它遵循该接口定义的数据列规范
// 主要用于定义通话记录笔记相关的特定数据属性、MIME类型以及对应的内容访问Uri等
// 方便在整个笔记应用的数据体系中对通话记录笔记这种特定类型进行专门的处理和操作。
public static final class CallNote implements DataColumns {
/**
* 定义表示通话记录笔记中通话日期的字段常量。
* 它复用了父接口DataColumns中定义的通用数据列DATA1来存储通话日期信息
* <P> 数据类型INTEGER长整型通常用于存储时间戳等方式表示的日期值方便后续按时间进行排序、筛选等操作。 </P>
*/
public static final String CALL_DATE = DATA1;
/**
* 定义表示通话记录笔记中电话号码的字段常量。
* 使用了父接口DataColumns中通用的文本数据列DATA3来存储电话号码信息
* <P> 数据类型TEXT文本类型符合电话号码作为字符串进行存储和处理的常规需求。 </P>
*/
public static final String PHONE_NUMBER = DATA3;
// 定义通话记录笔记对应的内容类型的MIME字符串用于标识一组通话记录笔记内容的类型。
// 在Content Provider相关操作中当需要查询、匹配一组通话记录笔记时可通过该MIME类型进行筛选判断
// 表明这是一种代表多个通话记录笔记的目录类型(通常对应数据库中的多条记录集合)。
public static final String CONTENT_TYPE = "vnd.android.cursor.dir/call_note";
// 定义单个通话记录笔记项对应的内容类型的MIME字符串用于精确标识一条通话记录笔记内容的类型。
// 相比于CONTENT_TYPE用于表示一组记录它更侧重于精准定位到单条通话记录笔记方便在Content Provider操作中进行获取单条数据等更细致的操作。
public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/call_note";
// 定义用于查询通话记录笔记相关数据的统一资源标识符Uri
// 按照安卓中Content Provider标准的Uri构建方式通过指定 "content://" 协议、应用的授权字符串AUTHORITY在外部类Notes中定义以及特定资源路径"/call_note")组成,
// 这个Uri作为访问通话记录笔记数据的入口地址在使用ContentResolver等进行数据查询、插入、更新、删除等操作时会用到以定位到通话记录笔记相关的数据资源。
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/call_note");
}
}