diff options
Diffstat (limited to 'src/de/blinkt/openvpn/VPNPreferences.java')
-rw-r--r-- | src/de/blinkt/openvpn/VPNPreferences.java | 193 |
1 files changed, 73 insertions, 120 deletions
diff --git a/src/de/blinkt/openvpn/VPNPreferences.java b/src/de/blinkt/openvpn/VPNPreferences.java index 27731453..75788d74 100644 --- a/src/de/blinkt/openvpn/VPNPreferences.java +++ b/src/de/blinkt/openvpn/VPNPreferences.java @@ -1,151 +1,104 @@ package de.blinkt.openvpn; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.ObjectOutputStream; import java.util.List; +import android.app.Activity; +import android.content.Intent; import android.os.Bundle; -import android.preference.CheckBoxPreference; -import android.preference.EditTextPreference; -import android.preference.Preference; -import android.preference.Preference.OnPreferenceChangeListener; import android.preference.PreferenceActivity; -import android.preference.PreferenceFragment; -import android.preference.PreferenceManager; -import android.preference.SwitchPreference; import android.widget.Button; public class VPNPreferences extends PreferenceActivity { private VpnProfile mProfile; + private BasicSettings mBS; + public void setmBS(BasicSettings mBS) { + this.mBS = mBS; + } + public VPNPreferences() { super(); + + } + + + protected void onPause() { + super.onPause(); + saveSettings(); + + } + + + @Override + protected void onStop() { + super.onStop(); + }; + + + private void saveSettings() { + // First let basic settings save its state + if(mBS!=null) + mBS.savePreferences(); + + ObjectOutputStream vpnfile; + try { + vpnfile = new ObjectOutputStream(openFileOutput((mProfile.getUUID().toString() + ".vp"),Activity.MODE_PRIVATE)); + + vpnfile.writeObject(mProfile); + vpnfile.flush(); + vpnfile.close(); + } catch (FileNotFoundException e) { + + e.printStackTrace(); + } catch (IOException e) { + + e.printStackTrace(); + } + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putSerializable(getPackageName() + ".VpnProfile",mProfile); } + + @Override + protected void onRestoreInstanceState(Bundle state) { + super.onRestoreInstanceState(state); + mProfile = (VpnProfile) state.getSerializable(getPackageName() + ".VpnProfile"); + } + + @Override protected void onCreate(Bundle savedInstanceState) { + mProfile = (VpnProfile) getIntent().getSerializableExtra(getPackageName() + ".VpnProfile"); super.onCreate(savedInstanceState); - mProfile = getIntent().getParcelableExtra("VpnProfile"); + if (hasHeaders()) { Button button = new Button(this); - button.setText("Some action"); + button.setText("Save"); setListFooter(button); } } + + @Override public void onBuildHeaders(List<Header> target) { - loadHeadersFromResource(R.xml.vpn_headers, target); - } - - public static class IP_Settings extends PreferenceFragment implements OnPreferenceChangeListener { - private EditTextPreference mIPv4; - private EditTextPreference mIPv6; - private SwitchPreference mUsePull; - private CheckBoxPreference mOverrideDNS; - private Preference mSearchdomain; - private Preference mDNS1; - private Preference mDNS2; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - - // Make sure default values are applied. In a real app, you would - // want this in a shared function that is used to retrieve the - // SharedPreferences wherever they are needed. - PreferenceManager.setDefaultValues(getActivity(), - R.xml.vpn_ipsettings, false); - - // Load the preferences from an XML resource - addPreferencesFromResource(R.xml.vpn_ipsettings); - mIPv4 = (EditTextPreference) findPreference("ipv4_address"); - mIPv6 = (EditTextPreference) findPreference("ipv6_address"); - mUsePull = (SwitchPreference) findPreference("usePull"); - mOverrideDNS = (CheckBoxPreference) findPreference("overrideDNS"); - mSearchdomain =findPreference("searchdomain"); - mDNS1 = findPreference("dns1"); - mDNS2 = findPreference("dns2"); - - mIPv4.setOnPreferenceChangeListener(this); - mIPv6.setOnPreferenceChangeListener(this); - mDNS1.setOnPreferenceChangeListener(this); - mDNS2.setOnPreferenceChangeListener(this); - mUsePull.setOnPreferenceChangeListener(this); - mOverrideDNS.setOnPreferenceChangeListener(this); - - - VpnProfile vp = ((VPNPreferences) getActivity()).getVPNProfile(); - - - setDNSState(); - - + loadHeadersFromResource(R.xml.vpn_headers, target); + for (Header header : target) { + if(header.fragmentArguments==null) + header.fragmentArguments = new Bundle(); + header.fragmentArguments.putString(getPackageName() + ".profileUUID",mProfile.getUUID().toString()); + if(header.extras==null) + header.extras = new Bundle(); + header.extras.putString(getPackageName() + ".profileUUID",mProfile.getUUID().toString()); } - - @Override - public boolean onPreferenceChange(Preference preference, - Object newValue) { - if(preference==mIPv4 || preference == mIPv6 || - preference==mDNS1 || preference == mDNS2) - preference.setSummary((String)newValue); - - if(preference== mUsePull || preference == mOverrideDNS) - setDNSState(); - - return true; - } - - private void setDNSState() { - boolean enabled; - mOverrideDNS.setEnabled(mUsePull.isChecked()); - if(!mUsePull.isChecked()) - enabled =true; - else if (mOverrideDNS.isChecked()) - enabled = true; - else - enabled = false; - - mDNS1.setEnabled(enabled); - mDNS2.setEnabled(enabled); - mSearchdomain.setEnabled(enabled); - - } - - - } - public static class Authentication extends PreferenceFragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - // Make sure default values are applied. In a real app, you would - // want this in a shared function that is used to retrieve the - // SharedPreferences wherever they are needed. - PreferenceManager.setDefaultValues(getActivity(), - R.xml.vpn_authentification, false); - - // Load the preferences from an XML resource - addPreferencesFromResource(R.xml.vpn_authentification); - } - } - public static class Obscure extends PreferenceFragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - // Make sure default values are applied. In a real app, you would - // want this in a shared function that is used to retrieve the - // SharedPreferences wherever they are needed. - PreferenceManager.setDefaultValues(getActivity(), - R.xml.vpn_ipsettings, false); - - // Load the preferences from an XML resource - addPreferencesFromResource(R.xml.vpn_obscure); - } - } - public VpnProfile getVPNProfile() { - return mProfile; } } |