summaryrefslogtreecommitdiff
path: root/src/de/blinkt/openvpn
diff options
context:
space:
mode:
authorArne Schwabe <arne@rfc2549.org>2012-05-04 00:28:52 +0200
committerArne Schwabe <arne@rfc2549.org>2012-05-04 00:28:52 +0200
commit3a1284b0635257df99840614c153e23ff3d99e80 (patch)
tree119750363771382ea684ed0f8cff6ac7c767ca1b /src/de/blinkt/openvpn
parent815eb143e98b57b6cd1f43c7c3007416ed4b1a91 (diff)
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 :(
Diffstat (limited to 'src/de/blinkt/openvpn')
-rw-r--r--src/de/blinkt/openvpn/LaunchVPN.java6
-rw-r--r--src/de/blinkt/openvpn/ProfileManager.java31
-rw-r--r--src/de/blinkt/openvpn/Settings_Obscure.java4
-rw-r--r--src/de/blinkt/openvpn/VPNProfileList.java27
4 files changed, 47 insertions, 21 deletions
diff --git a/src/de/blinkt/openvpn/LaunchVPN.java b/src/de/blinkt/openvpn/LaunchVPN.java
index 7a034e4c..e0832f21 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 9e5b1602..f8193003 100644
--- a/src/de/blinkt/openvpn/ProfileManager.java
+++ b/src/de/blinkt/openvpn/ProfileManager.java
@@ -24,20 +24,25 @@ public class ProfileManager {
private HashMap<String,VpnProfile> profiles=new HashMap<String, VpnProfile>();
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<String, VpnProfile>();
SharedPreferences settings =context.getSharedPreferences(PREFS_NAME,Activity.MODE_PRIVATE);
Set<String> 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 65d1c400..91c6170b 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 c9ff9805..56cc7ae1 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<VpnProfile> {
+
+ 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<VpnProfile> mArrayadapter;
protected Object mActionMode;
@@ -78,12 +89,10 @@ public class VPNProfileList extends ListFragment {
});
- if(getPM().getNumberOfProfiles() == 0) {
- getPM().loadVPNList(getActivity());
- }
-
+// mArrayadapter = new ArrayAdapter<VpnProfile>(getActivity(),R.layout.vpn_list_item,R.id.vpn_item_title);
mArrayadapter = new ArrayAdapter<VpnProfile>(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();