From 8384c5a9c3abdc225f23cd4d83ca7342d61b2ccc Mon Sep 17 00:00:00 2001
From: LiuRuiXuan <1912386608@qq.com>
Date: Fri, 19 May 2023 15:48:22 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B6=82=E9=B8=A6=E5=8A=9F=E8=83=BD=E4=B8=8A?=
=?UTF-8?q?=E7=BA=BF=E5=95=A6O(=E2=88=A9=5F=E2=88=A9)O?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../app/src/main/AndroidManifest.xml | 80 ++-
.../java/net/micode/notes/data/Notes.java | 1 +
.../notes/data/NotesDatabaseHelper.java | 5 +-
.../net/micode/notes/model/WorkingNote.java | 54 ++-
.../net/micode/notes/tool/ResourceParser.java | 4 +-
.../net/micode/notes/ui/NoteEditActivity.java | 455 +++++++++---------
.../micode/notes/ui/NotesListActivity.java | 3 +-
.../src/main/res/layout/add_account_text.xml | 2 +-
.../app/src/main/res/layout/note_edit.xml | 20 +-
.../app/src/main/res/menu/call_note_edit.xml | 12 +-
.../app/src/main/res/menu/note_edit.xml | 4 +-
.../app/src/main/res/values/strings.xml | 8 +-
12 files changed, 335 insertions(+), 313 deletions(-)
diff --git a/src/Xiaominotes/app/src/main/AndroidManifest.xml b/src/Xiaominotes/app/src/main/AndroidManifest.xml
index 66df488..f91b8a0 100644
--- a/src/Xiaominotes/app/src/main/AndroidManifest.xml
+++ b/src/Xiaominotes/app/src/main/AndroidManifest.xml
@@ -1,25 +1,9 @@
-
-
-
Type : INTEGER (long)
*/ public static final String VERSION = "version"; + public static final String IMAGE="image"; } public interface DataColumns { diff --git a/src/Xiaominotes/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java b/src/Xiaominotes/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java index ffe5d57..d9efd55 100644 --- a/src/Xiaominotes/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java +++ b/src/Xiaominotes/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java @@ -60,8 +60,9 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { NoteColumns.LOCAL_MODIFIED + " INTEGER NOT NULL DEFAULT 0," + NoteColumns.ORIGIN_PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + NoteColumns.GTASK_ID + " TEXT NOT NULL DEFAULT ''," + - NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0" + - ")"; + NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0" +","+ + NoteColumns.IMAGE + " BLOB DEFAULT NULL"+ + ")"; private static final String CREATE_DATA_TABLE_SQL = "CREATE TABLE " + TABLE.DATA + "(" + diff --git a/src/Xiaominotes/app/src/main/java/net/micode/notes/model/WorkingNote.java b/src/Xiaominotes/app/src/main/java/net/micode/notes/model/WorkingNote.java index be081e4..9c78cdc 100644 --- a/src/Xiaominotes/app/src/main/java/net/micode/notes/model/WorkingNote.java +++ b/src/Xiaominotes/app/src/main/java/net/micode/notes/model/WorkingNote.java @@ -61,6 +61,7 @@ public class WorkingNote { private boolean mIsDeleted; private NoteSettingChangedListener mNoteSettingStatusListener; + private byte[] image; public static final String[] DATA_PROJECTION = new String[] { DataColumns.ID, @@ -82,7 +83,6 @@ public class WorkingNote { }; private static final int DATA_ID_COLUMN = 0; - private static final int DATA_CONTENT_COLUMN = 1; private static final int DATA_MIME_TYPE_COLUMN = 2; @@ -150,10 +150,11 @@ public class WorkingNote { Cursor cursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI, DATA_PROJECTION, DataColumns.NOTE_ID + "=?", new String[] { String.valueOf(mNoteId) - }, null); + }, null);//调用Content Providers Api接口来获取ContentResolver对象,读取对应文件的数据,就相当于一个数据库 + //这里是根据这个便签的id来查找,其中string中存储了当前的这个便签的id if (cursor != null) { - if (cursor.moveToFirst()) { + if (cursor.moveToFirst()) {//是否存在 do { String type = cursor.getString(DATA_MIME_TYPE_COLUMN); if (DataConstants.NOTE.equals(type)) { @@ -165,11 +166,11 @@ public class WorkingNote { } else { Log.d(TAG, "Wrong note type with type:" + type); } - } while (cursor.moveToNext()); + } while (cursor.moveToNext());//只要没有找到 } cursor.close(); } else { - Log.e(TAG, "No data with id:" + mNoteId); + Log.e(TAG, "No data with id:" + mNoteId);//打印日志信息 throw new IllegalArgumentException("Unable to find note's data with id " + mNoteId); } } @@ -183,20 +184,20 @@ public class WorkingNote { return note; } - public static WorkingNote load(Context context, long id) { + public static WorkingNote load(Context context, long id) {//根据id找到对应的便签 return new WorkingNote(context, id, 0); } public synchronized boolean saveNote() { - if (isWorthSaving()) { - if (!existInDatabase()) { - if ((mNoteId = Note.getNewNoteId(mContext, mFolderId)) == 0) { + if (isWorthSaving()) {//如果值得保存的话就保存 + if (!existInDatabase()) {//是否在database中存在 + if ((mNoteId = Note.getNewNoteId(mContext, mFolderId)) == 0) {//创建新的笔记,如果创建新的笔记过程中发生异常,那么此语句就执行,直接返回false Log.e(TAG, "Create new note fail with id:" + mNoteId); return false; } } - mNote.syncNote(mContext, mNoteId); + mNote.syncNote(mContext, mNoteId);//将新添加的内容和当前id对应的小米便签进行同步 /** * Update widget content if there exist any widget of this note @@ -206,17 +207,17 @@ public class WorkingNote { && mNoteSettingStatusListener != null) { mNoteSettingStatusListener.onWidgetChanged(); } - return true; + return true;//当前widgetId合法并且类型和法才进行改变 } else { return false; } } - public boolean existInDatabase() { + public boolean existInDatabase() {//如果数据库中的id小于等于0就代表该id不合法,也就是说这个便签不存在于数据库中 return mNoteId > 0; } - private boolean isWorthSaving() { + private boolean isWorthSaving() {//如果当前文件是要进行删除的文件则没有必要保存,不在数据库中也不需要保存,如果内容为空也不用保存,已经在数据库中存在也不需要保存,如果没有改变内容也不需要保存 if (mIsDeleted || (!existInDatabase() && TextUtils.isEmpty(mContent)) || (existInDatabase() && !mNote.isLocalModified())) { return false; @@ -229,8 +230,8 @@ public class WorkingNote { mNoteSettingStatusListener = l; } - public void setAlertDate(long date, boolean set) { - if (date != mAlertDate) { + public void setAlertDate(long date, boolean set) {//设置更改日期 + if (date != mAlertDate) {//如果时间不相同 mAlertDate = date; mNote.setNoteValue(NoteColumns.ALERTED_DATE, String.valueOf(mAlertDate)); } @@ -239,30 +240,30 @@ public class WorkingNote { } } - public void markDeleted(boolean mark) { - mIsDeleted = mark; + public void markDeleted(boolean mark) {//mark为1代表要删除,为0代表不删除 + mIsDeleted = mark;//将对应属性标记为删除 if (mWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID && mWidgetType != Notes.TYPE_WIDGET_INVALIDE && mNoteSettingStatusListener != null) { mNoteSettingStatusListener.onWidgetChanged(); - } + }//如果当前便签的mwidgetid合法,类型合法就改变对应的数据 } - public void setBgColorId(int id) { - if (id != mBgColorId) { + public void setBgColorId(int id) {//设置颜色id + if (id != mBgColorId) {//只有当要改的颜色不同的时候才执行该语句 mBgColorId = id; if (mNoteSettingStatusListener != null) { - mNoteSettingStatusListener.onBackgroundColorChanged(); + mNoteSettingStatusListener.onBackgroundColorChanged();//改变颜色 } - mNote.setNoteValue(NoteColumns.BG_COLOR_ID, String.valueOf(id)); + mNote.setNoteValue(NoteColumns.BG_COLOR_ID, String.valueOf(id));//更新当前便签的颜色属性值 } } - public void setCheckListMode(int mode) { + public void setCheckListMode(int mode) {//设置对应的模式 if (mMode != mode) { if (mNoteSettingStatusListener != null) { mNoteSettingStatusListener.onCheckListModeChanged(mMode, mode); } - mMode = mode; + mMode = mode;//更改模式 mNote.setTextData(TextNote.MODE, String.valueOf(mMode)); } } @@ -287,6 +288,10 @@ public class WorkingNote { mNote.setTextData(DataColumns.CONTENT, mContent); } } + public void setImage(byte[]image) + { + this.image=image; + } public void convertToCallNote(String phoneNumber, long callDate) { mNote.setCallData(CallNote.CALL_DATE, String.valueOf(callDate)); @@ -341,6 +346,7 @@ public class WorkingNote { public int getWidgetType() { return mWidgetType; } + public byte[] getImage(){return image;} public interface NoteSettingChangedListener { /** diff --git a/src/Xiaominotes/app/src/main/java/net/micode/notes/tool/ResourceParser.java b/src/Xiaominotes/app/src/main/java/net/micode/notes/tool/ResourceParser.java index 1ad3ad6..f759b0e 100644 --- a/src/Xiaominotes/app/src/main/java/net/micode/notes/tool/ResourceParser.java +++ b/src/Xiaominotes/app/src/main/java/net/micode/notes/tool/ResourceParser.java @@ -142,7 +142,7 @@ public class ResourceParser { } private final static int [] BG_4X_RESOURCES = new int [] { - R.drawable.widget_4x_yellow, + R.drawable.widget_4x_yellow,//widget用来设置图标或者背景,可以用来绘制图形 R.drawable.widget_4x_blue, R.drawable.widget_4x_white, R.drawable.widget_4x_green, @@ -151,7 +151,7 @@ public class ResourceParser { public static int getWidget4xBgResource(int id) { return BG_4X_RESOURCES[id]; - } + }//获取对应的颜色 } public static class TextAppearanceResources { diff --git a/src/Xiaominotes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java b/src/Xiaominotes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java index 0d0a436..c1cae6e 100644 --- a/src/Xiaominotes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java +++ b/src/Xiaominotes/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java @@ -27,9 +27,11 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.graphics.Bitmap; import android.graphics.Paint; import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.v7.app.AppCompatActivity; import android.text.Spannable; import android.text.SpannableString; import android.text.TextUtils; @@ -65,6 +67,7 @@ import net.micode.notes.ui.NoteEditText.OnTextViewChangeListener; import net.micode.notes.widget.NoteWidgetProvider_2x; import net.micode.notes.widget.NoteWidgetProvider_4x; +import java.io.ByteArrayOutputStream; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -72,8 +75,10 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -public class NoteEditActivity extends Activity implements OnClickListener, +public class NoteEditActivity extends AppCompatActivity implements OnClickListener, NoteSettingChangedListener, OnTextViewChangeListener { + private static final int REQUEST_CODE = 8848; + private class HeadViewHolder { public TextView tvModified; @@ -132,7 +137,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, private View mNoteEditorPanel; - private WorkingNote mWorkingNote; + public WorkingNote mWorkingNote; private SharedPreferences mSharedPrefs; private int mFontSizeId; @@ -273,40 +278,40 @@ public class NoteEditActivity extends Activity implements OnClickListener, .getTexAppearanceResource(mFontSizeId));//获取用户当前字体的大小 if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {//转化为清单模式 switchToListMode(mWorkingNote.getContent());//获取对应的内容 - } else { - mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery)); - mNoteEditor.setSelection(mNoteEditor.getText().length()); + } else {//如果不是清单模式 + mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery));//对用户输入的关键字文本进行高亮显示 + mNoteEditor.setSelection(mNoteEditor.getText().length());//获取选取的长度 } for (Integer id : sBgSelectorSelectionMap.keySet()) { - findViewById(sBgSelectorSelectionMap.get(id)).setVisibility(View.GONE); + findViewById(sBgSelectorSelectionMap.get(id)).setVisibility(View.GONE);//找到当前键的值,也就是id,并隐藏背景选择器选中的背景图 } - mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId()); - mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId()); + mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId());//在头部显示标题 + mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId());//在背景显示对应的背景颜色 mNoteHeaderHolder.tvModified.setText(DateUtils.formatDateTime(this, mWorkingNote.getModifiedDate(), DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_SHOW_TIME - | DateUtils.FORMAT_SHOW_YEAR)); + | DateUtils.FORMAT_SHOW_YEAR));//将修改时间文本视图中的数据写入标题 /** * TODO: Add the menu for setting alert. Currently disable it because the DateTimePicker * is not ready */ - showAlertHeader(); + showAlertHeader();//决定是否显示提醒的表头 } private void showAlertHeader() { - if (mWorkingNote.hasClockAlert()) { - long time = System.currentTimeMillis(); - if (time > mWorkingNote.getAlertDate()) { - mNoteHeaderHolder.tvAlertDate.setText(R.string.note_alert_expired); + if (mWorkingNote.hasClockAlert()) {//如果有时间提醒 + long time = System.currentTimeMillis();//获得当前的时间 + if (time > mWorkingNote.getAlertDate()) {//如果超过时间提醒 + mNoteHeaderHolder.tvAlertDate.setText(R.string.note_alert_expired);//设置提醒日期文本视图为过期显示内容 } else { - mNoteHeaderHolder.tvAlertDate.setText(DateUtils.getRelativeTimeSpanString( + mNoteHeaderHolder.tvAlertDate.setText(DateUtils.getRelativeTimeSpanString(//显示距离提示还有多长时间 mWorkingNote.getAlertDate(), time, DateUtils.MINUTE_IN_MILLIS)); } - mNoteHeaderHolder.tvAlertDate.setVisibility(View.VISIBLE); - mNoteHeaderHolder.ivAlertIcon.setVisibility(View.VISIBLE); - } else { + mNoteHeaderHolder.tvAlertDate.setVisibility(View.VISIBLE);//显示提醒日期 + mNoteHeaderHolder.ivAlertIcon.setVisibility(View.VISIBLE);//显示提醒图标 + } else {//没有时间提醒就隐藏对应的提醒标志 mNoteHeaderHolder.tvAlertDate.setVisibility(View.GONE); mNoteHeaderHolder.ivAlertIcon.setVisibility(View.GONE); }; @@ -326,75 +331,75 @@ public class NoteEditActivity extends Activity implements OnClickListener, * generate a id. If the editing note is not worth saving, there * is no id which is equivalent to create new note */ - if (!mWorkingNote.existInDatabase()) { + if (!mWorkingNote.existInDatabase()) {//如果数据库没有就进行保存 saveNote(); } - outState.putLong(Intent.EXTRA_UID, mWorkingNote.getNoteId()); - Log.d(TAG, "Save working note id: " + mWorkingNote.getNoteId() + " onSaveInstanceState"); + outState.putLong(Intent.EXTRA_UID, mWorkingNote.getNoteId());//初始化 + Log.d(TAG, "Save working note id: " + mWorkingNote.getNoteId() + " onSaveInstanceState");//显示对应id信息和保存成功 } @Override - public boolean dispatchTouchEvent(MotionEvent ev) { + public boolean dispatchTouchEvent(MotionEvent ev) {//笔记编辑器的触摸事件 if (mNoteBgColorSelector.getVisibility() == View.VISIBLE - && !inRangeOfView(mNoteBgColorSelector, ev)) { - mNoteBgColorSelector.setVisibility(View.GONE); + && !inRangeOfView(mNoteBgColorSelector, ev)) {//如果不在背景颜色选择器的触摸范围之内,并且背景选择器是可视化的 + mNoteBgColorSelector.setVisibility(View.GONE);//将背景选择器隐藏起来 return true; } - if (mFontSizeSelector.getVisibility() == View.VISIBLE + if (mFontSizeSelector.getVisibility() == View.VISIBLE//判断字体大小选择器是否显示,并且是否在改变字体大小的控制范围内 && !inRangeOfView(mFontSizeSelector, ev)) { - mFontSizeSelector.setVisibility(View.GONE); + mFontSizeSelector.setVisibility(View.GONE);//将其隐藏起来 return true; } return super.dispatchTouchEvent(ev); } private boolean inRangeOfView(View view, MotionEvent ev) { - int []location = new int[2]; - view.getLocationOnScreen(location); - int x = location[0]; - int y = location[1]; + int []location = new int[2];//获取位置 + view.getLocationOnScreen(location);//获取鼠标所在屏幕的左上角对应位置 + int x = location[0];//横坐标 + int y = location[1];//纵坐标 if (ev.getX() < x || ev.getX() > (x + view.getWidth()) || ev.getY() < y || ev.getY() > (y + view.getHeight())) { return false; - } - return true; + }//ev.getX获取了触摸事件的横坐标,getY则是获取纵坐标,该判断语句就是判断触摸事件的横纵坐标在该视图的外部 + return true;//在管辖范畴内 } private void initResources() { - mHeadViewPanel = findViewById(R.id.note_title); - mNoteHeaderHolder = new HeadViewHolder(); - mNoteHeaderHolder.tvModified = (TextView) findViewById(R.id.tv_modified_date); - mNoteHeaderHolder.ivAlertIcon = (ImageView) findViewById(R.id.iv_alert_icon); - mNoteHeaderHolder.tvAlertDate = (TextView) findViewById(R.id.tv_alert_date); - mNoteHeaderHolder.ibSetBgColor = (ImageView) findViewById(R.id.btn_set_bg_color); - mNoteHeaderHolder.ibSetBgColor.setOnClickListener(this); - mNoteEditor = (EditText) findViewById(R.id.note_edit_view); - mNoteEditorPanel = findViewById(R.id.sv_note_edit); - mNoteBgColorSelector = findViewById(R.id.note_bg_color_selector); - for (int id : sBgSelectorBtnsMap.keySet()) { + mHeadViewPanel = findViewById(R.id.note_title);//获取对应id的视图 + mNoteHeaderHolder = new HeadViewHolder();//实例化头部信息 + mNoteHeaderHolder.tvModified = (TextView) findViewById(R.id.tv_modified_date);//把修改日期视图封装在mNoteHeaderHolder中 + mNoteHeaderHolder.ivAlertIcon = (ImageView) findViewById(R.id.iv_alert_icon);//把提醒图标视图封装在对象中 + mNoteHeaderHolder.tvAlertDate = (TextView) findViewById(R.id.tv_alert_date);//把提醒日期视图封装在对象中 + mNoteHeaderHolder.ibSetBgColor = (ImageView) findViewById(R.id.btn_set_bg_color);//把改变背景颜色的视图封装在对象中 + mNoteHeaderHolder.ibSetBgColor.setOnClickListener(this);//设置对应的监听器 + mNoteEditor = (EditText) findViewById(R.id.note_edit_view);//找到对应的编辑器视图 + mNoteEditorPanel = findViewById(R.id.sv_note_edit);//把保存便签的视图放在该对象中 + mNoteBgColorSelector = findViewById(R.id.note_bg_color_selector);//将背景颜色选择器捆绑给mNoteBgColorSelector中 + for (int id : sBgSelectorBtnsMap.keySet()) {//为每一种背景颜色对应的视图设置监听器 ImageView iv = (ImageView) findViewById(id); iv.setOnClickListener(this); } - mFontSizeSelector = findViewById(R.id.font_size_selector); - for (int id : sFontSizeBtnsMap.keySet()) { + mFontSizeSelector = findViewById(R.id.font_size_selector);//捆绑字体大小选择器 + for (int id : sFontSizeBtnsMap.keySet()) {//为每一种字体大小设置监听器 View view = findViewById(id); view.setOnClickListener(this); }; - mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); - mFontSizeId = mSharedPrefs.getInt(PREFERENCE_FONT_SIZE, ResourceParser.BG_DEFAULT_FONT_SIZE); + mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);//获取默认的共享偏好 + mFontSizeId = mSharedPrefs.getInt(PREFERENCE_FONT_SIZE, ResourceParser.BG_DEFAULT_FONT_SIZE);//设置字体大小 /** * HACKME: Fix bug of store the resource id in shared preference. * The id may larger than the length of resources, in this case, * return the {@link ResourceParser#BG_DEFAULT_FONT_SIZE} */ - if(mFontSizeId >= TextAppearanceResources.getResourcesSize()) { + if(mFontSizeId >= TextAppearanceResources.getResourcesSize()) {//如果设置的字体大小的id超过了限制,那么就重新调回默认的字体大小 mFontSizeId = ResourceParser.BG_DEFAULT_FONT_SIZE; } - mEditTextList = (LinearLayout) findViewById(R.id.note_edit_list); + mEditTextList = (LinearLayout) findViewById(R.id.note_edit_list);//线性放置 } @Override @@ -402,72 +407,72 @@ public class NoteEditActivity extends Activity implements OnClickListener, super.onPause(); if(saveNote()) { Log.d(TAG, "Note data was saved with length:" + mWorkingNote.getContent().length()); - } + }//提示已保存对应文本 clearSettingState(); } - private void updateWidget() { + private void updateWidget() {//更新widget Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE); - if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_2X) { + if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_2X) {//更新到2x大小 intent.setClass(this, NoteWidgetProvider_2x.class); - } else if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_4X) { + } else if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_4X) {//更新到4x大小 intent.setClass(this, NoteWidgetProvider_4x.class); } else { Log.e(TAG, "Unspported widget type"); return; } - intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { + intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] {//把对应id附加上去 mWorkingNote.getWidgetId() }); - sendBroadcast(intent); + sendBroadcast(intent);//让widget进行刷新操作,从而实现数据同步 setResult(RESULT_OK, intent); } public void onClick(View v) { - int id = v.getId(); - if (id == R.id.btn_set_bg_color) { - mNoteBgColorSelector.setVisibility(View.VISIBLE); + int id = v.getId();//获取id号 + if (id == R.id.btn_set_bg_color) {//如果设置背景颜色 + mNoteBgColorSelector.setVisibility(View.VISIBLE);//将改变颜色的视图显示出来 findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility( View.VISIBLE); - } else if (sBgSelectorBtnsMap.containsKey(id)) { + } else if (sBgSelectorBtnsMap.containsKey(id)) {//如果是背景选择按钮包含此id findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility( - View.GONE); - mWorkingNote.setBgColorId(sBgSelectorBtnsMap.get(id)); - mNoteBgColorSelector.setVisibility(View.GONE); - } else if (sFontSizeBtnsMap.containsKey(id)) { - findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.GONE); - mFontSizeId = sFontSizeBtnsMap.get(id); - mSharedPrefs.edit().putInt(PREFERENCE_FONT_SIZE, mFontSizeId).commit(); - findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE); - if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { - getWorkingText(); - switchToListMode(mWorkingNote.getContent()); + View.GONE);//将选择视图关闭 + mWorkingNote.setBgColorId(sBgSelectorBtnsMap.get(id));//设置对应的背景颜色 + mNoteBgColorSelector.setVisibility(View.GONE);// + } else if (sFontSizeBtnsMap.containsKey(id)) {//点击的是某个字体大小的图标 + findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.GONE);//将选择字体大小的视图关闭 + mFontSizeId = sFontSizeBtnsMap.get(id);//将当前的字体大小设置为所选的大小 + mSharedPrefs.edit().putInt(PREFERENCE_FONT_SIZE, mFontSizeId).commit();//共享字体大小偏好设置为对应的字体大小 + findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE);//显示对应的字体 + if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {//判断是否为检查模式 + getWorkingText();//获取工作中的文本内容 + switchToListMode(mWorkingNote.getContent());//转化为列表模式 } else { mNoteEditor.setTextAppearance(this, - TextAppearanceResources.getTexAppearanceResource(mFontSizeId)); + TextAppearanceResources.getTexAppearanceResource(mFontSizeId));//显示字体大小 } - mFontSizeSelector.setVisibility(View.GONE); + mFontSizeSelector.setVisibility(View.GONE);//关闭字体大小显示 } } @Override public void onBackPressed() { - if(clearSettingState()) { + if(clearSettingState()) {//关闭对应的窗口 return; } - saveNote(); + saveNote();//保存笔记 super.onBackPressed(); } private boolean clearSettingState() { - if (mNoteBgColorSelector.getVisibility() == View.VISIBLE) { - mNoteBgColorSelector.setVisibility(View.GONE); + if (mNoteBgColorSelector.getVisibility() == View.VISIBLE) {//判断背景颜色选择器是否可见 + mNoteBgColorSelector.setVisibility(View.GONE);//关闭 return true; - } else if (mFontSizeSelector.getVisibility() == View.VISIBLE) { - mFontSizeSelector.setVisibility(View.GONE); + } else if (mFontSizeSelector.getVisibility() == View.VISIBLE) {//判断字体大小是否可见 + mFontSizeSelector.setVisibility(View.GONE);//关闭 return true; } return false; @@ -475,89 +480,103 @@ public class NoteEditActivity extends Activity implements OnClickListener, public void onBackgroundColorChanged() { findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility( - View.VISIBLE); - mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId()); - mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId()); + View.VISIBLE);//找到对应颜色的id并进行视图显示 + mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId());//编辑面板进行显示 + mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId());//试图面板显示 } @Override public boolean onPrepareOptionsMenu(Menu menu) { - if (isFinishing()) { + if (isFinishing()) {//页面完成 return true; } - clearSettingState(); - menu.clear(); + clearSettingState();//关闭设置的状态 + menu.clear();//清空菜单 if (mWorkingNote.getFolderId() == Notes.ID_CALL_RECORD_FOLDER) { - getMenuInflater().inflate(R.menu.call_note_edit, menu); + getMenuInflater().inflate(R.menu.call_note_edit, menu);//进行菜单的填充 } else { getMenuInflater().inflate(R.menu.note_edit, menu); } if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { - menu.findItem(R.id.menu_list_mode).setTitle(R.string.menu_normal_mode); + menu.findItem(R.id.menu_list_mode).setTitle(R.string.menu_normal_mode);//切换为正常模式 } else { menu.findItem(R.id.menu_list_mode).setTitle(R.string.menu_list_mode); } - if (mWorkingNote.hasClockAlert()) { - menu.findItem(R.id.menu_alert).setVisible(false); + if (mWorkingNote.hasClockAlert()) {//显示是否有闹钟提示 + menu.findItem(R.id.menu_alert).setVisible(false);//关闭提示 } else { - menu.findItem(R.id.menu_delete_remind).setVisible(false); + menu.findItem(R.id.menu_delete_remind).setVisible(false);//菜单删除提醒关闭 } return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { + switch (item.getItemId()) {//根据选项的id号进行对应的选择 case R.id.menu_new_note: - createNewNote(); + createNewNote();//创建新的标签 break; case R.id.menu_delete: AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(getString(R.string.alert_title_delete)); - builder.setIcon(android.R.drawable.ic_dialog_alert); - builder.setMessage(getString(R.string.alert_message_delete_note)); + builder.setTitle(getString(R.string.alert_title_delete));//提醒是否要删除 + builder.setIcon(android.R.drawable.ic_dialog_alert);//设置删除的图标 + builder.setMessage(getString(R.string.alert_message_delete_note));//提示要不要删除 builder.setPositiveButton(android.R.string.ok, - new DialogInterface.OnClickListener() { + new DialogInterface.OnClickListener() {//确定按钮 public void onClick(DialogInterface dialog, int which) { - deleteCurrentNote(); + deleteCurrentNote();//删除当前的便签 finish(); } }); - builder.setNegativeButton(android.R.string.cancel, null); - builder.show(); + builder.setNegativeButton(android.R.string.cancel, null);//不确定 + builder.show();//继续展示对应界面 break; - case R.id.menu_font_size: - mFontSizeSelector.setVisibility(View.VISIBLE); - findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE); + case R.id.menu_font_size://字体大小菜单 + mFontSizeSelector.setVisibility(View.VISIBLE);//显示字体选择器 + findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE);//将字体大小选择器显示出来 break; case R.id.menu_list_mode: mWorkingNote.setCheckListMode(mWorkingNote.getCheckListMode() == 0 ? - TextNote.MODE_CHECK_LIST : 0); + TextNote.MODE_CHECK_LIST : 0);//设置列表模式 break; - case R.id.menu_share: - getWorkingText(); + case R.id.menu_share://进行菜单分享 + getWorkingText();//获取便签的内容 sendTo(this, mWorkingNote.getContent()); break; case R.id.menu_send_to_desktop: - sendToDesktop(); + sendToDesktop();//发送到桌面上 break; case R.id.menu_alert: - setReminder(); + setReminder();//设置提醒器 break; case R.id.menu_delete_remind: - mWorkingNote.setAlertDate(0, false); + mWorkingNote.setAlertDate(0, false);//设置日期提醒器 + break; + case R.id.menu_Graffiti: + Intent intent = new Intent(this, MyPaintToolsActivity.class); + if (mWorkingNote.getImage() != null) { + intent.putExtra("Bitmap", mWorkingNote.getImage()); + } + startActivityForResult(intent, REQUEST_CODE); break; default: break; } return true; } + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) { + mWorkingNote.setImage(data.getByteArrayExtra("result")); + } + } - private void setReminder() { - DateTimePickerDialog d = new DateTimePickerDialog(this, System.currentTimeMillis()); - d.setOnDateTimeSetListener(new OnDateTimeSetListener() { + private void setReminder() {//设置提醒器 + DateTimePickerDialog d = new DateTimePickerDialog(this, System.currentTimeMillis());//设置新的对话框 + d.setOnDateTimeSetListener(new OnDateTimeSetListener() {//设置监听器 public void OnDateTimeSet(AlertDialog dialog, long date) { - mWorkingNote.setAlertDate(date , true); + mWorkingNote.setAlertDate(date , true);//设置信息 } }); d.show(); @@ -568,10 +587,10 @@ public class NoteEditActivity extends Activity implements OnClickListener, * and {@text/plain} type */ private void sendTo(Context context, String info) { - Intent intent = new Intent(Intent.ACTION_SEND); - intent.putExtra(Intent.EXTRA_TEXT, info); - intent.setType("text/plain"); - context.startActivity(intent); + Intent intent = new Intent(Intent.ACTION_SEND);//代表发送一个文本信息 + intent.putExtra(Intent.EXTRA_TEXT, info);//向intend中加入文本信息 + intent.setType("text/plain");//文本类型 + context.startActivity(intent);//启动这个intent,也就是发送信息 } private void createNewNote() { @@ -580,36 +599,36 @@ public class NoteEditActivity extends Activity implements OnClickListener, // For safety, start a new NoteEditActivity finish(); - Intent intent = new Intent(this, NoteEditActivity.class); - intent.setAction(Intent.ACTION_INSERT_OR_EDIT); - intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mWorkingNote.getFolderId()); - startActivity(intent); + Intent intent = new Intent(this, NoteEditActivity.class);//新建一个intent + intent.setAction(Intent.ACTION_INSERT_OR_EDIT);//设置为编辑或者插入 + intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mWorkingNote.getFolderId());//给id + startActivity(intent);//进行相应的编辑活动 } private void deleteCurrentNote() { - if (mWorkingNote.existInDatabase()) { + if (mWorkingNote.existInDatabase()) {//如果对应的便签在数据库中能找到的话 HashSet