summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/settings/SettingsPreferenceFragment.java12
-rw-r--r--src/com/android/settings/vpn/VpnSettings.java77
2 files changed, 46 insertions, 43 deletions
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 77f703c..17bf02d 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -182,6 +182,8 @@ public class SettingsPreferenceFragment extends PreferenceFragment
+ DialogCreatable.class.getName());
}
}
+ // restore mDialogFragment in mParentFragment
+ ((SettingsPreferenceFragment) mParentFragment).mDialogFragment = this;
}
return ((DialogCreatable) mParentFragment).onCreateDialog(mDialogId);
}
@@ -204,6 +206,16 @@ public class SettingsPreferenceFragment extends PreferenceFragment
public int getDialogId() {
return mDialogId;
}
+
+ @Override
+ public void onDetach() {
+ super.onDetach();
+
+ // in case the dialog is not explicitly removed by removeDialog()
+ if (((SettingsPreferenceFragment) mParentFragment).mDialogFragment == this) {
+ ((SettingsPreferenceFragment) mParentFragment).mDialogFragment = null;
+ }
+ }
}
protected boolean hasNextButton() {
diff --git a/src/com/android/settings/vpn/VpnSettings.java b/src/com/android/settings/vpn/VpnSettings.java
index 318a5bf..539a51e 100644
--- a/src/com/android/settings/vpn/VpnSettings.java
+++ b/src/com/android/settings/vpn/VpnSettings.java
@@ -86,6 +86,7 @@ public class VpnSettings extends SettingsPreferenceFragment
private static final String KEY_ACTIVE_PROFILE = "ActiveProfile";
private static final String KEY_PROFILE_CONNECTING = "ProfileConnecting";
+ private static final String KEY_CONNECT_DIALOG_SHOWING = "ConnectDialogShowing";
private static final int REQUEST_ADD_OR_EDIT_PROFILE = 1;
static final int REQUEST_SELECT_VPN_TYPE = 2;
@@ -140,6 +141,23 @@ public class VpnSettings extends SettingsPreferenceFragment
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.vpn_settings);
+
+ mVpnManager = new VpnManager(getActivity());
+ // restore VpnProfile list and construct VpnPreference map
+ mVpnListContainer = (PreferenceCategory) findPreference(PREF_VPN_LIST);
+
+ // set up the "add vpn" preference
+ mAddVpn = (PreferenceScreen) findPreference(PREF_ADD_VPN);
+ mAddVpn.setOnPreferenceClickListener(
+ new OnPreferenceClickListener() {
+ public boolean onPreferenceClick(Preference preference) {
+ startVpnTypeSelection();
+ return true;
+ }
+ });
+
+ retrieveVpnListFromStorage();
+ restoreInstanceState(savedInstanceState);
}
@Override
@@ -149,6 +167,8 @@ public class VpnSettings extends SettingsPreferenceFragment
mActiveProfile.getId());
savedInstanceState.putBoolean(KEY_PROFILE_CONNECTING,
(mConnectingActor != null));
+ savedInstanceState.putBoolean(KEY_CONNECT_DIALOG_SHOWING,
+ mConnectDialogShowing);
}
super.onSaveInstanceState(savedInstanceState);
}
@@ -161,6 +181,7 @@ public class VpnSettings extends SettingsPreferenceFragment
if (savedInstanceState.getBoolean(KEY_PROFILE_CONNECTING)) {
mConnectingActor = getActor(mActiveProfile);
}
+ mConnectDialogShowing = savedInstanceState.getBoolean(KEY_CONNECT_DIALOG_SHOWING);
}
}
@@ -168,25 +189,8 @@ public class VpnSettings extends SettingsPreferenceFragment
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
- mVpnManager = new VpnManager(getActivity());
- // restore VpnProfile list and construct VpnPreference map
- mVpnListContainer = (PreferenceCategory) findPreference(PREF_VPN_LIST);
-
- // set up the "add vpn" preference
- mAddVpn = (PreferenceScreen) findPreference(PREF_ADD_VPN);
- mAddVpn.setOnPreferenceClickListener(
- new OnPreferenceClickListener() {
- public boolean onPreferenceClick(Preference preference) {
- startVpnTypeSelection();
- return true;
- }
- });
-
// for long-press gesture on a profile preference
registerForContextMenu(getListView());
-
- retrieveVpnListFromStorage();
- restoreInstanceState(savedInstanceState);
}
@Override
@@ -205,8 +209,7 @@ public class VpnSettings extends SettingsPreferenceFragment
super.onResume();
updatePreferenceMap();
- if (DEBUG)
- Log.d(TAG, "onResume");
+ if (DEBUG) Log.d(TAG, "onResume");
// listen to vpn connectivity event
mVpnManager.registerConnectivityReceiver(mConnectivityReceiver);
@@ -249,17 +252,7 @@ public class VpnSettings extends SettingsPreferenceFragment
}
@Override
- protected void showDialog(int dialogId) {
- super.showDialog(dialogId);
-
- if (dialogId == DIALOG_CONNECT) {
- mConnectDialogShowing = true;
- setOnDismissListener(new DialogInterface.OnDismissListener() {
- public void onDismiss(DialogInterface dialog) {
- mConnectDialogShowing = false;
- }
- });
- }
+ public Dialog onCreateDialog (int id) {
setOnCancelListener(new DialogInterface.OnCancelListener() {
public void onCancel(DialogInterface dialog) {
if (mActiveProfile != null) {
@@ -272,12 +265,15 @@ public class VpnSettings extends SettingsPreferenceFragment
onIdle();
}
});
- }
- @Override
- public Dialog onCreateDialog (int id) {
switch (id) {
case DIALOG_CONNECT:
+ mConnectDialogShowing = true;
+ setOnDismissListener(new DialogInterface.OnDismissListener() {
+ public void onDismiss(DialogInterface dialog) {
+ mConnectDialogShowing = false;
+ }
+ });
return createConnectDialog();
case DIALOG_SECRET_NOT_SET:
@@ -524,7 +520,6 @@ public class VpnSettings extends SettingsPreferenceFragment
String error = mConnectingActor.validateInputs(d);
if (error == null) {
mConnectingActor.connect(d);
- return;
} else {
// show error dialog
final Activity activity = getActivity();
@@ -795,7 +790,6 @@ public class VpnSettings extends SettingsPreferenceFragment
private void changeState(VpnProfile p, VpnState state) {
VpnState oldState = p.getState();
- if (oldState == state) return;
p.setState(state);
mVpnPreferenceMap.get(p.getName()).setSummary(
getProfileSummaryString(p));
@@ -808,7 +802,9 @@ public class VpnSettings extends SettingsPreferenceFragment
break;
case CONNECTING:
- mConnectingActor = getActor(p);
+ if (mConnectingActor == null) {
+ mConnectingActor = getActor(p);
+ }
// $FALL-THROUGH$
case DISCONNECTING:
mActiveProfile = p;
@@ -883,12 +879,12 @@ public class VpnSettings extends SettingsPreferenceFragment
mVpnPreferenceMap = new LinkedHashMap<String, VpnPreference>();
mVpnListContainer.removeAll();
for (VpnProfile p : sVpnProfileList) {
- addPreferenceFor(p, false);
+ addPreferenceFor(p, true);
}
// reset the mActiveProfile if the profile has been removed from the
// other instance.
if ((mActiveProfile != null)
- && mVpnPreferenceMap.containsKey(mActiveProfile.getName())) {
+ && !mVpnPreferenceMap.containsKey(mActiveProfile.getName())) {
onIdle();
}
}
@@ -924,11 +920,6 @@ public class VpnSettings extends SettingsPreferenceFragment
for (VpnProfile p : sVpnProfileList) {
changeState(p, mVpnManager.getState(p));
}
- // make preferences appear
- for (VpnProfile p : sVpnProfileList) {
- VpnPreference pref = mVpnPreferenceMap.get(p.getName());
- mVpnListContainer.addPreference(pref);
- }
}
// A sanity check. Returns true if the profile directory name and profile ID