diff --git a/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java b/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java index cc67c31..4e1fa12 100644 --- a/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java +++ b/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java @@ -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.PASSWORD + "TEXT NOT NULL DEFAULT 1" + + NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.PASSWORD + " TEXT DEFAULT NULL " + ")"; private static final String CREATE_DATA_TABLE_SQL = @@ -365,7 +366,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { } private void upgradeToV5(SQLiteDatabase db){ db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.PASSWORD - + " TEXT NOT NULL DEFAULT 1"); + + " TEXT DEFAULT NULL "); } } diff --git a/src/main/java/net/micode/notes/model/WorkingNote.java b/src/main/java/net/micode/notes/model/WorkingNote.java index 1037bf1..7733b4b 100644 --- a/src/main/java/net/micode/notes/model/WorkingNote.java +++ b/src/main/java/net/micode/notes/model/WorkingNote.java @@ -75,9 +75,9 @@ public class WorkingNote { private Context mContext; public boolean PRIVATE_MODE = false; - private static final String TAG = "WorkingNote";//定义为静态变量,保证不能再被更改。防止数据出现异常 + private static final String TAG = "WorkingNote"; //定义为静态变量,保证不能再被更改。防止数据出现异常 - private boolean mIsDeleted;//定义一个布尔变量,用来保存是否要被删除。通过查看用法,发现在后面保存|修改的时候要进行判断。 + private boolean mIsDeleted; //定义一个布尔变量,用来保存是否要被删除。通过查看用法,发现在后面保存|修改的时候要进行判断。 private NoteSettingChangedListener mNoteSettingStatusListener;//定义了一个接口,具体是在NoteEditActivities中实现,实现对于便签是否修改的监听 /** @@ -206,6 +206,7 @@ public class WorkingNote { mContent = cursor.getString(DATA_CONTENT_COLUMN); mMode = cursor.getInt(DATA_MODE_COLUMN); mNote.setTextDataId(cursor.getLong(DATA_ID_COLUMN)); + } else if (DataConstants.CALL_NOTE.equals(type)) { mNote.setCallDataId(cursor.getLong(DATA_ID_COLUMN)); } else { @@ -354,7 +355,8 @@ public class WorkingNote { mNote.setNoteValue(NoteColumns.PARENT_ID, String.valueOf(Notes.ID_CALL_RECORD_FOLDER)); } public void setPassword(String password){ - mNote.setNoteValue(NoteColumns.PASSWORD,String.valueOf(password)); +// mPassword=password; + mNote.setNoteValue(NoteColumns.PASSWORD,password); } public boolean hasClockAlert() { diff --git a/src/main/java/net/micode/notes/ui/NoteEditActivity.java b/src/main/java/net/micode/notes/ui/NoteEditActivity.java index 720dd74..99f2b4a 100644 --- a/src/main/java/net/micode/notes/ui/NoteEditActivity.java +++ b/src/main/java/net/micode/notes/ui/NoteEditActivity.java @@ -289,8 +289,43 @@ public class NoteEditActivity extends Activity implements OnClickListener, mWorkingNote.getModifiedDate(), DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_YEAR)); -// mPasword=mWorkingNote.getPassword(); -// if(mPassword) +// String mPassword=mWorkingNote.getPassword(); +// if (mWorkingNote.getPassword()!=null){ +// final AlertDialog.Builder builder = new AlertDialog.Builder(this); +// View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_text, null); +// //编辑Text +// final EditText etName = (EditText) view.findViewById(R.id.et_foler_name); +// etName.setText(""); +// etName.setHint("请输入密码"); +// builder.setTitle("密码检验"); +// builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { +// @Override +// public void onClick(DialogInterface dialog, int which) { +// //获取输入的字符串 +// String password = etName.getText().toString(); +// Log.d("mPassword: ", mPassword); +// Log.d("password: ", password); +// //判断密码正确性 +// if (!password.equals(mPassword)) { +// Log.d("密码不正确,正确密码是:",mPassword); +// dialog.dismiss(); +// onBackPressed(); +// } +// } +// }); +// builder.setNegativeButton("cancel", new DialogInterface.OnClickListener(){ +// @Override +// public void onClick(DialogInterface dialog, int which) { +// dialog.dismiss(); +// onBackPressed(); +// } +// }); +// final Dialog dialog = builder.setView(view).show(); +// dialog.show(); +// } +// else{ +// Toast.makeText(NoteEditActivity.this,"还没有设置密码", Toast.LENGTH_SHORT).show(); +// } /** * TODO: Add the menu for setting alert. Currently disable it because the DateTimePicker @@ -545,33 +580,38 @@ public class NoteEditActivity extends Activity implements OnClickListener, mWorkingNote.setAlertDate(0, false); } else if (itemId == R.id.menu_enter_private_mode){ - final AlertDialog.Builder builder = new AlertDialog.Builder(this); - View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_text,null); - final EditText etName = (EditText)view.findViewById(R.id.et_foler_name); - etName.setText(""); - etName.setHint("请输入密码"); - builder.setTitle("为便签设置新密码"); - builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - String password = etName.getText().toString(); - mWorkingNote.setPassword(password); - Toast.makeText(NoteEditActivity.this,"密码设置成功", Toast.LENGTH_SHORT).show(); - InputMethodManager inputMethodManager =(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); - inputMethodManager.hideSoftInputFromWindow(etName.getWindowToken(),0); - dialog.dismiss(); - } - }); - builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - InputMethodManager inputMethodManager = (InputMethodManager) - getSystemService(Context.INPUT_METHOD_SERVICE); - inputMethodManager.hideSoftInputFromWindow(etName.getWindowToken(),0); - } - }); - final Dialog dialog = builder.setView(view).show(); - } + if(mWorkingNote.getPassword()==null){ + final AlertDialog.Builder builder = new AlertDialog.Builder(this); + View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_text,null); + final EditText etName = (EditText)view.findViewById(R.id.et_foler_name); + etName.setText(""); + etName.setHint("请输入密码"); + builder.setTitle("为便签设置新密码"); + builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + String password = etName.getText().toString(); + mWorkingNote.setPassword(password); + if ( mWorkingNote.getPassword() != null ){ + Toast.makeText(NoteEditActivity.this,"密码设置成功", Toast.LENGTH_SHORT).show(); + } + InputMethodManager inputMethodManager =(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + inputMethodManager.hideSoftInputFromWindow(etName.getWindowToken(),0); + dialog.dismiss(); + } + }); + builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + InputMethodManager inputMethodManager = (InputMethodManager) + getSystemService(Context.INPUT_METHOD_SERVICE); + inputMethodManager.hideSoftInputFromWindow(etName.getWindowToken(),0); + } + }); + final Dialog dialog = builder.setView(view).show(); + } + } + return true; } diff --git a/src/main/java/net/micode/notes/ui/NoteItemData.java b/src/main/java/net/micode/notes/ui/NoteItemData.java index 436d009..17cc5d4 100644 --- a/src/main/java/net/micode/notes/ui/NoteItemData.java +++ b/src/main/java/net/micode/notes/ui/NoteItemData.java @@ -39,8 +39,7 @@ public class NoteItemData { NoteColumns.SNIPPET, NoteColumns.TYPE, NoteColumns.WIDGET_ID, - NoteColumns.WIDGET_TYPE, -// NoteColumns.PASSWORD, + NoteColumns.WIDGET_TYPE, NoteColumns.PASSWORD }; private static final int ID_COLUMN = 0; @@ -55,7 +54,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 PASSWORD_COLUMN = 12;//这里事实上还在存疑,时候需要增加一个列用于索引。 + private static final int PASSWORD_COLUMN = 12;//这里事实上还在存疑,时候需要增加一个列用于索引。 private long mId; private long mAlertDate; @@ -72,7 +71,7 @@ public class NoteItemData { private String mName; private String mPhoneNumber; -// private String mPassword; + private String mPassword; private boolean mIsLastItem; private boolean mIsFirstItem; @@ -95,7 +94,7 @@ public class NoteItemData { mType = cursor.getInt(TYPE_COLUMN); mWidgetId = cursor.getInt(WIDGET_ID_COLUMN); mWidgetType = cursor.getInt(WIDGET_TYPE_COLUMN); -// mPassword =cursor.getString(PASSWORD_COLUMN); + mPassword =cursor.getString(PASSWORD_COLUMN); mPhoneNumber = ""; @@ -203,6 +202,9 @@ public class NoteItemData { public int getType() { return mType; } + public String getmPassword(){ + return mPassword; + } public int getWidgetType() { return mWidgetType; @@ -227,4 +229,11 @@ public class NoteItemData { public static int getNoteType(Cursor cursor) { return cursor.getInt(TYPE_COLUMN); } + + public boolean hasPassword(){ + if(mPassword.length()!=0&&mPassword!=null){ + return true; + } + return false; + } } diff --git a/src/main/java/net/micode/notes/ui/NotesListActivity.java b/src/main/java/net/micode/notes/ui/NotesListActivity.java index 6db3761..6d060fe 100644 --- a/src/main/java/net/micode/notes/ui/NotesListActivity.java +++ b/src/main/java/net/micode/notes/ui/NotesListActivity.java @@ -877,7 +877,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt || item.getType() == Notes.TYPE_SYSTEM) { openFolder(item); } else if (item.getType() == Notes.TYPE_NOTE) { - openNode(item); + testNode(item); } else { Log.e(TAG, "Wrong note type in NOTE_LIST"); } @@ -885,7 +885,8 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt case SUB_FOLDER: case CALL_RECORD_FOLDER: if (item.getType() == Notes.TYPE_NOTE) { - openNode(item); + testNode(item); +// openNode(item); } else { Log.e(TAG, "Wrong note type in SUB_FOLDER"); } @@ -932,4 +933,70 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } return false; } + public void testNode(final NoteItemData item){ + if (!item.getmPassword().equals("1"))//判断是否有密码,如果没有密码,直接打开即可 +// if(item.getmPassword()!=null && !item.getmPassword().equals("")) + { + final AlertDialog.Builder builder = new AlertDialog.Builder(this);//初始化对话框 + builder.setTitle("验证密码"); + View view = LayoutInflater.from(this).inflate(R.layout.pwd, null);//加载对话框的布局文件 + final EditText editPwd = (EditText) view.findViewById(R.id.set_password);//初始化对话框里的文本对象 + editPwd.setHint("输入隐私密码"); + builder.setPositiveButton(android.R.string.ok, null);//确定按钮 + builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) {//取消按钮 + hideSoftInput(editPwd);//隐藏软键盘 + } + }); + showSoftInput();//显示软键盘 + final Dialog dialog = builder.setView(view).show();//显示出来 + + final Button positive = (Button)dialog.findViewById(android.R.id.button1);//加载确定按钮布局文件 + positive.setOnClickListener(new OnClickListener() { + public void onClick(View v) {//设置确定按钮的接收器 + hideSoftInput(editPwd);//点击确定后收起软键盘 + String Password = editPwd.getText().toString();//文本框里的输入值 + String mPassword=item.getmPassword(); + if (TextUtils.isEmpty(Password) || Password.equals(mPassword)) {//输入不为空 +// Toast.makeText(getApplicationContext(), Password, Toast.LENGTH_SHORT).show(); + Toast.makeText(NotesListActivity.this,"密码正确", Toast.LENGTH_SHORT).show(); +// inputPwd = Password; + openNode(item); + dialog.dismiss();//撤销对话框 + }else{ + Toast.makeText(NotesListActivity.this,"密码错误", Toast.LENGTH_SHORT).show(); + editPwd.setText(""); + dialog.show(); + } + + + + } + + }); + if (TextUtils.isEmpty(editPwd.getText())) {//如果文件夹名称为空,则不能选择确定按钮 + positive.setEnabled(false); + } + + editPwd.addTextChangedListener(new TextWatcher() {//添加文本更改监听器,即判断文本更改状态 + public void beforeTextChanged(CharSequence s, int start, int count, int after) {//文本更改之前(未完成) + // TODO Auto-generated method stub + } + + public void onTextChanged(CharSequence s, int start, int before, int count) {//当前文本改变触发, + if (TextUtils.isEmpty(editPwd.getText())) {//文本为空确定按键不可用,不为空则可用 + positive.setEnabled(false); + } else { + positive.setEnabled(true); + } + } + public void afterTextChanged(Editable s) {//文本修改之后(未完成) + // TODO Auto-generated method stub + } + }); + } else { + openNode(item); + } + } } + diff --git a/src/main/java/net/micode/notes/ui/NotesListItem.java b/src/main/java/net/micode/notes/ui/NotesListItem.java index 72565d9..f0b64a5 100644 --- a/src/main/java/net/micode/notes/ui/NotesListItem.java +++ b/src/main/java/net/micode/notes/ui/NotesListItem.java @@ -32,6 +32,7 @@ import net.micode.notes.tool.ResourceParser.NoteItemBgResources; public class NotesListItem extends LinearLayout { private ImageView mAlert; + private ImageView mLock; private TextView mTitle; private TextView mTime; private TextView mCallName; @@ -86,7 +87,14 @@ public class NotesListItem extends LinearLayout { mAlert.setVisibility(View.GONE); // if(data.has) } else { - mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); + if("1".equals(data.getmPassword())){ + mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); + }else { + + mTitle.setText("便签已加密"); + } +// +// mTitle.setText("Jiami"); if (data.hasAlert()) { mAlert.setImageResource(R.drawable.clock); mAlert.setVisibility(View.VISIBLE); diff --git a/src/main/res/layout/note_edit.xml b/src/main/res/layout/note_edit.xml index 10b2aa7..d6fcae5 100644 --- a/src/main/res/layout/note_edit.xml +++ b/src/main/res/layout/note_edit.xml @@ -46,6 +46,12 @@ android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:background="@drawable/title_alert" /> + + + + + + - \ No newline at end of file