Fix following three issues in SD Card UX

1) Link should not work if up-events happen outside the target region
2) Activity should retain it's last state on changing configuration
3) Improve color contrast for "Format card" button

Bug: 246485658
Bug: 246681292
Bug: 246871051

Change-Id: Iebc87e35a3f8496a33a43d906b7faba05d95fe6c
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 1b69a58..ee7b1f9 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -2478,39 +2478,31 @@
         <activity android:name=".deviceinfo.StorageWizardInit"
                 android:theme="@style/GlifTheme.Light"
                 android:exported="true"
-                android:configChanges="keyboardHidden|orientation|screenSize"
                 android:permission="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
         <activity android:name=".deviceinfo.StorageWizardFormatProgress"
                 android:theme="@style/GlifTheme.Light"
-                android:exported="false"
-                android:configChanges="keyboardHidden|orientation|screenSize"/>
+                android:exported="false"/>
         <activity android:name=".deviceinfo.StorageWizardFormatSlow"
                 android:theme="@style/GlifTheme.Light"
-                android:exported="false"
-                android:configChanges="keyboardHidden|orientation|screenSize"/>
+                android:exported="false"/>
         <activity android:name=".deviceinfo.StorageWizardMigrateConfirm"
                 android:theme="@style/GlifTheme.Light"
-                android:exported="false"
-                android:configChanges="keyboardHidden|orientation|screenSize"/>
+                android:exported="false"/>
         <activity android:name=".deviceinfo.StorageWizardMigrateProgress"
                 android:theme="@style/GlifTheme.Light"
                 android:exported="true"
-                android:configChanges="keyboardHidden|orientation|screenSize"
                 android:permission="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
         <activity android:name=".deviceinfo.StorageWizardReady"
                 android:theme="@style/GlifTheme.Light"
                 android:exported="true"
-                android:configChanges="keyboardHidden|orientation|screenSize"
                 android:permission="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
 
         <activity android:name=".deviceinfo.StorageWizardMoveConfirm"
                 android:theme="@style/GlifTheme.Light"
-                android:exported="false"
-                android:configChanges="keyboardHidden|orientation|screenSize"/>
+                android:exported="false"/>
         <activity android:name=".deviceinfo.StorageWizardMoveProgress"
                 android:theme="@style/GlifTheme.Light"
                 android:exported="true"
-                android:configChanges="keyboardHidden|orientation|screenSize"
                 android:permission="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
 
         <!-- Exported for SystemUI to trigger -->
diff --git a/res/layout/storage_internal_format.xml b/res/layout/storage_internal_format.xml
index f8224c4..337d2bf 100644
--- a/res/layout/storage_internal_format.xml
+++ b/res/layout/storage_internal_format.xml
@@ -47,9 +47,8 @@
                 android:layout_height="wrap_content"
                 android:layout_gravity="center"
                 android:text="@string/storage_menu_format_button"
-                android:textColor="@android:color/white"
-                android:backgroundTint="@color/storage_wizard_button_red" />
+                android:backgroundTint="?android:attr/colorAccent" />
         </FrameLayout>
   </LinearLayout>
 
-</androidx.core.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
\ No newline at end of file
diff --git a/src/com/android/settings/deviceinfo/StorageWizardBase.java b/src/com/android/settings/deviceinfo/StorageWizardBase.java
index 801baec..c39f384 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardBase.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardBase.java
@@ -47,6 +47,7 @@
 import com.google.android.setupcompat.template.FooterButton;
 import com.google.android.setupdesign.GlifLayout;
 import com.google.android.setupdesign.util.ThemeHelper;
+import com.google.android.setupdesign.util.ThemeResolver;
 
 import java.text.NumberFormat;
 import java.util.List;
