sue_branch
sue 3 months ago
parent 5a8c2841fa
commit 43cceca1d6

@ -24,24 +24,28 @@ 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;
/**
* 便
* 便
*/
public class NoteItemData {
// 数据库查询投影(指定需要查询的字段)
static final String [] PROJECTION = new String [] {
NoteColumns.ID,
NoteColumns.ALERTED_DATE,
NoteColumns.BG_COLOR_ID,
NoteColumns.CREATED_DATE,
NoteColumns.HAS_ATTACHMENT,
NoteColumns.MODIFIED_DATE,
NoteColumns.NOTES_COUNT,
NoteColumns.PARENT_ID,
NoteColumns.SNIPPET,
NoteColumns.TYPE,
NoteColumns.WIDGET_ID,
NoteColumns.WIDGET_TYPE,
NoteColumns.ID, // 便签ID
NoteColumns.ALERTED_DATE, // 提醒日期
NoteColumns.BG_COLOR_ID, // 背景颜色ID
NoteColumns.CREATED_DATE, // 创建日期
NoteColumns.HAS_ATTACHMENT, // 是否有附件0/1
NoteColumns.MODIFIED_DATE, // 修改日期
NoteColumns.NOTES_COUNT, // 子便签数量(用于文件夹类型)
NoteColumns.PARENT_ID, // 父级ID文件夹ID或系统类型标识
NoteColumns.SNIPPET, // 便签摘要
NoteColumns.TYPE, // 便签类型(普通便签、文件夹等)
NoteColumns.WIDGET_ID, // 小部件ID
NoteColumns.WIDGET_TYPE, // 小部件类型
};
// 投影字段索引常量(提高代码可读性)
private static final int ID_COLUMN = 0;
private static final int ALERTED_DATE_COLUMN = 1;
private static final int BG_COLOR_ID_COLUMN = 2;
@ -54,71 +58,88 @@ public class NoteItemData {
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;
private long mAlertDate;
private int mBgColorId;
private long mCreatedDate;
private boolean mHasAttachment;
private long mModifiedDate;
private int mNotesCount;
private long mParentId;
private String mSnippet;
private int mType;
private int mWidgetId;
private int mWidgetType;
private String mName;
private String mPhoneNumber;
private boolean mIsLastItem;
private boolean mIsFirstItem;
private boolean mIsOnlyOneItem;
private boolean mIsOneNoteFollowingFolder;
private boolean mIsMultiNotesFollowingFolder;
// 便签基础属性
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; // 便签类型参考Notes.TYPE_*常量)
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便
* @param context
* @param cursor 便
*/
public NoteItemData(Context context, Cursor cursor) {
// 读取基础字段
mId = cursor.getLong(ID_COLUMN);
mAlertDate = cursor.getLong(ALERTED_DATE_COLUMN);
mBgColorId = cursor.getInt(BG_COLOR_ID_COLUMN);
mCreatedDate = cursor.getLong(CREATED_DATE_COLUMN);
mHasAttachment = (cursor.getInt(HAS_ATTACHMENT_COLUMN) > 0) ? true : false;
mHasAttachment = (cursor.getInt(HAS_ATTACHMENT_COLUMN) > 0) ? true : false;// 0转false非0转true
mModifiedDate = cursor.getLong(MODIFIED_DATE_COLUMN);
mNotesCount = cursor.getInt(NOTES_COUNT_COLUMN);
mParentId = cursor.getLong(PARENT_ID_COLUMN);
mSnippet = cursor.getString(SNIPPET_COLUMN);
// 移除便签内容中的特殊标记(可能用于富文本格式)
mSnippet = mSnippet.replace(NoteEditActivity.TAG_CHECKED, "").replace(
NoteEditActivity.TAG_UNCHECKED, "");
mType = cursor.getInt(TYPE_COLUMN);
mWidgetId = cursor.getInt(WIDGET_ID_COLUMN);
mWidgetType = cursor.getInt(WIDGET_TYPE_COLUMN);
// 处理通话记录特殊逻辑(父级为通话记录文件夹时)
mPhoneNumber = "";
if (mParentId == Notes.ID_CALL_RECORD_FOLDER) {
// 通过便签ID获取通话号码
mPhoneNumber = DataUtils.getCallNumberByNoteId(context.getContentResolver(), mId);
if (!TextUtils.isEmpty(mPhoneNumber)) {
// 根据电话号码查询联系人姓名
mName = Contact.getContact(context, mPhoneNumber);
// 若未找到联系人,使用电话号码作为名称
if (mName == null) {
mName = mPhoneNumber;
}
}
}
// 确保名称非空
if (mName == null) {
mName = "";
}
// 检查条目在数据集中的位置状态
checkPostion(cursor);
}
/**
*
* @param cursor
*/
private void checkPostion(Cursor cursor) {
// 基本位置状态
mIsLastItem = cursor.isLast() ? true : false;
mIsFirstItem = cursor.isFirst() ? true : false;
mIsOnlyOneItem = (cursor.getCount() == 1);
mIsMultiNotesFollowingFolder = false;
mIsOneNoteFollowingFolder = false;
// 处理普通便签跟随在文件夹后的情况
if (mType == Notes.TYPE_NOTE && !mIsFirstItem) {
int position = cursor.getPosition();
int position = cursor.getPosition();// 记录当前位置
if (cursor.moveToPrevious()) {
// 移动到前一条目
if (cursor.getInt(TYPE_COLUMN) == Notes.TYPE_FOLDER
|| cursor.getInt(TYPE_COLUMN) == Notes.TYPE_SYSTEM) {
if (cursor.getCount() > (position + 1)) {
@ -133,7 +154,7 @@ public class NoteItemData {
}
}
}
// -------------------- 状态查询方法 --------------------
public boolean isOneFollowingFolder() {
return mIsOneNoteFollowingFolder;
}
@ -217,7 +238,11 @@ public class NoteItemData {
public boolean isCallRecord() {
return (mParentId == Notes.ID_CALL_RECORD_FOLDER && !TextUtils.isEmpty(mPhoneNumber));
}
/**
* Cursor便
* @param cursor
* @return 便Notes.TYPE_*
*/
public static int getNoteType(Cursor cursor) {
return cursor.getInt(TYPE_COLUMN);
}

Loading…
Cancel
Save