From 32f94827dd09cad50054be72f044d180b832c8aa Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Sun, 30 Sep 2012 23:23:35 +0200 Subject: Fix deleting a VPN profile from a preference fragment on mobile phones. (closes issue #94) --HG-- extra : rebase_source : 6016a2c7cfddd15676305efd4e8fab0acee4b4cf --- src/de/blinkt/openvpn/VPNPreferences.java | 57 +++++++++++++++++++++++-------- src/de/blinkt/openvpn/VpnProfile.java | 2 ++ 2 files changed, 45 insertions(+), 14 deletions(-) (limited to 'src/de') diff --git a/src/de/blinkt/openvpn/VPNPreferences.java b/src/de/blinkt/openvpn/VPNPreferences.java index 4bb89b61..549afa23 100644 --- a/src/de/blinkt/openvpn/VPNPreferences.java +++ b/src/de/blinkt/openvpn/VPNPreferences.java @@ -4,6 +4,7 @@ import java.util.List; import android.app.AlertDialog; import android.content.DialogInterface; +import android.content.Intent; import android.os.Bundle; import android.preference.PreferenceActivity; import android.view.Menu; @@ -17,25 +18,52 @@ public class VPNPreferences extends PreferenceActivity { public VPNPreferences() { super(); - + } - - + + @Override protected void onStop() { super.onStop(); }; - + @Override protected void onSaveInstanceState(Bundle outState) { outState.putString(getIntent().getStringExtra(getPackageName() + ".profileUUID"),mProfileUUID); super.onSaveInstanceState(outState); } - - - + + @Override + protected void onResume() { + super.onResume(); + Intent intent = getIntent(); + + + if(intent!=null) { + String profileUUID = intent.getStringExtra(getPackageName() + ".profileUUID"); + if(profileUUID==null) { + Bundle initialArguments = getIntent().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS); + profileUUID = initialArguments.getString(getPackageName() + ".profileUUID"); + } + if(profileUUID!=null){ + + mProfileUUID = profileUUID; + mProfile = ProfileManager.get(this,mProfileUUID); + + } + } + // When a profile is deleted from a category fragment in hadset mod we need to finish + // this activity as well when returning + if (mProfile==null || mProfile.profileDleted) { + setResult(VPNProfileList.RESULT_VPN_DELETED); + finish(); + } + + + } + @Override protected void onCreate(Bundle savedInstanceState) { mProfileUUID = getIntent().getStringExtra(getPackageName() + ".profileUUID"); @@ -44,15 +72,15 @@ public class VPNPreferences extends PreferenceActivity { if(savedUUID!=null) mProfileUUID=savedUUID; } - + mProfile = ProfileManager.get(this,mProfileUUID); if(mProfile!=null) { setTitle(getString(R.string.edit_profile_title, mProfile.getName())); } super.onCreate(savedInstanceState); } - - + + @Override public void onBuildHeaders(List
target) { loadHeadersFromResource(R.xml.vpn_headers, target); @@ -62,7 +90,7 @@ public class VPNPreferences extends PreferenceActivity { header.fragmentArguments.putString(getPackageName() + ".profileUUID",mProfileUUID); } } - + @Override public void onBackPressed() { setResult(RESULT_OK, getIntent()); @@ -75,7 +103,7 @@ public class VPNPreferences extends PreferenceActivity { askProfileRemoval(); return super.onOptionsItemSelected(item); } - + @Override public boolean onCreateOptionsMenu(Menu menu) { @@ -83,7 +111,7 @@ public class VPNPreferences extends PreferenceActivity { return super.onCreateOptionsMenu(menu); } - + private void askProfileRemoval() { AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setTitle("Confirm deletion"); @@ -100,11 +128,12 @@ public class VPNPreferences extends PreferenceActivity { dialog.setNegativeButton(android.R.string.no,null); dialog.create().show(); } - + protected void removeProfile(VpnProfile profile) { ProfileManager.getInstance(this).removeProfile(this,profile); setResult(VPNProfileList.RESULT_VPN_DELETED); finish(); + } } diff --git a/src/de/blinkt/openvpn/VpnProfile.java b/src/de/blinkt/openvpn/VpnProfile.java index 4ac138da..392202b4 100644 --- a/src/de/blinkt/openvpn/VpnProfile.java +++ b/src/de/blinkt/openvpn/VpnProfile.java @@ -52,6 +52,8 @@ public class VpnProfile implements Serializable{ protected transient String mTransientPW=null; protected transient String mTransientPCKS12PW=null; private transient PrivateKey mPrivateKey; + protected boolean profileDleted=false; + public static String DEFAULT_DNS1="131.234.137.23"; public static String DEFAULT_DNS2="131.234.137.24"; -- cgit v1.2.3