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.
TEST1231/NoteItemData.java

121 lines
4.9 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.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;
// NoteItemData类用于封装从数据库查询得到的笔记项数据
public class NoteItemData {
// 定义从数据库中查询笔记项时需要返回的列
static final String [] PROJECTION = new String [] {
NoteColumns.ID, // 笔记ID
NoteColumns.ALERTED_DATE, // 提醒日期
NoteColumns.BG_COLOR_ID, // 背景颜色ID
NoteColumns.CREATED_DATE, // 创建日期
NoteColumns.HAS_ATTACHMENT, // 是否有附件
NoteColumns.MODIFIED_DATE, // 修改日期
NoteColumns.NOTES_COUNT, // 笔记数量(对于文件夹类型有效)
NoteColumns.PARENT_ID, // 父ID如果是文件夹内的笔记则为文件夹ID
NoteColumns.SNIPPET, // 摘要
NoteColumns.TYPE, // 笔记类型(笔记、文件夹、系统笔记等)
NoteColumns.WIDGET_ID, // 小部件ID
NoteColumns.WIDGET_TYPE, // 小部件类型
};
// 列索引常量用于从Cursor中获取对应列的值
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; // 笔记ID
private long mAlertDate; // 提醒日期
private int mBgColorId; // 背景颜色ID
private long mCreatedDate; // 创建日期
private boolean mHasAttachment; // 是否有附件
private long mModifiedDate; // 修改日期
private int mNotesCount; // 笔记数量
private long mParentId; // 父ID
private String mSnippet; // 摘要
private int mType; // 笔记类型
private int mWidgetId; // 小部件ID
private int mWidgetType; // 小部件类型
private String mName; // 联系人姓名(如果是通话记录笔记)
private String mPhoneNumber; // 联系电话(如果是通话记录笔记)
// 笔记项的位置信息
private boolean mIsLastItem; // 是否是最后一个项目
private boolean mIsFirstItem; // 是否是第一个项目
private boolean mIsOnlyOneItem; // 是否是唯一的项目
private boolean mIsOneNoteFollowingFolder; // 是否是一个笔记紧跟在文件夹后面
private boolean mIsMultiNotesFollowingFolder; // 是否是多个笔记紧跟在文件夹后面
// 构造函数通过Cursor初始化NoteItemData对象
public NoteItemData(Context context, Cursor cursor) {
// 从Cursor中读取数据并赋值给成员变量
// ...(省略了具体的赋值代码)
// 如果是通话记录笔记,则通过电话号码获取联系人姓名
// ...(省略了具体的逻辑代码)
// 初始化名称,如果获取不到联系人姓名,则使用空字符串
if (mName == null) {
mName = "";
}
// 检查当前笔记项的位置信息
checkPostion(cursor);
}
// 检查当前笔记项的位置信息
private void checkPostion(Cursor cursor) {
// ...(省略了具体的逻辑代码)
}
// Getter方法用于获取笔记项的各种属性
// ...省略了具体的Getter方法
// 判断是否有提醒
public boolean hasAlert() {
return (mAlertDate > 0);
}
// 判断是否是通话记录笔记
public boolean isCallRecord() {
return (mParentId == Notes.ID_CALL_RECORD_FOLDER && !TextUtils.isEmpty(mPhoneNumber));
}
// 静态方法用于从Cursor中获取笔记类型
public static int getNoteType(Cursor cursor) {
return cursor.getInt(TYPE_COLUMN);
}
}