@@ -72,7 +73,15 @@
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
-        setTheme(SetupWizardUtils.getTheme(this, getIntent()));
+        boolean isDayNightThemeSupportedBySuW = ThemeHelper.isSetupWizardDayNightEnabled(this);
+        int sudTheme =
+            new ThemeResolver.Builder(ThemeResolver.getDefault())
+                .setDefaultTheme(ThemeHelper.getSuwDefaultTheme(this))
+                .setUseDayNight(true)
+                .build()
+                .resolve("", !isDayNightThemeSupportedBySuW);
+
+        this.setTheme(sudTheme);
         ThemeHelper.trySetDynamicColor(this);
         super.onCreate(savedInstanceState);
 
diff --git a/src/com/android/settings/deviceinfo/StorageWizardInit.java b/src/com/android/settings/deviceinfo/StorageWizardInit.java
index 962c65c..8d04983 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardInit.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardInit.java
@@ -25,6 +25,7 @@
 import android.text.method.LinkMovementMethod;
 import android.text.style.TypefaceSpan;
 import android.text.style.URLSpan;
+import android.view.MotionEvent;
 import android.view.View;
 import android.widget.TextView;
 import android.widget.Toast;
@@ -41,6 +42,12 @@
     private ViewFlipper mFlipper;
 
     @Override
+    public void onSaveInstanceState(Bundle savedInstanceState) {
+        savedInstanceState.putBoolean("IS_PORTABLE", mPortable);
+        super.onSaveInstanceState(savedInstanceState);
+    }
+
+    @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         if (mDisk == null) {
@@ -64,15 +71,27 @@
         mPortable = true;
 
         mFlipper = (ViewFlipper) findViewById(R.id.viewFlipper);
-        mFlipper.setDisplayedChild(0);
-        setHeaderText(R.string.storage_wizard_init_v2_external_title,
-            getDiskShortDescription());
-
-        setNextButtonText(R.string.storage_wizard_init_v2_external_action);
-        setBackButtonText(R.string.wizard_back_adoptable);
-        setNextButtonVisibility(View.VISIBLE);
-        if (!mDisk.isAdoptable()) {
-            setBackButtonVisibility(View.GONE);
+        if (savedInstanceState != null) {
+            mPortable = savedInstanceState.getBoolean("IS_PORTABLE");
+        }
+        if(mPortable) {
+            mFlipper.setDisplayedChild(0);
+            setHeaderText(R.string.storage_wizard_init_v2_external_title,
+                getDiskShortDescription());
+            setNextButtonText(R.string.storage_wizard_init_v2_external_action);
+            setBackButtonText(R.string.wizard_back_adoptable);
+            setNextButtonVisibility(View.VISIBLE);
+            if (!mDisk.isAdoptable()) {
+                setBackButtonVisibility(View.GONE);
+            }
+        }
+        else {
+            mFlipper.setDisplayedChild(1);
+            setHeaderText(R.string.storage_wizard_init_v2_internal_title,
+                getDiskShortDescription());
+            setNextButtonText(R.string.storage_wizard_init_v2_internal_action);
+            setBackButtonText(R.string.wizard_back_adoptable);
+            setNextButtonVisibility(View.VISIBLE);
         }
     }
 
@@ -144,6 +163,8 @@
 
         external_storage_textview.setMovementMethod(LinkMovementMethod.getInstance());
         internal_storage_textview.setMovementMethod(LinkMovementMethod.getInstance());
+        external_storage_textview.setOnTouchListener(listener);
+        internal_storage_textview.setOnTouchListener(listener);
     }
 
     private Spannable styleFont(String text) {
@@ -154,4 +175,22 @@
         }
         return s;
     }
+    private View.OnTouchListener listener = new View.OnTouchListener() {
+        @Override
+        public boolean onTouch(View v, MotionEvent event) {
+            if(event.getAction() == MotionEvent.ACTION_UP) {
+                if (isInside(v, event)) {
+                    return false;
+                }
+                return true;
+            }
+            return false;
+        }
+
+        private boolean isInside(View v, MotionEvent event) {
+            return !(event.getX() < 0 || event.getY() < 0
+                || event.getX() > v.getMeasuredWidth()
+                || event.getY() > v.getMeasuredHeight());
+        }
+    };
 }
\ No newline at end of file