mirror of
https://github.com/moparisthebest/keepass2android
synced 2024-11-22 09:12:17 -05:00
ask for comfirmation when leaving edit entry with back buttom after making changes
This commit is contained in:
parent
5370e73639
commit
6ba4068a28
@ -53,6 +53,8 @@ namespace keepass2android
|
||||
private PwUuid mSelectedCustomIconID = PwUuid.Zero;
|
||||
private bool mSelectedIcon = false;
|
||||
|
||||
bool mEntryModified;
|
||||
|
||||
public static void Launch(Activity act, PwEntry pw) {
|
||||
Intent i = new Intent(act, typeof(EntryEditActivity));
|
||||
|
||||
@ -145,6 +147,7 @@ namespace keepass2android
|
||||
}
|
||||
}*/
|
||||
mIsNew = true;
|
||||
mEntryModified = true;
|
||||
|
||||
} else {
|
||||
|
||||
@ -357,6 +360,8 @@ namespace keepass2android
|
||||
ees.getDeleteButton().Click += (senderEes, eEes) => deleteAdvancedString((View)senderEes);
|
||||
container.AddView(ees);
|
||||
|
||||
mEntryModified = true;
|
||||
|
||||
// Scroll bottom
|
||||
scroll.Post(() => {
|
||||
scroll.FullScroll(FocusSearchDirection.Down);
|
||||
@ -374,7 +379,7 @@ namespace keepass2android
|
||||
mEntry.ExpiryTime = DateTime.Now;
|
||||
}
|
||||
updateExpires();
|
||||
|
||||
mEntryModified = true;
|
||||
};
|
||||
|
||||
}
|
||||
@ -446,9 +451,40 @@ namespace keepass2android
|
||||
{
|
||||
Toast.MakeText(this, GetString(Resource.String.AttachFailed)+" "+exAttach.Message, ToastLength.Long).Show();
|
||||
}
|
||||
mEntryModified = true;
|
||||
populateBinaries();
|
||||
}
|
||||
|
||||
public override void OnBackPressed()
|
||||
{
|
||||
if (mEntryModified == false)
|
||||
{
|
||||
base.OnBackPressed();
|
||||
} else
|
||||
{
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.SetTitle(GetString(Resource.String.AskDiscardChanges_title));
|
||||
|
||||
builder.SetMessage(GetString(Resource.String.AskDiscardChanges));
|
||||
|
||||
builder.SetPositiveButton(GetString(Android.Resource.String.Yes), new EventHandler<DialogClickEventArgs>((dlgSender, dlgEvt) =>
|
||||
{
|
||||
Finish();
|
||||
|
||||
}));
|
||||
|
||||
builder.SetNegativeButton(GetString(Android.Resource.String.No), new EventHandler<DialogClickEventArgs>((dlgSender, dlgEvt) =>
|
||||
{
|
||||
|
||||
}));
|
||||
|
||||
|
||||
Dialog dialog = builder.Create();
|
||||
dialog.Show();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
|
||||
{
|
||||
switch ((int)resultCode)
|
||||
@ -463,6 +499,7 @@ namespace keepass2android
|
||||
ImageButton currIconButton = (ImageButton) FindViewById(Resource.Id.icon_button);
|
||||
//TODO: custom image
|
||||
currIconButton.SetImageResource(Icons.iconToResId(mSelectedIconID));
|
||||
mEntryModified = true;
|
||||
break;
|
||||
|
||||
case RESULT_OK_PASSWORD_GENERATOR:
|
||||
@ -472,7 +509,7 @@ namespace keepass2android
|
||||
|
||||
password.Text = generatedPassword;
|
||||
confPassword.Text = generatedPassword;
|
||||
|
||||
mEntryModified = true;
|
||||
break;
|
||||
case (int)Result.Ok:
|
||||
if (requestCode == Intents.REQUEST_CODE_FILE_BROWSE)
|
||||
@ -511,6 +548,7 @@ namespace keepass2android
|
||||
binaryButton.SetCompoundDrawablesWithIntrinsicBounds( Resources.GetDrawable(Android.Resource.Drawable.IcMenuDelete),null, null, null);
|
||||
binaryButton.Click += (object sender, EventArgs e) =>
|
||||
{
|
||||
mEntryModified = true;
|
||||
Button btnSender = (Button)(sender);
|
||||
mEntry.Binaries.Remove(key);
|
||||
populateBinaries();
|
||||
@ -632,6 +670,7 @@ namespace keepass2android
|
||||
if (!PwDefs.IsStandardField(key)) {
|
||||
EntryEditSection ees = (EntryEditSection) LayoutInflater.Inflate(Resource.Layout.entry_edit_section, null);
|
||||
ees.setData(key, pair.Value);
|
||||
ees.ContentChanged += (sender, e) => {mEntryModified=true;};
|
||||
ees.getDeleteButton().Click += (sender, e) => deleteAdvancedString((View)sender);
|
||||
container.AddView(ees);
|
||||
}
|
||||
@ -652,7 +691,7 @@ namespace keepass2android
|
||||
public void deleteAdvancedString(View view) {
|
||||
EntryEditSection section = (EntryEditSection) view.Parent;
|
||||
LinearLayout container = (LinearLayout) FindViewById(Resource.Id.advanced_container);
|
||||
|
||||
mEntryModified = true;
|
||||
for (int i = 0; i < container.ChildCount; i++) {
|
||||
EntryEditSection ees = (EntryEditSection) container.GetChildAt(i);
|
||||
if (ees == section) {
|
||||
@ -714,6 +753,7 @@ namespace keepass2android
|
||||
private void populateText(int viewId, String text) {
|
||||
TextView tv = (TextView) FindViewById(viewId);
|
||||
tv.Text = text;
|
||||
tv.TextChanged += (sender, e) => {mEntryModified = true;};
|
||||
}
|
||||
|
||||
private class AfterSave : OnFinish {
|
||||
|
@ -1009,6 +1009,12 @@ namespace keepass2android
|
||||
// aapt resource value: 0x7f0500f1
|
||||
public const int AskDeletePermanently_title = 2131034353;
|
||||
|
||||
// aapt resource value: 0x7f0500f4
|
||||
public const int AskDiscardChanges = 2131034356;
|
||||
|
||||
// aapt resource value: 0x7f0500f5
|
||||
public const int AskDiscardChanges_title = 2131034357;
|
||||
|
||||
// aapt resource value: 0x7f0500e9
|
||||
public const int AskOverwriteBinary = 2131034345;
|
||||
|
||||
|
@ -214,6 +214,8 @@
|
||||
<string name="AskDeletePermanently_title">Delete permanently?</string>
|
||||
<string name="AskReloadFile_title">Reload file?</string>
|
||||
<string name="AskReloadFile">The file which is currently open was changed by another program. Do you want to reload it?</string>
|
||||
<string name="AskDiscardChanges">Do you really want to discard the changes made? (The Save button is at the top of the form.)</string>
|
||||
<string name="AskDiscardChanges_title">Discard changes?</string>
|
||||
<string-array name="clipboard_timeout_options">
|
||||
<item>30 seconds</item>
|
||||
<item>1 minute</item>
|
||||
|
@ -33,6 +33,8 @@ namespace keepass2android.view
|
||||
{
|
||||
public class EntryEditSection : RelativeLayout
|
||||
{
|
||||
public event EventHandler ContentChanged;
|
||||
|
||||
public EntryEditSection (IntPtr javaReference, JniHandleOwnership transfer)
|
||||
: base(javaReference, transfer)
|
||||
{
|
||||
@ -62,6 +64,9 @@ namespace keepass2android.view
|
||||
|
||||
CheckBox cb = (CheckBox) FindViewById(Resource.Id.protection);
|
||||
cb.Checked = value.IsProtected;
|
||||
cb.CheckedChange += (sender, e) => {if (ContentChanged != null)
|
||||
ContentChanged(this, new EventArgs());
|
||||
};
|
||||
}
|
||||
|
||||
public ImageButton getDeleteButton()
|
||||
@ -73,8 +78,12 @@ namespace keepass2android.view
|
||||
{
|
||||
if (str != null)
|
||||
{
|
||||
TextView tvTitle = (TextView)FindViewById(resId);
|
||||
tvTitle.Text = str;
|
||||
TextView tv = (TextView)FindViewById(resId);
|
||||
tv.Text = str;
|
||||
tv.TextChanged += (sender, e) => {
|
||||
if (ContentChanged != null)
|
||||
ContentChanged(this, new EventArgs());
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user