From b1e450864849436c7c7708ceca5c8f4142492c68 Mon Sep 17 00:00:00 2001 From: Brandon Maxwell Date: Tue, 15 Mar 2016 15:17:20 -0700 Subject: Keeping migration dialog up while migration in progress + This CL ensures that while the migration work is in progress, the MigrateDialogFragment remains visible, with its buttons greyed out. Bug: 26664600 Change-Id: Ied32d05fac46b700f14aee06d383fd2db2fa7913 --- .../filterednumber/BlockedNumbersMigrator.java | 1 - .../MigrateBlockedNumbersDialogFragment.java | 41 +++++++++++++++++----- 2 files changed, 33 insertions(+), 9 deletions(-) (limited to 'src/com') diff --git a/src/com/android/dialer/filterednumber/BlockedNumbersMigrator.java b/src/com/android/dialer/filterednumber/BlockedNumbersMigrator.java index de201d98a..555e647bc 100644 --- a/src/com/android/dialer/filterednumber/BlockedNumbersMigrator.java +++ b/src/com/android/dialer/filterednumber/BlockedNumbersMigrator.java @@ -22,7 +22,6 @@ import android.content.ContentResolver; import android.content.ContentValues; import android.database.Cursor; import android.os.AsyncTask; -import android.support.annotation.Nullable; import com.android.dialer.compat.BlockedNumbersSdkCompat; import com.android.dialer.compat.FilteredNumberCompat; diff --git a/src/com/android/dialer/filterednumber/MigrateBlockedNumbersDialogFragment.java b/src/com/android/dialer/filterednumber/MigrateBlockedNumbersDialogFragment.java index efcb50591..f29796125 100644 --- a/src/com/android/dialer/filterednumber/MigrateBlockedNumbersDialogFragment.java +++ b/src/com/android/dialer/filterednumber/MigrateBlockedNumbersDialogFragment.java @@ -22,10 +22,12 @@ import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.content.DialogInterface; -import android.content.DialogInterface.OnClickListener; +import android.content.DialogInterface.OnShowListener; import android.os.Bundle; +import android.view.View; import com.android.dialer.R; +import com.android.dialer.filterednumber.BlockedNumbersMigrator.Listener; /** * Dialog fragment shown to users when they need to migrate to use @@ -57,20 +59,43 @@ public class MigrateBlockedNumbersDialogFragment extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { super.onCreateDialog(savedInstanceState); - return new AlertDialog.Builder(getActivity()) + AlertDialog dialog = new AlertDialog.Builder(getActivity()) .setTitle(R.string.migrate_blocked_numbers_dialog_title) .setMessage(R.string.migrate_blocked_numbers_dialog_message) - .setPositiveButton(R.string.migrate_blocked_numbers_dialog_allow_button, - newPositiveButtonOnClickListener()) + .setPositiveButton(R.string.migrate_blocked_numbers_dialog_allow_button, null) .setNegativeButton(R.string.migrate_blocked_numbers_dialog_cancel_button, null) .create(); + // The Dialog's buttons aren't available until show is called, so an OnShowListener + // is used to set the positive button callback. + dialog.setOnShowListener(new OnShowListener() { + @Override + public void onShow(DialogInterface dialog) { + final AlertDialog alertDialog = (AlertDialog) dialog; + alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) + .setOnClickListener(newPositiveButtonOnClickListener(alertDialog)); + } + }); + return dialog; } - private DialogInterface.OnClickListener newPositiveButtonOnClickListener() { - return new OnClickListener() { + /* + * Creates a new View.OnClickListener to be used as the positive button in this dialog. The + * OnClickListener will grey out the dialog's positive and negative buttons while the migration + * is underway, and close the dialog once the migrate is complete. + */ + private View.OnClickListener newPositiveButtonOnClickListener(final AlertDialog alertDialog) { + return new View.OnClickListener() { @Override - public void onClick(DialogInterface dialog, int which) { - mBlockedNumbersMigrator.migrate(mMigrationListener); + public void onClick(View v) { + alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); + alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false); + mBlockedNumbersMigrator.migrate(new Listener() { + @Override + public void onComplete() { + alertDialog.dismiss(); + mMigrationListener.onComplete(); + } + }); } }; } -- cgit v1.2.3