diff --git a/src/Xiaominotes/app/src/main/java/net/micode/notes/data/Notes.java b/src/Xiaominotes/app/src/main/java/net/micode/notes/data/Notes.java index d007b93..973f63b 100644 --- a/src/Xiaominotes/app/src/main/java/net/micode/notes/data/Notes.java +++ b/src/Xiaominotes/app/src/main/java/net/micode/notes/data/Notes.java @@ -204,6 +204,7 @@ public class Notes { *

Type: TEXT

*/ public static final String CONTENT = "content"; + public static final String IMAGE="image"; /** 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 d9efd55..fb758ef 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 @@ -25,6 +25,7 @@ import android.util.Log; import net.micode.notes.data.Notes.DataColumns; import net.micode.notes.data.Notes.DataConstants; import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.model.Note; public class NotesDatabaseHelper extends SQLiteOpenHelper { @@ -323,6 +324,11 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { oldVersion++; } + if(oldVersion== 4) + { + upgradeToV5(db); + oldVersion++; + } if (reCreateTriggers) { reCreateNoteTableTriggers(db); reCreateDataTableTriggers(db); @@ -360,4 +366,8 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0"); } + public void upgradeToV5(SQLiteDatabase db) + { + db.execSQL("ALTER TABLE "+ TABLE.NOTE + " ADD COLUMN " + NoteColumns.IMAGE + "BLOB DEFAULT NULL"); + } } diff --git a/src/Xiaominotes/app/src/main/java/net/micode/notes/data/NotesProvider.java b/src/Xiaominotes/app/src/main/java/net/micode/notes/data/NotesProvider.java index edb0a60..db9cac4 100644 --- a/src/Xiaominotes/app/src/main/java/net/micode/notes/data/NotesProvider.java +++ b/src/Xiaominotes/app/src/main/java/net/micode/notes/data/NotesProvider.java @@ -33,6 +33,7 @@ import net.micode.notes.R; import net.micode.notes.data.Notes.DataColumns; import net.micode.notes.data.Notes.NoteColumns; import net.micode.notes.data.NotesDatabaseHelper.TABLE; +import net.micode.notes.model.Note; public class NotesProvider extends ContentProvider { @@ -163,6 +164,7 @@ public class NotesProvider extends ContentProvider { } insertedId = dataId = db.insert(TABLE.DATA, null, values); break; + default: throw new IllegalArgumentException("Unknown URI " + uri); } diff --git a/src/Xiaominotes/app/src/main/java/net/micode/notes/model/Note.java b/src/Xiaominotes/app/src/main/java/net/micode/notes/model/Note.java index 6706cf6..e2fc9b0 100644 --- a/src/Xiaominotes/app/src/main/java/net/micode/notes/model/Note.java +++ b/src/Xiaominotes/app/src/main/java/net/micode/notes/model/Note.java @@ -75,6 +75,12 @@ public class Note { mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); } + public void setImage(String key,byte[] image) + { + mNoteDiffValues.put(key,image); + mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED,1); + mNoteDiffValues.put(NoteColumns.MODIFIED_DATE,System.currentTimeMillis()); + } public void setTextData(String key, String value) { mNoteData.setTextData(key, value); 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 9c78cdc..aee71fd 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 @@ -62,6 +62,7 @@ public class WorkingNote { private NoteSettingChangedListener mNoteSettingStatusListener; private byte[] image; + public boolean isChange=false; public static final String[] DATA_PROJECTION = new String[] { DataColumns.ID, @@ -79,7 +80,8 @@ public class WorkingNote { NoteColumns.BG_COLOR_ID, NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE, - NoteColumns.MODIFIED_DATE + NoteColumns.MODIFIED_DATE, + NoteColumns.IMAGE }; private static final int DATA_ID_COLUMN = 0; @@ -101,6 +103,8 @@ public class WorkingNote { private static final int NOTE_MODIFIED_DATE_COLUMN = 5; + private static final int NOTE_IMAGE=6; + // New note construct private WorkingNote(Context context, long folderId) { mContext = context; @@ -137,6 +141,7 @@ public class WorkingNote { mWidgetType = cursor.getInt(NOTE_WIDGET_TYPE_COLUMN); mAlertDate = cursor.getLong(NOTE_ALERTED_DATE_COLUMN); mModifiedDate = cursor.getLong(NOTE_MODIFIED_DATE_COLUMN); + image=cursor.getBlob(NOTE_IMAGE); } cursor.close(); } else { @@ -189,7 +194,7 @@ public class WorkingNote { } public synchronized boolean saveNote() { - if (isWorthSaving()) {//如果值得保存的话就保存 + if (isChange||isWorthSaving()) {//如果值得保存的话就保存 if (!existInDatabase()) {//是否在database中存在 if ((mNoteId = Note.getNewNoteId(mContext, mFolderId)) == 0) {//创建新的笔记,如果创建新的笔记过程中发生异常,那么此语句就执行,直接返回false Log.e(TAG, "Create new note fail with id:" + mNoteId); @@ -218,8 +223,8 @@ public class WorkingNote { } private boolean isWorthSaving() {//如果当前文件是要进行删除的文件则没有必要保存,不在数据库中也不需要保存,如果内容为空也不用保存,已经在数据库中存在也不需要保存,如果没有改变内容也不需要保存 - if (mIsDeleted || (!existInDatabase() && TextUtils.isEmpty(mContent)) - || (existInDatabase() && !mNote.isLocalModified())) { + if ((mIsDeleted || (!existInDatabase() && TextUtils.isEmpty(mContent)) + || (existInDatabase() && !mNote.isLocalModified()))) { return false; } else { return true; @@ -290,6 +295,7 @@ public class WorkingNote { } public void setImage(byte[]image) { + mNote.setImage(DataColumns.IMAGE,image); this.image=image; } 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 3f1def0..9383521 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 @@ -463,7 +463,6 @@ public class NoteEditActivity extends AppCompatActivity implements OnClickListen if(clearSettingState()) {//关闭对应的窗口 return; } - saveNote();//保存笔记 super.onBackPressed(); } @@ -570,6 +569,7 @@ public class NoteEditActivity extends AppCompatActivity implements OnClickListen super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) { mWorkingNote.setImage(data.getByteArrayExtra("result")); + mWorkingNote.isChange=true; } } @@ -692,6 +692,7 @@ public class NoteEditActivity extends AppCompatActivity implements OnClickListen edit.setSelection(length);//设置光标到对应的长度 } + public void onEditTextEnter(int index, String text) { /** * Should not happen, check for debug