Type: INTEGER (long)
diff --git a/src/Notes-master/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java b/src/Notes-master/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java index ffe5d577..729f4eb3 100644 --- a/src/Notes-master/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java +++ b/src/Notes-master/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java @@ -30,7 +30,7 @@ import net.micode.notes.data.Notes.NoteColumns; public class NotesDatabaseHelper extends SQLiteOpenHelper { private static final String DB_NAME = "note.db"; - private static final int DB_VERSION = 4; + private static final int DB_VERSION = 5; public interface TABLE { public static final String NOTE = "note"; @@ -60,7 +60,8 @@ 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.PASSCODE + " TEXT NOT NULL DEFAULT ''" + ")"; private static final String CREATE_DATA_TABLE_SQL = @@ -80,7 +81,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { private static final String CREATE_DATA_NOTE_ID_INDEX_SQL = "CREATE INDEX IF NOT EXISTS note_id_index ON " + - TABLE.DATA + "(" + DataColumns.NOTE_ID + ");"; + TABLE.DATA + "(" + DataColumns.NOTE_ID + ");"; /** * Increase folder's note count when move note to the folder @@ -322,6 +323,21 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { oldVersion++; } + if (oldVersion == 4) { + upgradeToV5(db); + oldVersion++; + } +/* + if (oldVersion == 5) { + upgradeToV6(db); + oldVersion++; + } + + if (oldVersion == 6) { + upgradeToV7(db); + oldVersion++; + }*/ + if (reCreateTriggers) { reCreateNoteTableTriggers(db); reCreateDataTableTriggers(db); @@ -359,4 +375,22 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0"); } + + private void upgradeToV5(SQLiteDatabase db) { + db.execSQL("DROP TABLE IF EXISTS " + TABLE.NOTE); + db.execSQL("DROP TABLE IF EXISTS " + TABLE.DATA); + createNoteTable(db); + createDataTable(db); + } +/* + private void upgradeToV6(SQLiteDatabase db) { + db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD CLOUMN" + NoteColumns.TOP + + " INTEGER NOT NULL DEFAULT 0"); + } + + private void upgradeToV7(SQLiteDatabase db) { + db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD CLOUMN" + NoteColumns.CLASSIFICATION + + " INTEGER NOT NULL DEFAULT 0"); + } + */ } diff --git a/src/Notes-master/app/src/main/java/net/micode/notes/model/Note.java b/src/Notes-master/app/src/main/java/net/micode/notes/model/Note.java index 6706cf67..54593584 100644 --- a/src/Notes-master/app/src/main/java/net/micode/notes/model/Note.java +++ b/src/Notes-master/app/src/main/java/net/micode/notes/model/Note.java @@ -50,6 +50,7 @@ public class Note { values.put(NoteColumns.TYPE, Notes.TYPE_NOTE); values.put(NoteColumns.LOCAL_MODIFIED, 1); values.put(NoteColumns.PARENT_ID, folderId); + values.put(NoteColumns.PASSCODE, ""); Uri uri = context.getContentResolver().insert(Notes.CONTENT_NOTE_URI, values); long noteId = 0; diff --git a/src/Notes-master/app/src/main/java/net/micode/notes/model/WorkingNote.java b/src/Notes-master/app/src/main/java/net/micode/notes/model/WorkingNote.java index be081e43..bea760dd 100644 --- a/src/Notes-master/app/src/main/java/net/micode/notes/model/WorkingNote.java +++ b/src/Notes-master/app/src/main/java/net/micode/notes/model/WorkingNote.java @@ -42,6 +42,9 @@ public class WorkingNote { // Note mode private int mMode; + /**记录便签已设置密码*/ + private String mPasscode; + private long mAlertDate; private long mModifiedDate; @@ -54,6 +57,7 @@ public class WorkingNote { private long mFolderId; + private Context mContext; private static final String TAG = "WorkingNote"; @@ -78,7 +82,8 @@ public class WorkingNote { NoteColumns.BG_COLOR_ID, NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE, - NoteColumns.MODIFIED_DATE + NoteColumns.MODIFIED_DATE, + NoteColumns.PASSCODE }; private static final int DATA_ID_COLUMN = 0; @@ -101,6 +106,7 @@ public class WorkingNote { private static final int NOTE_MODIFIED_DATE_COLUMN = 5; + private static final int NOTE_PASSCODE_COLUMN = 6; // New note construct private WorkingNote(Context context, long folderId) { mContext = context; @@ -112,6 +118,7 @@ public class WorkingNote { mIsDeleted = false; mMode = 0; mWidgetType = Notes.TYPE_WIDGET_INVALIDE; + mPasscode = ""; //save note's password } // Existing note construct @@ -137,6 +144,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); + mPasscode = cursor.getString(NOTE_PASSCODE_COLUMN); //get password from database } cursor.close(); } else { @@ -342,6 +350,22 @@ public class WorkingNote { return mWidgetType; } + /**判断是否已经设置密码*/ + public boolean hasPasscode() { + return !mPasscode.equals(""); + } + + /**设置便签访问密码,并存入数据库*/ + public void setPasscode(String passcode) { + mPasscode = passcode; + mNote.setNoteValue(NoteColumns.PASSCODE, passcode); + } + + /**获取设置的密码*/ + public String getPasscode() { + return mPasscode; + } + public interface NoteSettingChangedListener { /** * Called when the background color of current note has just changed diff --git a/src/Notes-master/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java index 96a9ff89..ae424d8f 100644 --- a/src/Notes-master/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java +++ b/src/Notes-master/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java @@ -30,9 +30,11 @@ import android.content.SharedPreferences; import android.graphics.Paint; import android.os.Bundle; import android.preference.PreferenceManager; +import android.text.Editable; import android.text.Spannable; import android.text.SpannableString; import android.text.TextUtils; +import android.text.TextWatcher; import android.text.format.DateUtils; import android.text.style.BackgroundColorSpan; import android.util.Log; @@ -141,6 +143,9 @@ public class NoteEditActivity extends Activity implements OnClickListener, private static final int SHORTCUT_ICON_TITLE_MAX_LEN = 10; + private static final int REQUEST_SET_PASSCODE = 0; + private static final int REQUEST_UNLOCK = 1; + public static final String TAG_CHECKED = String.valueOf('\u221A'); public static final String TAG_UNCHECKED = String.valueOf('\u25A1'); @@ -148,6 +153,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, private String mUserQuery; private Pattern mPattern; + private boolean Locked; /* 用以判断是否已解锁 */ @Override protected void onCreate(Bundle savedInstanceState) { @@ -259,6 +265,10 @@ public class NoteEditActivity extends Activity implements OnClickListener, return false; } mWorkingNote.setOnSettingStatusChangedListener(this); + Locked = mWorkingNote.hasPasscode();//设置便签解锁状态; + if (intent.hasExtra("lock")) { + Locked = false; + } return true; } @@ -293,6 +303,15 @@ public class NoteEditActivity extends Activity implements OnClickListener, * is not ready */ showAlertHeader(); + + //如果设置了密码,启动输入密码页面 + if (mWorkingNote.hasPasscode() && Locked) { + saveNote(); + Intent intent = new Intent(this,UnlockActivity.class); + intent.putExtra(Intent.EXTRA_UID, mWorkingNote.getNoteId()); + startActivityForResult(intent,REQUEST_SET_PASSCODE); + finish(); + } } private void showAlertHeader() { @@ -502,6 +521,12 @@ public class NoteEditActivity extends Activity implements OnClickListener, } else { menu.findItem(R.id.menu_delete_remind).setVisible(false); } + //如果已经设置密码,显示删除密码选项,否则,显示设置密码选项 + if (mWorkingNote.hasPasscode()) { + menu.findItem(R.id.menu_set_password).setVisible(false); + } else { + menu.findItem(R.id.menu_remove_password).setVisible(false); + } return true; } @@ -547,12 +572,43 @@ public class NoteEditActivity extends Activity implements OnClickListener, case R.id.menu_delete_remind: mWorkingNote.setAlertDate(0, false); break; + //设置密码 + case R.id.menu_set_password: + setPasscode(); + break; + //删除密码 + case R.id.menu_remove_password: + deletePasscode(); + break; default: break; } return true; } + /** + * 弹出设置密码界面 + */ + private void setPasscode() { + //确保笔记已写入数据库 + saveNote(); + //初始化一个新的意图,用以跳转至设置密码界面 + Intent intent = new Intent(this,SetLockActivity.class); + //给意图传入当前便签的id参数,便于从设置密码活动中跳转回编辑便签活动 + intent.putExtra(Intent.EXTRA_UID, mWorkingNote.getNoteId()); + startActivity(intent); + finish(); + } + + /** + * 删除便签密码 + */ + private void deletePasscode() { + mWorkingNote.setPasscode(""); + saveNote(); + Toast.makeText(NoteEditActivity.this,R.string.note_passcode_deleted,Toast.LENGTH_SHORT).show(); + } + private void setReminder() { DateTimePickerDialog d = new DateTimePickerDialog(this, System.currentTimeMillis()); d.setOnDateTimeSetListener(new OnDateTimeSetListener() { diff --git a/src/Notes-master/app/src/main/java/net/micode/notes/ui/NoteItemData.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/NoteItemData.java index 0f5a8782..46bd84bb 100644 --- a/src/Notes-master/app/src/main/java/net/micode/notes/ui/NoteItemData.java +++ b/src/Notes-master/app/src/main/java/net/micode/notes/ui/NoteItemData.java @@ -40,6 +40,7 @@ public class NoteItemData { NoteColumns.TYPE, NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE, + NoteColumns.PASSCODE }; private static final int ID_COLUMN = 0; @@ -54,6 +55,7 @@ public class NoteItemData { private static final int TYPE_COLUMN = 9; private static final int WIDGET_ID_COLUMN = 10; private static final int WIDGET_TYPE_COLUMN = 11; + private static final int PASSCODE_COLUMN = 12; private long mId; private long mAlertDate; @@ -69,6 +71,7 @@ public class NoteItemData { private int mWidgetType; private String mName; private String mPhoneNumber; + private String mPasscode; private boolean mIsLastItem; private boolean mIsFirstItem; @@ -92,6 +95,7 @@ public class NoteItemData { mWidgetId = cursor.getInt(WIDGET_ID_COLUMN); mWidgetType = cursor.getInt(WIDGET_TYPE_COLUMN); + mPasscode = cursor.getString(PASSCODE_COLUMN); mPhoneNumber = ""; if (mParentId == Notes.ID_CALL_RECORD_FOLDER) { mPhoneNumber = DataUtils.getCallNumberByNoteId(context.getContentResolver(), mId); @@ -221,4 +225,8 @@ public class NoteItemData { public static int getNoteType(Cursor cursor) { return cursor.getInt(TYPE_COLUMN); } + + public boolean hasLock() { + return !mPasscode.equals(""); + } } diff --git a/src/Notes-master/app/src/main/java/net/micode/notes/ui/NotesListActivity.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/NotesListActivity.java index 6fedf169..3aace150 100644 --- a/src/Notes-master/app/src/main/java/net/micode/notes/ui/NotesListActivity.java +++ b/src/Notes-master/app/src/main/java/net/micode/notes/ui/NotesListActivity.java @@ -141,6 +141,7 @@ public class NotesListActivity