From 3a1284b0635257df99840614c153e23ff3d99e80 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Fri, 4 May 2012 00:28:52 +0200 Subject: Get vpn list working again, not yet perfect but at least delete works http://code.google.com/p/android/issues/detail?id=3414 is hunting me :( --- src/de/blinkt/openvpn/LaunchVPN.java | 6 ++---- src/de/blinkt/openvpn/ProfileManager.java | 31 +++++++++++++++++++++-------- src/de/blinkt/openvpn/Settings_Obscure.java | 4 ++++ src/de/blinkt/openvpn/VPNProfileList.java | 27 ++++++++++++++++--------- 4 files changed, 47 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/de/blinkt/openvpn/LaunchVPN.java b/src/de/blinkt/openvpn/LaunchVPN.java index 7a034e4..e0832f2 100644 --- a/src/de/blinkt/openvpn/LaunchVPN.java +++ b/src/de/blinkt/openvpn/LaunchVPN.java @@ -80,10 +80,8 @@ public class LaunchVPN extends ListActivity implements OnItemClickListener { final Intent intent = getIntent(); final String action = intent.getAction(); - mPM =ProfileManager.getInstance(); - if(mPM.getNumberOfProfiles() == 0) { - mPM.loadVPNList(this); - } + mPM =ProfileManager.getInstance(this); + // If the intent is a request to create a shortcut, we'll do that and exit diff --git a/src/de/blinkt/openvpn/ProfileManager.java b/src/de/blinkt/openvpn/ProfileManager.java index 9e5b160..f819300 100644 --- a/src/de/blinkt/openvpn/ProfileManager.java +++ b/src/de/blinkt/openvpn/ProfileManager.java @@ -24,20 +24,25 @@ public class ProfileManager { private HashMap profiles=new HashMap(); public static VpnProfile get(String key) { - checkInstance(); + if(instance==null) + return null; return instance.profiles.get(key); } + + private ProfileManager() { } - private static void checkInstance() { - if(instance == null) + private static void checkInstance(Context context) { + if(instance == null) { instance = new ProfileManager(); + instance.loadVPNList(context); + } } - public static ProfileManager getInstance() { - checkInstance(); + public static ProfileManager getInstance(Context context) { + checkInstance(context); return instance; } @@ -56,8 +61,8 @@ public class ProfileManager { return null; } - public void saveProfileList(Activity activity) { - SharedPreferences sharedprefs = activity.getSharedPreferences(PREFS_NAME,Activity.MODE_PRIVATE); + public void saveProfileList(Context context) { + SharedPreferences sharedprefs = context.getSharedPreferences(PREFS_NAME,Activity.MODE_PRIVATE); Editor editor = sharedprefs.edit(); editor.putStringSet("vpnlist", profiles.keySet()); editor.commit(); @@ -89,7 +94,7 @@ public class ProfileManager { } - void loadVPNList(Context context) { + private void loadVPNList(Context context) { profiles = new HashMap(); SharedPreferences settings =context.getSharedPreferences(PREFS_NAME,Activity.MODE_PRIVATE); Set vlist = settings.getStringSet("vpnlist", null); @@ -120,4 +125,14 @@ public class ProfileManager { return profiles.size(); } + + + public void removeProfile(Context context,VpnProfile profile) { + String vpnentry = profile.getUUID().toString(); + profiles.remove(vpnentry); + saveProfileList(context); + context.deleteFile(vpnentry + ".vp"); + + } + } diff --git a/src/de/blinkt/openvpn/Settings_Obscure.java b/src/de/blinkt/openvpn/Settings_Obscure.java index 65d1c40..91c6170 100644 --- a/src/de/blinkt/openvpn/Settings_Obscure.java +++ b/src/de/blinkt/openvpn/Settings_Obscure.java @@ -67,6 +67,10 @@ public class Settings_Obscure extends PreferenceFragment implements OnPreference @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if(preference==mLogverbosity) { + // Catch old version problem + if(newValue==null){ + newValue=1; + } mLogverbosity.setDefaultValue(newValue); //This is idiotic. int i =Integer.parseInt((String) newValue); diff --git a/src/de/blinkt/openvpn/VPNProfileList.java b/src/de/blinkt/openvpn/VPNProfileList.java index c9ff980..56cc7ae 100644 --- a/src/de/blinkt/openvpn/VPNProfileList.java +++ b/src/de/blinkt/openvpn/VPNProfileList.java @@ -21,11 +21,22 @@ import android.widget.ListView; import android.widget.Toast; public class VPNProfileList extends ListFragment { + class VPNArrayAdapter extends ArrayAdapter { + + public VPNArrayAdapter(Context context, int resource, + int textViewResourceId) { + super(context, resource, textViewResourceId); + + } + + } + + + private static final int MENU_ADD_PROFILE = Menu.FIRST; private static final int START_VPN_CONFIG = 92; - private ArrayAdapter mArrayadapter; protected Object mActionMode; @@ -78,12 +89,10 @@ public class VPNProfileList extends ListFragment { }); - if(getPM().getNumberOfProfiles() == 0) { - getPM().loadVPNList(getActivity()); - } - +// mArrayadapter = new ArrayAdapter(getActivity(),R.layout.vpn_list_item,R.id.vpn_item_title); mArrayadapter = new ArrayAdapter(getActivity(),android.R.layout.simple_list_item_activated_1); mArrayadapter.addAll(getPM().getProfiles()); + setListAdapter(mArrayadapter); } @@ -127,7 +136,7 @@ public class VPNProfileList extends ListFragment { protected void removeProfile(VpnProfile profile) { mArrayadapter.remove(profile); - + getPM().removeProfile(getActivity(),profile); } private void onAddProfileClicked() { @@ -181,7 +190,7 @@ public class VPNProfileList extends ListFragment { private ProfileManager getPM() { - return ProfileManager.getInstance(); + return ProfileManager.getInstance(getActivity()); } @@ -240,10 +249,10 @@ public class VPNProfileList extends ListFragment { askProfileRemoval(); mode.finish(); // Action picked, so close the CAB return true; - case R.id.connect_vpn: +/* case R.id.connect_vpn: startVPN(mEditProfile); mode.finish(); - return true; + return true; */ case R.id.edit_vpn: editVPN(mEditProfile); mode.finish(); -- cgit v1.2.3