From 450f9ac78c659c4aaf9a4e324b93719f1c363ade Mon Sep 17 00:00:00 2001 From: dxj <2490339921@qq.com> Date: Thu, 29 May 2025 19:40:19 +0800 Subject: [PATCH] java/net/micode/notes/ui/NoteItemData.java --- java/net/micode/notes/ui/NoteItemData.java | 217 +++++++++++---------- 1 file changed, 118 insertions(+), 99 deletions(-) diff --git a/java/net/micode/notes/ui/NoteItemData.java b/java/net/micode/notes/ui/NoteItemData.java index 0f5a878..519ce78 100644 --- a/java/net/micode/notes/ui/NoteItemData.java +++ b/java/net/micode/notes/ui/NoteItemData.java @@ -1,17 +1,6 @@ /* - * 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. + * 版权声明: MiCode 开源社区 版权所有 + * 本文件遵循 Apache License, Version 2.0 许可协议 */ package net.micode.notes.ui; @@ -27,72 +16,78 @@ 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, + // 定义查询投影,指定要查询的列 + 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 + 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; - 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; - 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 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; // 是否有多个笔记跟随文件夹 + + // 构造函数,用于从游标中初始化笔记数据 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; - 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( + mId = cursor.getLong(ID_COLUMN); // 获取笔记 ID + mAlertDate = cursor.getLong(ALERTED_DATE_COLUMN); // 获取提醒日期 + mBgColorId = cursor.getInt(BG_COLOR_ID_COLUMN); // 获取背景颜色 ID + mCreatedDate = cursor.getLong(CREATED_DATE_COLUMN); // 获取创建日期 + mHasAttachment = (cursor.getInt(HAS_ATTACHMENT_COLUMN) > 0) ? true : false; // 获取是否有附件 + mModifiedDate = cursor.getLong(MODIFIED_DATE_COLUMN); // 获取修改日期 + mNotesCount = cursor.getInt(NOTES_COUNT_COLUMN); // 获取笔记数量 + mParentId = cursor.getLong(PARENT_ID_COLUMN); // 获取父级 ID + 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); + mType = cursor.getInt(TYPE_COLUMN); // 获取类型 + mWidgetId = cursor.getInt(WIDGET_ID_COLUMN); // 获取小部件 ID + mWidgetType = cursor.getInt(WIDGET_TYPE_COLUMN); // 获取小部件类型 mPhoneNumber = ""; + // 如果是通话记录文件夹,则获取电话号码和联系人名称 if (mParentId == Notes.ID_CALL_RECORD_FOLDER) { mPhoneNumber = DataUtils.getCallNumberByNoteId(context.getContentResolver(), mId); if (!TextUtils.isEmpty(mPhoneNumber)) { @@ -106,119 +101,143 @@ public class NoteItemData { if (mName == null) { mName = ""; } - checkPostion(cursor); + checkPostion(cursor); // 检查位置信息 } + // 检查位置信息,确定项目在游标中的位置关系 private void checkPostion(Cursor cursor) { - mIsLastItem = cursor.isLast() ? true : false; - mIsFirstItem = cursor.isFirst() ? true : false; - mIsOnlyOneItem = (cursor.getCount() == 1); - mIsMultiNotesFollowingFolder = false; - mIsOneNoteFollowingFolder = false; + 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(); - if (cursor.moveToPrevious()) { - if (cursor.getInt(TYPE_COLUMN) == Notes.TYPE_FOLDER - || cursor.getInt(TYPE_COLUMN) == Notes.TYPE_SYSTEM) { + if (cursor.moveToPrevious()) { // 移动到前一个项目 + // 如果前一个项目是文件夹或系统类型,则判断是否有一个或多个笔记跟随文件夹 + if (cursor.getInt(TYPE_COLUMN) == Notes.TYPE_FOLDER || cursor.getInt(TYPE_COLUMN) == Notes.TYPE_SYSTEM) { if (cursor.getCount() > (position + 1)) { - mIsMultiNotesFollowingFolder = true; + mIsMultiNotesFollowingFolder = true; // 有多个笔记跟随文件夹 } else { - mIsOneNoteFollowingFolder = true; + mIsOneNoteFollowingFolder = true; // 有一个笔记跟随文件夹 } } - if (!cursor.moveToNext()) { + if (!cursor.moveToNext()) { // 尝试移回原位置 throw new IllegalStateException("cursor move to previous but can't move back"); } } } } - public boolean isOneFollowingFolder() { - return mIsOneNoteFollowingFolder; - } - + // 返回是否有多个笔记跟随文件夹 public boolean isMultiFollowingFolder() { return mIsMultiNotesFollowingFolder; } + // 返回是否有提醒 + public boolean hasAlert() { + return (mAlertDate > 0); + } + + // 返回是否是通话记录 + public boolean isCallRecord() { + return (mParentId == Notes.ID_CALL_RECORD_FOLDER && !TextUtils.isEmpty(mPhoneNumber)); + } + + // 返回是否是最后一个项目 public boolean isLast() { return mIsLastItem; } + // 返回联系人名称 public String getCallName() { return mName; } + // 返回是否是第一个项目 public boolean isFirst() { return mIsFirstItem; } + // 返回是否只有一个项目 public boolean isSingle() { return mIsOnlyOneItem; } + // 返回是否有一个笔记跟随文件夹 + public boolean isOneFollowingFolder() { + return mIsOneNoteFollowingFolder; + } + + // 返回笔记 ID public long getId() { return mId; } + // 返回提醒日期 public long getAlertDate() { return mAlertDate; } + // 返回创建日期 public long getCreatedDate() { return mCreatedDate; } + // 返回是否有附件 public boolean hasAttachment() { return mHasAttachment; } + // 返回修改日期 public long getModifiedDate() { return mModifiedDate; } + // 返回背景颜色 ID public int getBgColorId() { return mBgColorId; } + // 返回父级 ID public long getParentId() { return mParentId; } + // 返回笔记数量 public int getNotesCount() { return mNotesCount; } - public long getFolderId () { + // 返回文件夹 ID + public long getFolderId() { return mParentId; } + // 返回类型 public int getType() { return mType; } + // 返回小部件类型 public int getWidgetType() { return mWidgetType; } + // 返回小部件 ID public int getWidgetId() { return mWidgetId; } + // 返回摘要 public String getSnippet() { return mSnippet; } - public boolean hasAlert() { - return (mAlertDate > 0); - } - - public boolean isCallRecord() { - return (mParentId == Notes.ID_CALL_RECORD_FOLDER && !TextUtils.isEmpty(mPhoneNumber)); - } - + // 从游标中获取笔记类型 public static int getNoteType(Cursor cursor) { return cursor.getInt(TYPE_COLUMN); } -} +} \ No newline at end of file