Fix for 1785342: The old PIN is required after entering New PIN

State of dialogs was not properly maintained across pause/resume.
diff --git a/src/com/android/settings/EditPinPreference.java b/src/com/android/settings/EditPinPreference.java
index ee3143c..362bed1 100644
--- a/src/com/android/settings/EditPinPreference.java
+++ b/src/com/android/settings/EditPinPreference.java
@@ -16,6 +16,7 @@
 
 package com.android.settings;
 
+import android.app.Dialog;
 import android.content.Context;
 import android.preference.EditTextPreference;
 import android.text.method.DigitsKeyListener;
@@ -24,15 +25,11 @@
 import android.view.View;
 import android.widget.EditText;
 
-import java.util.Map;
-
 /**
  * TODO: Add a soft dialpad for PIN entry.
  */
 class EditPinPreference extends EditTextPreference {
 
-    private boolean mDialogOpen;
-    
     interface OnPinEnteredListener {
         void onPinEntered(EditPinPreference preference, boolean positiveResult);
     }
@@ -50,13 +47,13 @@
     public void setOnPinEnteredListener(OnPinEnteredListener listener) {
         mPinListener = listener;
     }
-    
+
     @Override
     protected void onBindDialogView(View view) {
         super.onBindDialogView(view);
-        
+
         final EditText editText = (EditText) view.findViewById(android.R.id.edit);
-        
+
         if (editText != null) {
             editText.setSingleLine(true);
             editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
@@ -65,20 +62,22 @@
     }
 
     public boolean isDialogOpen() {
-        return mDialogOpen;
+        Dialog dialog = getDialog();
+        return dialog != null && dialog.isShowing();
     }
-    
+
     @Override
     protected void onDialogClosed(boolean positiveResult) {
         super.onDialogClosed(positiveResult);
-        mDialogOpen = false;
         if (mPinListener != null) {
             mPinListener.onPinEntered(this, positiveResult);
         }
     }
-    
+
     public void showPinDialog() {
-        mDialogOpen = true;
-        showDialog(null);
+        Dialog dialog = getDialog();
+        if (dialog == null || !dialog.isShowing()) {
+            showDialog(null);
+        }
     }
 }