am 3753def3
: Merge "Allow OnCancelListener and OnDismissListener in Settings app" into honeycomb
* commit '3753def39da8a4c63ffa787f2572defbc189d7c5': Allow OnCancelListener and OnDismissListener in Settings app
This commit is contained in:
@@ -21,6 +21,7 @@ import android.app.Dialog;
|
||||
import android.app.DialogFragment;
|
||||
import android.app.Fragment;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
@@ -111,6 +112,28 @@ public class SettingsPreferenceFragment extends PreferenceFragment
|
||||
mDialogFragment = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the OnCancelListener of the dialog shown. This method can only be
|
||||
* called after showDialog(int) and before removeDialog(int). The method
|
||||
* does nothing otherwise.
|
||||
*/
|
||||
protected void setOnCancelListener(DialogInterface.OnCancelListener listener) {
|
||||
if (mDialogFragment != null) {
|
||||
mDialogFragment.mOnCancelListener = listener;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the OnDismissListener of the dialog shown. This method can only be
|
||||
* called after showDialog(int) and before removeDialog(int). The method
|
||||
* does nothing otherwise.
|
||||
*/
|
||||
protected void setOnDismissListener(DialogInterface.OnDismissListener listener) {
|
||||
if (mDialogFragment != null) {
|
||||
mDialogFragment.mOnDismissListener = listener;
|
||||
}
|
||||
}
|
||||
|
||||
public static class SettingsDialogFragment extends DialogFragment {
|
||||
private static final String KEY_DIALOG_ID = "key_dialog_id";
|
||||
private static final String KEY_PARENT_FRAGMENT_ID = "key_parent_fragment_id";
|
||||
@@ -119,6 +142,9 @@ public class SettingsPreferenceFragment extends PreferenceFragment
|
||||
|
||||
private Fragment mParentFragment;
|
||||
|
||||
private DialogInterface.OnCancelListener mOnCancelListener;
|
||||
private DialogInterface.OnDismissListener mOnDismissListener;
|
||||
|
||||
public SettingsDialogFragment() {
|
||||
/* do nothing */
|
||||
}
|
||||
@@ -163,6 +189,21 @@ public class SettingsPreferenceFragment extends PreferenceFragment
|
||||
return ((DialogCreatable) mParentFragment).onCreateDialog(mDialogId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancel(DialogInterface dialog) {
|
||||
super.onCancel(dialog);
|
||||
if (mOnCancelListener != null) {
|
||||
mOnCancelListener.onCancel(dialog);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDismiss(DialogInterface dialog) {
|
||||
super.onDismiss(dialog);
|
||||
if (mOnDismissListener != null) {
|
||||
mOnDismissListener.onDismiss(dialog);
|
||||
}
|
||||
}
|
||||
public int getDialogId() {
|
||||
return mDialogId;
|
||||
}
|
||||
|
@@ -311,19 +311,29 @@ public class Memory extends SettingsPreferenceFragment implements OnCancelListen
|
||||
}})
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.setMessage(R.string.dlg_confirm_unmount_text)
|
||||
.setOnCancelListener(this)
|
||||
.create();
|
||||
case DLG_ERROR_UNMOUNT:
|
||||
return new AlertDialog.Builder(getActivity())
|
||||
.setTitle(R.string.dlg_error_unmount_title)
|
||||
.setNeutralButton(R.string.dlg_ok, null)
|
||||
.setMessage(R.string.dlg_error_unmount_text)
|
||||
.setOnCancelListener(this)
|
||||
.create();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void showDialog(int id) {
|
||||
super.showDialog(id);
|
||||
|
||||
switch (id) {
|
||||
case DLG_CONFIRM_UNMOUNT:
|
||||
case DLG_ERROR_UNMOUNT:
|
||||
setOnCancelListener(this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void doUnmount(boolean force) {
|
||||
// Present a toast here
|
||||
Toast.makeText(getActivity(), R.string.unmount_inform_text, Toast.LENGTH_SHORT).show();
|
||||
|
@@ -238,6 +238,17 @@ public class VpnSettings extends SettingsPreferenceFragment
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void showDialog(int dialogId) {
|
||||
super.showDialog(dialogId);
|
||||
|
||||
setOnCancelListener(new DialogInterface.OnCancelListener() {
|
||||
public void onCancel(DialogInterface dialog) {
|
||||
onIdle();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dialog onCreateDialog (int id) {
|
||||
switch (id) {
|
||||
@@ -267,27 +278,17 @@ public class VpnSettings extends SettingsPreferenceFragment
|
||||
}
|
||||
}
|
||||
|
||||
private class ConnectDialog extends AlertDialog {
|
||||
public ConnectDialog(Context context) {
|
||||
super(context);
|
||||
setTitle(String.format(getString(R.string.vpn_connect_to),
|
||||
mConnectingActor.getProfile().getName()));
|
||||
setButton(DialogInterface.BUTTON_POSITIVE,
|
||||
getString(R.string.vpn_connect_button),
|
||||
VpnSettings.this);
|
||||
setButton(DialogInterface.BUTTON_NEGATIVE,
|
||||
getString(android.R.string.cancel),
|
||||
VpnSettings.this);
|
||||
setView(mConnectingActor.createConnectView());
|
||||
}
|
||||
public void onBackPressed() {
|
||||
changeState(mActiveProfile, VpnState.IDLE);
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
private Dialog createConnectDialog() {
|
||||
return new ConnectDialog(getActivity());
|
||||
final Activity activity = getActivity();
|
||||
return new AlertDialog.Builder(activity)
|
||||
.setView(mConnectingActor.createConnectView())
|
||||
.setTitle(String.format(activity.getString(R.string.vpn_connect_to),
|
||||
mConnectingActor.getProfile().getName()))
|
||||
.setPositiveButton(activity.getString(R.string.vpn_connect_button),
|
||||
this)
|
||||
.setNegativeButton(activity.getString(android.R.string.cancel),
|
||||
this)
|
||||
.create();
|
||||
}
|
||||
|
||||
private Dialog createReconnectDialog(int id) {
|
||||
@@ -375,11 +376,6 @@ public class VpnSettings extends SettingsPreferenceFragment
|
||||
public void onClick(DialogInterface dialog, int w) {
|
||||
onIdle();
|
||||
}
|
||||
})
|
||||
.setOnCancelListener(new DialogInterface.OnCancelListener() {
|
||||
public void onCancel(DialogInterface dialog) {
|
||||
onIdle();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user