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();