From 48075b7c34cb128b8c355b78824ed195887e70f2 Mon Sep 17 00:00:00 2001 From: Ryuki <2124555323@qq.com> Date: Thu, 28 Dec 2023 10:39:07 +0800 Subject: [PATCH] =?UTF-8?q?NoteEditActivity=E7=B2=BE=E8=AF=BB=E5=AE=8C?= =?UTF-8?q?=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/net/micode/notes/ui/NoteEditActivity.java | 41 +++++++++++++++---- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/src/net/micode/notes/ui/NoteEditActivity.java b/src/net/micode/notes/ui/NoteEditActivity.java index c8ede86..e682082 100644 --- a/src/net/micode/notes/ui/NoteEditActivity.java +++ b/src/net/micode/notes/ui/NoteEditActivity.java @@ -872,44 +872,53 @@ public class NoteEditActivity extends Activity implements OnClickListener, //当勾选列表模式发生改变时的回调方法 public void onCheckListModeChanged(int oldMode, int newMode) { if (newMode == TextNote.MODE_CHECK_LIST) { + //如果新模式是复选框列表,切换到列表模式 switchToListMode(mNoteEditor.getText().toString()); } else { + //如果不是列表模式,需要将工作文本从列表模式转换回正常文本模式 if (!getWorkingText()) { mWorkingNote.setWorkingText(mWorkingNote.getContent().replace(TAG_UNCHECKED + " ", "")); } + //设置高亮查询结果并将编辑器切换为可见 mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery)); mEditTextList.setVisibility(View.GONE); mNoteEditor.setVisibility(View.VISIBLE); } } + //从编辑框获取当前的工作文本,并设置对应的工作笔记数据的方法 private boolean getWorkingText() { boolean hasChecked = false; if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { - StringBuilder sb = new StringBuilder(); + StringBuilder sb = new StringBuilder();//用于构建最终的工作文本 for (int i = 0; i < mEditTextList.getChildCount(); i++) { View view = mEditTextList.getChildAt(i); NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); - if (!TextUtils.isEmpty(edit.getText())) { + if (!TextUtils.isEmpty(edit.getText())) {//跳过空编辑框 + //如果复选框被勾选,将该项文本添加到工作文本中,并标记为已检查 if (((CheckBox) view.findViewById(R.id.cb_edit_item)).isChecked()) { sb.append(TAG_CHECKED).append(" ").append(edit.getText()).append("\n"); hasChecked = true; } else { + //如果未勾选,同样将文本添加到工作文本中,但不进行标记 sb.append(TAG_UNCHECKED).append(" ").append(edit.getText()).append("\n"); } } } + //设置笔记的工作文本 mWorkingNote.setWorkingText(sb.toString()); } else { + //如果不在复选框列表模式中,直接从编辑器获取文本 mWorkingNote.setWorkingText(mNoteEditor.getText().toString()); } - return hasChecked; + return hasChecked; //返回是否有勾选项的标志 } + //保存笔记的方法,该方法会首先获取工作文本,然后保存笔记 private boolean saveNote() { - getWorkingText(); - boolean saved = mWorkingNote.saveNote(); + getWorkingText();//获取当前的编辑框文本数据 + boolean saved = mWorkingNote.saveNote();//保存笔记,并获取结果 if (saved) { /** * There are two modes from List view to edit view, open one note, @@ -918,11 +927,13 @@ public class NoteEditActivity extends Activity implements OnClickListener, * new node requires to the top of the list. This code * {@link #RESULT_OK} is used to identify the create/edit state */ + //设置保存成功的结果,以便正确处理返回时的列表位置 setResult(RESULT_OK); } - return saved; + return saved;//返回保存是否成功的标志 } + private void sendToDesktop() { /** * Before send message to home, we should make sure that current @@ -932,20 +943,29 @@ public class NoteEditActivity extends Activity implements OnClickListener, if (!mWorkingNote.existInDatabase()) { saveNote(); } - + //如果已保存的笔记存在有效的ID,准备创建快捷方式 if (mWorkingNote.getNoteId() > 0) { Intent sender = new Intent(); + //意图指向NoteEditActivity,代表要打开的编辑笔记的组件 Intent shortcutIntent = new Intent(this, NoteEditActivity.class); shortcutIntent.setAction(Intent.ACTION_VIEW); + //将笔记ID作为额外的信息附加到意图上 shortcutIntent.putExtra(Intent.EXTRA_UID, mWorkingNote.getNoteId()); + //将定义好的编辑笔记的意图作为快捷方式的意图进行设置 sender.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); + //设置快捷方式的名称 sender.putExtra(Intent.EXTRA_SHORTCUT_NAME, makeShortcutIconTitle(mWorkingNote.getContent())); + //设置快捷方式图标的资源 sender.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.icon_app)); + //避免快捷方式重复,设定"duplicate"为true sender.putExtra("duplicate", true); + //设置该动作用于告诉启动器创建一个新的快捷方式 sender.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); + //显示提示已发送到桌面的信息 showToast(R.string.info_note_enter_desktop); + //发送广播以创建快捷方式 sendBroadcast(sender); } else { /** @@ -953,22 +973,29 @@ public class NoteEditActivity extends Activity implements OnClickListener, * not worthy saving), we have no note id, remind the user that he * should input something */ + //如果为输入任何内容,则不存在笔记ID,提示用户输入一些内容 Log.e(TAG, "Send to desktop error"); + //显示提示错误的消息 showToast(R.string.error_note_empty_for_send_to_desktop); } } + //创建快捷方式时处理笔记内容标题的长度,确保他不会太长 private String makeShortcutIconTitle(String content) { + //删除内容中的已检查和未检查标记 content = content.replace(TAG_CHECKED, ""); content = content.replace(TAG_UNCHECKED, ""); + //如果内容的长度超过了快捷方式图表标题的最大长度,就截取前面的部分,否则就使用全部内容 return content.length() > SHORTCUT_ICON_TITLE_MAX_LEN ? content.substring(0, SHORTCUT_ICON_TITLE_MAX_LEN) : content; } + //显示一个短时间长度的Toast消息,具体消息由资源ID指定 private void showToast(int resId) { showToast(resId, Toast.LENGTH_SHORT); } + //显示一个Toast消息,可以指定消息的资源ID和持续时间 private void showToast(int resId, int duration) { Toast.makeText(this, resId, duration).show(); }