From fa2dfce1b2618b45680b88667a14add31b08b1d7 Mon Sep 17 00:00:00 2001
From: JLY <1114836082@qq.com>
Date: Sun, 15 Jun 2025 02:58:38 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B3=A8=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/deploymentTargetSelector.xml | 8 ++
.idea/misc.xml | 1 -
.../net/micode/notes/model/WorkingNote.java | 62 ++++++++++-----
.../net/micode/notes/ui/NoteEditActivity.java | 57 +++++++++-----
.../micode/notes/ui/NotesListActivity.java | 76 +++++++++----------
5 files changed, 128 insertions(+), 76 deletions(-)
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index b268ef3..c5ecc63 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -4,6 +4,14 @@
+
+
+
+
+
+
+
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index f988785..0bd3ec2 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,4 +1,3 @@
-
diff --git a/app/src/main/java/net/micode/notes/model/WorkingNote.java b/app/src/main/java/net/micode/notes/model/WorkingNote.java
index be081e4..00db6c8 100644
--- a/app/src/main/java/net/micode/notes/model/WorkingNote.java
+++ b/app/src/main/java/net/micode/notes/model/WorkingNote.java
@@ -31,7 +31,10 @@ import net.micode.notes.data.Notes.NoteColumns;
import net.micode.notes.data.Notes.TextNote;
import net.micode.notes.tool.ResourceParser.NoteBgResources;
-
+/**
+ * WorkingNote 类代表一个正在编辑的笔记对象
+ * 它负责管理笔记的内容、状态和与数据库的交互
+ */
public class WorkingNote {
// Note for the working note
private Note mNote;
@@ -42,26 +45,18 @@ public class WorkingNote {
// Note mode
private int mMode;
- private long mAlertDate;
-
- private long mModifiedDate;
-
- private int mBgColorId;
-
- private int mWidgetId;
-
- private int mWidgetType;
-
- private long mFolderId;
-
- private Context mContext;
+ private long mAlertDate; // 提醒时间
+ private long mModifiedDate; // 修改时间
+ private int mBgColorId; // 背景颜色ID
+ private int mWidgetId; // 小部件ID
+ private int mWidgetType; // 小部件类型
+ private long mFolderId; // 文件夹ID
+ private Context mContext; // 上下文
+ private boolean mIsDeleted; // 是否已删除
+ private NoteSettingChangedListener mNoteSettingStatusListener; // 笔记设置变化监听器
private static final String TAG = "WorkingNote";
- private boolean mIsDeleted;
-
- private NoteSettingChangedListener mNoteSettingStatusListener;
-
public static final String[] DATA_PROJECTION = new String[] {
DataColumns.ID,
DataColumns.CONTENT,
@@ -174,6 +169,15 @@ public class WorkingNote {
}
}
+ /**
+ * 创建新的空笔记
+ * @param context 上下文
+ * @param folderId 文件夹ID
+ * @param widgetId 小部件ID
+ * @param widgetType 小部件类型
+ * @param defaultBgColorId 默认背景颜色ID
+ * @return 新创建的WorkingNote对象
+ */
public static WorkingNote createEmptyNote(Context context, long folderId, int widgetId,
int widgetType, int defaultBgColorId) {
WorkingNote note = new WorkingNote(context, folderId);
@@ -183,10 +187,20 @@ public class WorkingNote {
return note;
}
+ /**
+ * 从数据库加载笔记
+ * @param context 上下文
+ * @param id 笔记ID
+ * @return 加载的WorkingNote对象
+ */
public static WorkingNote load(Context context, long id) {
return new WorkingNote(context, id, 0);
}
+ /**
+ * 保存笔记到数据库
+ * @return 是否保存成功
+ */
public synchronized boolean saveNote() {
if (isWorthSaving()) {
if (!existInDatabase()) {
@@ -199,7 +213,7 @@ public class WorkingNote {
mNote.syncNote(mContext, mNoteId);
/**
- * Update widget content if there exist any widget of this note
+ * 如果笔记有关联的小部件,更新小部件内容
*/
if (mWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID
&& mWidgetType != Notes.TYPE_WIDGET_INVALIDE
@@ -229,6 +243,11 @@ public class WorkingNote {
mNoteSettingStatusListener = l;
}
+ /**
+ * 设置提醒时间
+ * @param date 提醒时间戳
+ * @param set 是否设置提醒
+ */
public void setAlertDate(long date, boolean set) {
if (date != mAlertDate) {
mAlertDate = date;
@@ -288,6 +307,11 @@ public class WorkingNote {
}
}
+ /**
+ * 将笔记转换为通话记录笔记
+ * @param phoneNumber 电话号码
+ * @param callDate 通话时间
+ */
public void convertToCallNote(String phoneNumber, long callDate) {
mNote.setCallData(CallNote.CALL_DATE, String.valueOf(callDate));
mNote.setCallData(CallNote.PHONE_NUMBER, phoneNumber);
diff --git a/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java b/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
index 6cf2dda..5f113e8 100644
--- a/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
+++ b/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
@@ -73,17 +73,20 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-
+/**
+ * NoteEditActivity 是笔记编辑界面的主要活动类
+ * 负责处理笔记的创建、编辑、保存等功能
+ */
public class NoteEditActivity extends Activity implements OnClickListener,
NoteSettingChangedListener, OnTextViewChangeListener {
+ /**
+ * 头部视图持有者类,用于管理笔记编辑界面的头部视图元素
+ */
private class HeadViewHolder {
- public TextView tvModified;
-
- public ImageView ivAlertIcon;
-
- public TextView tvAlertDate;
-
- public ImageView ibSetBgColor;
+ public TextView tvModified; // 显示修改时间
+ public ImageView ivAlertIcon; // 提醒图标
+ public TextView tvAlertDate; // 提醒时间
+ public ImageView ibSetBgColor; // 设置背景颜色按钮
}
private static final Map sBgSelectorBtnsMap = new HashMap();
@@ -189,18 +192,19 @@ public class NoteEditActivity extends Activity implements OnClickListener,
}
}
+ /**
+ * 初始化活动状态
+ * @param intent 启动活动的Intent
+ * @return 是否成功初始化
+ */
private boolean initActivityState(Intent intent) {
- /**
- * If the user specified the {@link Intent#ACTION_VIEW} but not provided with id,
- * then jump to the NotesListActivity
- */
mWorkingNote = null;
if (TextUtils.equals(Intent.ACTION_VIEW, intent.getAction())) {
long noteId = intent.getLongExtra(Intent.EXTRA_UID, 0);
mUserQuery = "";
/**
- * Starting from the searched result
+ * 从搜索结果启动
*/
if (intent.hasExtra(SearchManager.EXTRA_DATA_KEY)) {
noteId = Long.parseLong(intent.getStringExtra(SearchManager.EXTRA_DATA_KEY));
@@ -305,6 +309,10 @@ public class NoteEditActivity extends Activity implements OnClickListener,
showAlertHeader();
}
+ /**
+ * 显示提醒头部信息
+ * 根据笔记的提醒时间显示相应的提醒信息
+ */
private void showAlertHeader() {
if (mWorkingNote.hasClockAlert()) {
long time = System.currentTimeMillis();
@@ -611,6 +619,10 @@ public class NoteEditActivity extends Activity implements OnClickListener,
startActivity(intent);
}
+ /**
+ * 删除当前笔记
+ * 如果笔记存在于数据库中,则将其移动到回收站或直接删除
+ */
private void deleteCurrentNote() {
if (mWorkingNote.existInDatabase()) {
HashSet ids = new HashSet();
@@ -807,6 +819,10 @@ public class NoteEditActivity extends Activity implements OnClickListener,
}
}
+ /**
+ * 获取当前编辑的文本内容
+ * @return 是否包含已勾选的项目
+ */
private boolean getWorkingText() {
boolean hasChecked = false;
if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {
@@ -830,16 +846,21 @@ public class NoteEditActivity extends Activity implements OnClickListener,
return hasChecked;
}
+ /**
+ * 保存笔记
+ * @return 是否保存成功
+ */
private boolean saveNote() {
getWorkingText();
boolean saved = mWorkingNote.saveNote();
if (saved) {
/**
- * There are two modes from List view to edit view, open one note,
- * create/edit a node. Opening node requires to the original
- * position in the list when back from edit view, while creating a
- * new node requires to the top of the list. This code
- * {@link #RESULT_OK} is used to identify the create/edit state
+ * 从列表视图到编辑视图有两种模式:
+ * 1. 打开一个笔记
+ * 2. 创建/编辑一个笔记
+ * 打开笔记需要返回到列表中的原始位置
+ * 创建新笔记需要返回到列表顶部
+ * 使用RESULT_OK来标识创建/编辑状态
*/
setResult(RESULT_OK);
}
diff --git a/app/src/main/java/net/micode/notes/ui/NotesListActivity.java b/app/src/main/java/net/micode/notes/ui/NotesListActivity.java
index 44be747..bd27486 100644
--- a/app/src/main/java/net/micode/notes/ui/NotesListActivity.java
+++ b/app/src/main/java/net/micode/notes/ui/NotesListActivity.java
@@ -78,53 +78,45 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashSet;
+/**
+ * NotesListActivity 是笔记列表界面的主要活动类
+ * 负责显示所有笔记的列表,并提供创建、编辑、删除笔记等功能
+ */
public class NotesListActivity extends Activity implements OnClickListener, OnItemLongClickListener {
- private static final int FOLDER_NOTE_LIST_QUERY_TOKEN = 0;
-
- private static final int FOLDER_LIST_QUERY_TOKEN = 1;
-
- private static final int MENU_FOLDER_DELETE = 0;
-
- private static final int MENU_FOLDER_VIEW = 1;
-
- private static final int MENU_FOLDER_CHANGE_NAME = 2;
-
- private static final String PREFERENCE_ADD_INTRODUCTION = "net.micode.notes.introduction";
-
+ private static final int FOLDER_NOTE_LIST_QUERY_TOKEN = 0; // 文件夹笔记列表查询令牌
+ private static final int FOLDER_LIST_QUERY_TOKEN = 1; // 文件夹列表查询令牌
+ private static final int MENU_FOLDER_DELETE = 0; // 删除文件夹菜单项
+ private static final int MENU_FOLDER_VIEW = 1; // 查看文件夹菜单项
+ private static final int MENU_FOLDER_CHANGE_NAME = 2; // 修改文件夹名称菜单项
+ private static final String PREFERENCE_ADD_INTRODUCTION = "net.micode.notes.introduction"; // 是否添加介绍笔记的偏好设置键
+
+ /**
+ * 列表编辑状态枚举
+ */
private enum ListEditState {
- NOTE_LIST, SUB_FOLDER, CALL_RECORD_FOLDER
+ NOTE_LIST, // 笔记列表
+ SUB_FOLDER, // 子文件夹
+ CALL_RECORD_FOLDER // 通话记录文件夹
};
- private ListEditState mState;
-
- private BackgroundQueryHandler mBackgroundQueryHandler;
-
- private NotesListAdapter mNotesListAdapter;
-
- private ListView mNotesListView;
-
- private Button mAddNewNote;
-
- private boolean mDispatch;
-
- private int mOriginY;
-
- private int mDispatchY;
-
- private TextView mTitleBar;
-
- private long mCurrentFolderId;
-
- private ContentResolver mContentResolver;
-
- private ModeCallback mModeCallBack;
+ private ListEditState mState; // 当前列表编辑状态
+ private BackgroundQueryHandler mBackgroundQueryHandler; // 后台查询处理器
+ private NotesListAdapter mNotesListAdapter; // 笔记列表适配器
+ private ListView mNotesListView; // 笔记列表视图
+ private Button mAddNewNote; // 添加新笔记按钮
+ private boolean mDispatch; // 是否正在分发事件
+ private int mOriginY; // 原始Y坐标
+ private int mDispatchY; // 分发Y坐标
+ private TextView mTitleBar; // 标题栏
+ private long mCurrentFolderId; // 当前文件夹ID
+ private ContentResolver mContentResolver; // 内容解析器
+ private ModeCallback mModeCallBack; // 模式回调
+ private NoteItemData mFocusNoteDataItem; // 当前焦点笔记数据项
private static final String TAG = "NotesListActivity";
public static final int NOTES_LISTVIEW_SCROLL_RATE = 30;
- private NoteItemData mFocusNoteDataItem;
-
private static final String NORMAL_SELECTION = NoteColumns.PARENT_ID + "=?";
private static final String ROOT_FOLDER_SELECTION = "(" + NoteColumns.TYPE + "<>"
@@ -159,6 +151,10 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
}
+ /**
+ * 从原始资源文件设置应用信息
+ * 用于首次启动时创建介绍笔记
+ */
private void setAppInfoFromRawRes() {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
if (!sp.getBoolean(PREFERENCE_ADD_INTRODUCTION, false)) {
@@ -211,6 +207,10 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
}
+ /**
+ * 启动异步笔记列表查询
+ * 在活动启动时调用,用于加载笔记列表
+ */
@Override
protected void onStart() {
super.onStart();