Merge "Added AsyncTask to report dialog/fixed rot (2/2)." into lmp-dev
diff --git a/src/com/android/dialer/calllog/CallLogFragment.java b/src/com/android/dialer/calllog/CallLogFragment.java
index 8523705..5d09e74 100644
--- a/src/com/android/dialer/calllog/CallLogFragment.java
+++ b/src/com/android/dialer/calllog/CallLogFragment.java
@@ -71,6 +71,10 @@
         CallLogAdapter.CallItemExpandedListener {
     private static final String TAG = "CallLogFragment";
 
+    private static final String REPORT_DIALOG_TAG = "report_dialog";
+    private String mReportDialogNumber;
+    private boolean mIsReportDialogShowing;
+
     /**
      * ID of the empty loader to defer other fragments.
      */
@@ -80,6 +84,8 @@
     private static final String KEY_LOG_LIMIT = "log_limit";
     private static final String KEY_DATE_LIMIT = "date_limit";
     private static final String KEY_SHOW_FOOTER = "show_footer";
+    private static final String KEY_IS_REPORT_DIALOG_SHOWING = "is_report_dialog_showing";
+    private static final String KEY_REPORT_DIALOG_NUMBER = "report_dialog_number";
 
     private CallLogAdapter mAdapter;
     private CallLogQueryHandler mCallLogQueryHandler;
@@ -184,6 +190,9 @@
             mLogLimit = state.getInt(KEY_LOG_LIMIT, mLogLimit);
             mDateLimit = state.getLong(KEY_DATE_LIMIT, mDateLimit);
             mHasFooterView = state.getBoolean(KEY_SHOW_FOOTER, mHasFooterView);
+            mIsReportDialogShowing = state.getBoolean(KEY_IS_REPORT_DIALOG_SHOWING,
+                    mIsReportDialogShowing);
+            mReportDialogNumber = state.getString(KEY_REPORT_DIALOG_NUMBER, mReportDialogNumber);
         }
 
         String currentCountryIso = GeoUtil.getCurrentCountryIso(getActivity());
@@ -210,6 +219,14 @@
         mFadeOutDuration = getResources().getInteger(R.integer.call_log_actions_fade_out_duration);
         mExpandCollapseDuration = getResources().getInteger(
                 R.integer.call_log_expand_collapse_duration);
+
+        if (mIsReportDialogShowing) {
+            DialogFragment df = ObjectFactory.getReportDialogFragment(mReportDialogNumber);
+            if (df != null) {
+                df.setTargetFragment(this, 0);
+                df.show(getActivity().getFragmentManager(), REPORT_DIALOG_TAG);
+            }
+        }
     }
 
     /** Called by the CallLogQueryHandler when the list of calls has been fetched or updated. */
@@ -396,6 +413,8 @@
         outState.putInt(KEY_LOG_LIMIT, mLogLimit);
         outState.putLong(KEY_DATE_LIMIT, mDateLimit);
         outState.putBoolean(KEY_SHOW_FOOTER, mHasFooterView);
+        outState.putBoolean(KEY_IS_REPORT_DIALOG_SHOWING, mIsReportDialogShowing);
+        outState.putString(KEY_REPORT_DIALOG_NUMBER, mReportDialogNumber);
     }
 
     @Override
@@ -668,6 +687,10 @@
     }
 
     public void onBadDataReported(String number) {
+        mIsReportDialogShowing = false;
+        if (number == null) {
+            return;
+        }
         mAdapter.onBadDataReported(number);
         mAdapter.notifyDataSetChanged();
     }
@@ -676,7 +699,9 @@
         DialogFragment df = ObjectFactory.getReportDialogFragment(number);
         if (df != null) {
             df.setTargetFragment(this, 0);
-            df.show(getActivity().getFragmentManager(), "report_dialog");
+            df.show(getActivity().getFragmentManager(), REPORT_DIALOG_TAG);
+            mReportDialogNumber = number;
+            mIsReportDialogShowing = true;
         }
     }
 }