OSDN Git Service

Add dialog to confirm last fingerprint removal
authorJorim Jaggi <jjaggi@google.com>
Thu, 30 Jul 2015 19:41:42 +0000 (12:41 -0700)
committerJorim Jaggi <jjaggi@google.com>
Thu, 30 Jul 2015 19:42:08 +0000 (12:42 -0700)
Bug: 22847296
Change-Id: Ib4984d8db0c9abc00442026360bd5617515225aa

res/values/strings.xml
src/com/android/settings/fingerprint/FingerprintSettings.java

index b8a3401..ade2cb5 100644 (file)
     <!-- Text shown when "Add fingerprint" button is disabled -->
     <string name="fingerprint_add_max">You can add up to <xliff:g id="count" example="5">%d</xliff:g> fingerprints</string>
 
+    <!-- Title shown in a dialog which asks the user to confirm when the last fingerprint gets deleted by him. [CHAR LIMIT=35]-->
+    <string name="fingerprint_last_delete_title">Remove all fingerprints?</string>
+
+    <!-- Message shown in a dialog which asks the user to confirm when the last fingerprint gets deleted by him. [CHAR LIMIT=NONE]-->
+    <string name="fingerprint_last_delete_message">You won\'t be able to use your fingerprints to unlock your phone, authorize purchases, or sign in to apps with them.</string>
+
+    <!-- Button to confirm the last removing the last fingerprint. [CHAR LIMIT=20]-->
+    <string name="fingerprint_last_delete_confirm">Yes, remove</string>
+
     <!-- Content description for the fingerprint icon when the user is prompted to enter his credentials. Not shown on the screen. [CHAR LIMIT=NONE] -->
     <string name="confirm_fingerprint_icon_content_description">Use your fingerprint to continue.</string>
 
index f065bff..d40dc50 100644 (file)
@@ -63,7 +63,6 @@ import com.android.settings.HelpUtils;
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.SubSettings;
-import com.android.settings.search.Indexable;
 
 import java.util.List;
 
@@ -569,11 +568,7 @@ public class FingerprintSettings extends SubSettings {
                                 new DialogInterface.OnClickListener() {
                                     @Override
                                     public void onClick(DialogInterface dialog, int which) {
-                                        if (DEBUG) Log.v(TAG, "Removing fpId=" + mFp.getFingerId());
-                                        FingerprintSettingsFragment parent
-                                                = (FingerprintSettingsFragment) getTargetFragment();
-                                        parent.deleteFingerPrint(mFp);
-                                        dialog.dismiss();
+                                        onDeleteClick(dialog);
                                     }
                                 })
                         .create();
@@ -599,6 +594,24 @@ public class FingerprintSettings extends SubSettings {
                 return alertDialog;
             }
 
+            private void onDeleteClick(DialogInterface dialog) {
+                if (DEBUG) Log.v(TAG, "Removing fpId=" + mFp.getFingerId());
+                FingerprintSettingsFragment parent
+                        = (FingerprintSettingsFragment) getTargetFragment();
+                if (parent.mFingerprintManager.getEnrolledFingerprints().size() > 1) {
+                    parent.deleteFingerPrint(mFp);
+                } else {
+                    ConfirmLastDeleteDialog lastDeleteDialog = new ConfirmLastDeleteDialog();
+                    Bundle args = new Bundle();
+                    args.putParcelable("fingerprint", mFp);
+                    lastDeleteDialog.setArguments(args);
+                    lastDeleteDialog.setTargetFragment(getTargetFragment(), 0);
+                    lastDeleteDialog.show(getFragmentManager(),
+                            ConfirmLastDeleteDialog.class.getName());
+                }
+                dialog.dismiss();
+            }
+
             @Override
             public void onSaveInstanceState(Bundle outState) {
                 super.onSaveInstanceState(outState);
@@ -610,6 +623,39 @@ public class FingerprintSettings extends SubSettings {
                 }
             }
         }
+
+        public static class ConfirmLastDeleteDialog extends DialogFragment {
+
+            private Fingerprint mFp;
+
+            @Override
+            public Dialog onCreateDialog(Bundle savedInstanceState) {
+                mFp = getArguments().getParcelable("fingerprint");
+                final AlertDialog alertDialog = new AlertDialog.Builder(getActivity())
+                        .setTitle(R.string.fingerprint_last_delete_title)
+                        .setMessage(R.string.fingerprint_last_delete_message)
+                        .setPositiveButton(R.string.fingerprint_last_delete_confirm,
+                                new DialogInterface.OnClickListener() {
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int which) {
+                                        FingerprintSettingsFragment parent
+                                                = (FingerprintSettingsFragment) getTargetFragment();
+                                        parent.deleteFingerPrint(mFp);
+                                        dialog.dismiss();
+                                    }
+                                })
+                        .setNegativeButton(
+                                R.string.cancel,
+                                new DialogInterface.OnClickListener() {
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int which) {
+                                        dialog.dismiss();
+                                    }
+                                })
+                        .create();
+                return alertDialog;
+            }
+        }
     }
 
     public static class FingerprintPreference extends Preference {