|
|
|
|
/**
|
|
|
|
|
* 版权声明,说明该代码是MiCode开源社区的版权所有,并在Apache License 2.0下授权。
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
package net.micode.notes.ui;
|
|
|
|
|
|
|
|
|
|
// 导入所需的Android库和自定义包
|
|
|
|
|
|
|
|
|
|
public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
|
NoteSettingChangedListener, OnTextViewChangeListener {
|
|
|
|
|
// 内部类,用于持有笔记标题区域的视图元素
|
|
|
|
|
private class HeadViewHolder {
|
|
|
|
|
public TextView tvModified;
|
|
|
|
|
public ImageView ivAlertIcon;
|
|
|
|
|
public TextView tvAlertDate;
|
|
|
|
|
public ImageView ibSetBgColor;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 定义背景颜色选择器和字体大小选择器的映射关系
|
|
|
|
|
private static final Map<Integer, Integer> sBgSelectorBtnsMap = new HashMap<Integer, Integer>();
|
|
|
|
|
static {
|
|
|
|
|
// 初始化背景颜色按钮映射
|
|
|
|
|
}
|
|
|
|
|
private static final Map<Integer, Integer> sBgSelectorSelectionMap = new HashMap<Integer, Integer>();
|
|
|
|
|
static {
|
|
|
|
|
// 初始化背景颜色选择器映射
|
|
|
|
|
}
|
|
|
|
|
private static final Map<Integer, Integer> sFontSizeBtnsMap = new HashMap<Integer, Integer>();
|
|
|
|
|
static {
|
|
|
|
|
// 初始化字体大小按钮映射
|
|
|
|
|
}
|
|
|
|
|
private static final Map<Integer, Integer> sFontSelectorSelectionMap = new HashMap<Integer, Integer>();
|
|
|
|
|
static {
|
|
|
|
|
// 初始化字体大小选择器映射
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 类变量定义
|
|
|
|
|
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;
|
|
|
|
|
public static final String TAG_CHECKED = String.valueOf('\u221A');
|
|
|
|
|
public static final String TAG_UNCHECKED = String.valueOf('\u25A1');
|
|
|
|
|
private LinearLayout mEditTextList;
|
|
|
|
|
private String mUserQuery;
|
|
|
|
|
private Pattern mPattern;
|
|
|
|
|
|
|
|
|
|
// onCreate方法,初始化Activity
|
|
|
|
|
@Override
|
|
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
|
this.setContentView(R.layout.note_edit);
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// onRestoreInstanceState方法,用于在Activity被系统销毁后恢复状态
|
|
|
|
|
@Override
|
|
|
|
|
protected void onRestoreInstanceState(Bundle savedInstanceState) {
|
|
|
|
|
super.onRestoreInstanceState(savedInstanceState);
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// initActivityState方法,初始化Activity状态
|
|
|
|
|
private boolean initActivityState(Intent intent) {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// onResume方法,初始化笔记屏幕
|
|
|
|
|
@Override
|
|
|
|
|
protected void onResume() {
|
|
|
|
|
super.onResume();
|
|
|
|
|
initNoteScreen();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// initNoteScreen方法,初始化笔记屏幕视图
|
|
|
|
|
private void initNoteScreen() {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// onNewIntent方法,处理新的Intent
|
|
|
|
|
@Override
|
|
|
|
|
protected void onNewIntent(Intent intent) {
|
|
|
|
|
super.onNewIntent(intent);
|
|
|
|
|
initActivityState(intent);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// onSaveInstanceState方法,保存Activity状态
|
|
|
|
|
@Override
|
|
|
|
|
protected void onSaveInstanceState(Bundle outState) {
|
|
|
|
|
super.onSaveInstanceState(outState);
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// dispatchTouchEvent方法,处理触摸事件
|
|
|
|
|
@Override
|
|
|
|
|
public boolean dispatchTouchEvent(MotionEvent ev) {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// inRangeOfView方法,判断触摸事件是否在视图范围内
|
|
|
|
|
private boolean inRangeOfView(View view, MotionEvent ev) {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// initResources方法,初始化资源
|
|
|
|
|
private void initResources() {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// onPause方法,保存笔记
|
|
|
|
|
@Override
|
|
|
|
|
protected void onPause() {
|
|
|
|
|
super.onPause();
|
|
|
|
|
if(saveNote()) {
|
|
|
|
|
Log.d(TAG, "Note data was saved with length:" + mWorkingNote.getContent().length());
|
|
|
|
|
}
|
|
|
|
|
clearSettingState();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// updateWidget方法,更新Widget
|
|
|
|
|
private void updateWidget() {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// onClick方法,处理点击事件
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// onBackPressed方法,处理返回键事件
|
|
|
|
|
@Override
|
|
|
|
|
public void onBackPressed() {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// clearSettingState方法,清除设置状态
|
|
|
|
|
private boolean clearSettingState() {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// onBackgroundColorChanged方法,处理背景颜色变化
|
|
|
|
|
public void onBackgroundColorChanged() {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// onPrepareOptionsMenu方法,准备菜单
|
|
|
|
|
@Override
|
|
|
|
|
public boolean onPrepareOptionsMenu(Menu menu) {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// onOptionsItemSelected方法,处理菜单项点击事件
|
|
|
|
|
@Override
|
|
|
|
|
public boolean onOptionsItemSelected(MenuItem item) {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// setReminder方法,设置提醒
|
|
|
|
|
private void setReminder() {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// sendTo方法,分享笔记到其他应用
|
|
|
|
|
private void sendTo(Context context, String info) {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// createNewNote方法,创建新笔记
|
|
|
|
|
private void createNewNote() {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// deleteCurrentNote方法,删除当前笔记
|
|
|
|
|
private void deleteCurrentNote() {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// isSyncMode方法,判断是否是同步模式
|
|
|
|
|
private boolean isSyncMode() {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// onClockAlertChanged方法,处理时钟提醒变化
|
|
|
|
|
public void onClockAlertChanged(long date, boolean set) {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// onWidgetChanged方法,处理Widget变化
|
|
|
|
|
public void onWidgetChanged() {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// onEditTextDelete方法,处理编辑文本删除
|
|
|
|
|
public void onEditTextDelete(int index, String text) {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// onEditTextEnter方法,处理编辑文本回车
|
|
|
|
|
public void onEditTextEnter(int index, String text) {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// switchToListMode方法,切换到列表模式
|
|
|
|
|
private void switchToListMode(String text) {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// getHighlightQueryResult方法,高亮查询结果
|
|
|
|
|
private Spannable getHighlightQueryResult(String fullText, String userQuery) {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// getListItem方法,获取列表项视图
|
|
|
|
|
private View getListItem(String item, int index) {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// onTextChange方法,处理文本变化
|
|
|
|
|
public void onTextChange(int index, boolean hasText) {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// onCheckListModeChanged方法,处理检查列表模式变化
|
|
|
|
|
public void onCheckListModeChanged(int oldMode, int newMode) {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// getWorkingText方法,获取工作文本
|
|
|
|
|
private boolean getWorkingText() {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// saveNote方法,保存笔记
|
|
|
|
|
private boolean saveNote() {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// sendToDesktop方法,发送到桌面
|
|
|
|
|
private void sendToDesktop() {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// makeShortcutIconTitle方法,制作快捷方式图标标题
|
|
|
|
|
private String makeShortcutIconTitle(String content) {
|
|
|
|
|
// 省略了部分代码...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// showToast方法,显示Toast提示
|
|
|
|
|
private void showToast(int resId) {
|
|
|
|
|
showToast(resId, Toast.LENGTH_SHORT);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// showToast方法,显示Toast提示(带持续时间)
|
|
|
|
|
private void showToast(int resId, int duration) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|