Dialer: Rotate screen, show Speed Dialer Dialog when it exits
-Restore the dialog state, show it when rotate screen.
CRs-Fixed: 967507
Change-Id: Iaf5db4585b0a096eacdfd54036439c49ab89a86b
diff --git a/src/com/android/dialer/SpeedDialListActivity.java b/src/com/android/dialer/SpeedDialListActivity.java
index 2d6cef2..e979151 100644
--- a/src/com/android/dialer/SpeedDialListActivity.java
+++ b/src/com/android/dialer/SpeedDialListActivity.java
@@ -111,6 +111,11 @@
private static final int COLUMN_NORMALIZED = 4;
private static final int MENU_REPLACE = 1001;
private static final int MENU_DELETE = 1002;
+ private int mItemPosition;
+ private static String SPEAD_DIAL_NUMBER = "SpeedDialNumber";
+ private static String SAVE_CLICKED_POS = "Clicked_pos";
+ private String mInputNumber;
+ private boolean mConfigChanged;
private static final String PROPERTY_RADIO_ATEL_CARRIER = "persist.radio.atel.carrier";
private static final String CARRIER_ONE_DEFAULT_MCC_MNC = "405854";
@@ -177,6 +182,29 @@
}
@Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ if (mAddSpeedDialDialog == null || !mAddSpeedDialDialog.isShowing()) {
+ outState.clear();
+ return;
+ }
+ outState.putInt(SAVE_CLICKED_POS, mItemPosition);
+ outState.putString(SPEAD_DIAL_NUMBER, mEditNumber.getText().toString());
+ }
+
+ @Override
+ protected void onRestoreInstanceState(Bundle state) {
+ super.onRestoreInstanceState(state);
+ if (state.isEmpty()) {
+ return;
+ }
+ mConfigChanged = true;
+ int number = state.getInt(SAVE_CLICKED_POS, mItemPosition);
+ mInputNumber = state.getString(SPEAD_DIAL_NUMBER, "");
+ showAddSpeedDialDialog(number);
+ }
+
+ @Override
protected void onResume() {
super.onResume();
@@ -239,6 +267,7 @@
private void showAddSpeedDialDialog(final int number) {
mPickNumber = number;
+ mItemPosition = number;
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.speed_dial_settings);
View contentView = LayoutInflater.from(this).inflate(
@@ -257,6 +286,11 @@
if (null != mRecords.get(number)) {
mEditNumber.setText(SpeedDialUtils.getNumber(this, number));
}
+ if (mConfigChanged && !mInputNumber.isEmpty()) {
+ mEditNumber.setText(mInputNumber);
+ mConfigChanged = false;
+ mInputNumber = "";
+ }
Button cancelButton = (Button) contentView
.findViewById(R.id.btn_cancel);
cancelButton.setOnClickListener(new View.OnClickListener() {
@@ -333,6 +367,7 @@
Toast.LENGTH_SHORT).show();
return;
}
+ mItemPosition = number;
final Record record = mRecords.get(number);
if (record == null) {
showAddSpeedDialDialog(number);