From 3698c39a01a29ddd248c80eb0ed662997bf0bb57 Mon Sep 17 00:00:00 2001 From: MikkoAyaka <3401286177@qq.com> Date: Fri, 14 Apr 2023 14:37:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=20NoteEditActivity=20?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../notes/ui/activities/NoteEditActivity.java | 98 +++++++++++-------- 1 file changed, 56 insertions(+), 42 deletions(-) diff --git a/app/src/main/java/net/micode/notes/ui/activities/NoteEditActivity.java b/app/src/main/java/net/micode/notes/ui/activities/NoteEditActivity.java index c3918b2..22333c6 100644 --- a/app/src/main/java/net/micode/notes/ui/activities/NoteEditActivity.java +++ b/app/src/main/java/net/micode/notes/ui/activities/NoteEditActivity.java @@ -74,9 +74,13 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; - +/** + * 便签编辑活动,继承自 Activity + * 实现了 OnClickListener,NoteSettingChangedListener,OnTextViewChangeListener 接口 + */ public class NoteEditActivity extends Activity implements OnClickListener, NoteSettingChangedListener, OnTextViewChangeListener { + // 定义私有视图持有者,保存视图元素基础信息 private class HeadViewHolder { public TextView tvModified; @@ -86,9 +90,9 @@ public class NoteEditActivity extends Activity implements OnClickListener, public ImageView ibSetBgColor; } - + // 背景选择器map private static final Map sBgSelectorBtnsMap = new HashMap(); - + // 静态初始化块 static { sBgSelectorBtnsMap.put(R.id.iv_bg_yellow, ResourceParser.YELLOW); sBgSelectorBtnsMap.put(R.id.iv_bg_red, ResourceParser.RED); @@ -96,7 +100,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, sBgSelectorBtnsMap.put(R.id.iv_bg_green, ResourceParser.GREEN); sBgSelectorBtnsMap.put(R.id.iv_bg_white, ResourceParser.WHITE); } - + // 背景选择器Map private static final Map sBgSelectorSelectionMap = new HashMap(); static { @@ -106,7 +110,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, sBgSelectorSelectionMap.put(ResourceParser.GREEN, R.id.iv_bg_green_select); sBgSelectorSelectionMap.put(ResourceParser.WHITE, R.id.iv_bg_white_select); } - + // 字体选择Map private static final Map sFontSizeBtnsMap = new HashMap(); static { @@ -115,7 +119,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, sFontSizeBtnsMap.put(R.id.ll_font_normal, ResourceParser.TEXT_MEDIUM); sFontSizeBtnsMap.put(R.id.ll_font_super, ResourceParser.TEXT_SUPER); } - + // 字体选择器Map private static final Map sFontSelectorSelectionMap = new HashMap(); static { @@ -124,38 +128,44 @@ public class NoteEditActivity extends Activity implements OnClickListener, sFontSelectorSelectionMap.put(ResourceParser.TEXT_MEDIUM, R.id.iv_medium_select); sFontSelectorSelectionMap.put(ResourceParser.TEXT_SUPER, R.id.iv_super_select); } - + // 标签名称 private static final String TAG = "NoteEditActivity"; - + // 顶部视图持有者 private HeadViewHolder mNoteHeaderHolder; - + // 顶部面板视图 private View mHeadViewPanel; - + // 便签颜色选择器 private View mNoteBgColorSelector; - + // 字体尺寸选择器 private View mFontSizeSelector; - + // 便签编辑器 private EditText mNoteEditor; - + // 面板编辑视图 private View mNoteEditorPanel; private WorkingNote mWorkingNote; - + // 共享引用 private SharedPreferences mSharedPrefs; + // 字体尺寸 private int mFontSizeId; private static final String PREFERENCE_FONT_SIZE = "pref_font_size"; private static final int SHORTCUT_ICON_TITLE_MAX_LEN = 10; - + // 标签选择FLAG public static final String TAG_CHECKED = String.valueOf('\u221A'); + // 标签取消选择FLAG public static final String TAG_UNCHECKED = String.valueOf('\u25A1'); - + // 线性布局 private LinearLayout mEditTextList; - + // 用户查询指令 private String mUserQuery; private Pattern mPattern; + /** + * 生命周期方法 在Activity OnCreate 阶段调用 + * @param savedInstanceState 先前保存的实例状态 + */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -186,6 +196,10 @@ public class NoteEditActivity extends Activity implements OnClickListener, } } + /** + * 初始化活动状态 + * @param intent 发起活动的意图对象 + */ private boolean initActivityState(Intent intent) { /** * If the user specified the {@link Intent#ACTION_VIEW} but not provided with id, @@ -439,7 +453,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, sendBroadcast(intent); setResult(RESULT_OK, intent); } - + // 点击时触发 public void onClick(View v) { int id = v.getId(); if (id == R.id.btn_set_bg_color) { @@ -466,7 +480,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, mFontSizeSelector.setVisibility(View.GONE); } } - + // 按下返回键 @Override public void onBackPressed() { if (clearSettingState()) { @@ -476,7 +490,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, saveNote(); super.onBackPressed(); } - + // 清理设置状态 private boolean clearSettingState() { if (mNoteBgColorSelector.getVisibility() == View.VISIBLE) { mNoteBgColorSelector.setVisibility(View.GONE); @@ -487,14 +501,14 @@ public class NoteEditActivity extends Activity implements OnClickListener, } return false; } - + // 背景颜色改变时触发 public void onBackgroundColorChanged() { findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility( View.VISIBLE); mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId()); mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId()); } - + // 在准备渲染设置菜单时触发 @Override public boolean onPrepareOptionsMenu(Menu menu) { if (isFinishing()) { @@ -519,7 +533,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, } return true; } - + // 在设置改变时触发 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { @@ -567,7 +581,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, } return true; } - + // 设置提醒着 private void setReminder() { DateTimePickerDialog d = new DateTimePickerDialog(this, System.currentTimeMillis()); d.setOnDateTimeSetListener(new OnDateTimeSetListener() { @@ -588,7 +602,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, intent.setType("text/plain"); context.startActivity(intent); } - + // 创建新的便签 private void createNewNote() { // Firstly, save current editing notes saveNote(); @@ -600,7 +614,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mWorkingNote.getFolderId()); startActivity(intent); } - + // 删除当前便签 private void deleteCurrentNote() { if (mWorkingNote.existInDatabase()) { HashSet ids = new HashSet(); @@ -622,11 +636,11 @@ public class NoteEditActivity extends Activity implements OnClickListener, } mWorkingNote.markDeleted(true); } - + // 是否为同步模式 private boolean isSyncMode() { return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0; } - + // 在闹钟改变时候触发 public void onClockAlertChanged(long date, boolean set) { /** * User could set clock to an unsaved note, so before setting the @@ -656,11 +670,11 @@ public class NoteEditActivity extends Activity implements OnClickListener, showToast(R.string.error_note_empty_for_clock); } } - + // 在组件改变时触发 public void onWidgetChanged() { updateWidget(); } - + // 在编辑文本删除时触发 public void onEditTextDelete(int index, String text) { int childCount = mEditTextList.getChildCount(); if (childCount == 1) { @@ -686,7 +700,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, edit.requestFocus(); edit.setSelection(length); } - + // 在编辑文本按下Enter时触发 public void onEditTextEnter(int index, String text) { /** * Should not happen, check for debug @@ -705,7 +719,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, .setIndex(i); } } - + // 切换到列表模式 private void switchToListMode(String text) { mEditTextList.removeAllViews(); String[] items = text.split("\n"); @@ -722,7 +736,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, mNoteEditor.setVisibility(View.GONE); mEditTextList.setVisibility(View.VISIBLE); } - + // 获取查询结果 private Spannable getHighlightQueryResult(String fullText, String userQuery) { SpannableString spannable = new SpannableString(fullText == null ? "" : fullText); if (!TextUtils.isEmpty(userQuery)) { @@ -739,7 +753,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, } return spannable; } - + // 获取列表项目 private View getListItem(String item, int index) { View view = LayoutInflater.from(this).inflate(R.layout.note_edit_list_item, null); final NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); @@ -770,7 +784,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, edit.setText(getHighlightQueryResult(item, mUserQuery)); return view; } - + // 在文本内容改变时触发 public void onTextChange(int index, boolean hasText) { if (index >= mEditTextList.getChildCount()) { Log.e(TAG, "Wrong index, should not happen"); @@ -782,7 +796,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.GONE); } } - + // 在选择列表模型改变时触发 public void onCheckListModeChanged(int oldMode, int newMode) { if (newMode == TextNote.MODE_CHECK_LIST) { switchToListMode(mNoteEditor.getText().toString()); @@ -796,7 +810,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, mNoteEditor.setVisibility(View.VISIBLE); } } - + // 获取工作区文本 private boolean getWorkingText() { boolean hasChecked = false; if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { @@ -819,7 +833,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, } return hasChecked; } - + // 保存便签 private boolean saveNote() { getWorkingText(); boolean saved = mWorkingNote.saveNote(); @@ -835,7 +849,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, } return saved; } - + // 发送到桌面 private void sendToDesktop() { /** * Before send message to home, we should make sure that current @@ -870,18 +884,18 @@ public class NoteEditActivity extends Activity implements OnClickListener, 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; } - + // 显示吐司提示窗 private void showToast(int resId) { showToast(resId, Toast.LENGTH_SHORT); } - + // 显示吐司提示窗 private void showToast(int resId, int duration) { Toast.makeText(this, resId, duration).show(); }