Merge "Add sim color selection in settings" into lmp-mr1-dev
diff --git a/res/layout/multi_sim_dialog.xml b/res/layout/multi_sim_dialog.xml
index 4f9dd6c..c373edd 100644
--- a/res/layout/multi_sim_dialog.xml
+++ b/res/layout/multi_sim_dialog.xml
@@ -50,6 +50,28 @@
         </LinearLayout>
 
         <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/sim_dialog_margin_top"
+                android:paddingStart="@dimen/sim_label_padding"
+                android:text="@string/color_title"
+                style="?android:attr/textAppearanceMedium" />
+
+            <Spinner
+                android:id="@+id/spinner"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/sim_dialog_margin_top"
+                android:paddingStart="@dimen/sim_label_padding" />
+
+        </LinearLayout>
+
+        <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="vertical">
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 580143e..e613617 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -1260,21 +1260,23 @@
         <item>Cached (empty)</item>
     </string-array>
 
-    <!-- Multi-SIM titles for captioning color preference. -->
-    <string-array name="sim_info_picker_color_titles" translatable="false" >
-        <item>@string/color_blue</item>
-        <item>@string/color_green</item>
-        <item>@string/color_purple</item>
-        <item>@string/color_red</item>
-        <item>@string/color_orange</item>
-    </string-array>
+    <!-- Array storing rgb values of sim colors for multi-sim -->
+    <array name="sim_colors">
+        <item>@color/Teal_700</item>
+        <item>@color/Blue_700</item>
+        <item>@color/Indigo_700</item>
+        <item>@color/Purple_700</item>
+        <item>@color/Pink_700</item>
+        <item>@color/Red_700</item>
+    </array>
 
-    <!-- Multi-SIM colors. -->
-    <integer-array name="sim_info_picker_color_values" translatable="false" >
-        <item>@color/blue_500</item>
-        <item>@color/green_500</item>
-        <item>@color/purple_500</item>
-        <item>@color/red_500</item>
-        <item>@color/orange_500</item>
-    </integer-array>
+    <!-- Array of titles for sim color for multi-sim -->
+    <string-array name="color_picker">
+        <item>Teal</item>
+        <item>Blue</item>
+        <item>Indigo</item>
+        <item>Purple</item>
+        <item>Pink</item>
+        <item>Red</item>
+    </string-array>
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index da54c3e..5ccae84 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -75,11 +75,13 @@
 
     <color name="wifi_divider">#ffe0e0e0</color>
 
-    <!-- Multi-SIM colors -->
-    <color name="blue_500">#5677fc</color>
-    <color name="green_500">#259b24</color>
-    <color name="purple_500">#9c27b0</color>
-    <color name="red_500">#e51c23</color>
-    <color name="orange_500">#ff9800</color>
+    <!-- Multi-SIM colors Todo: To check whether to append 00 or FF before color values-->
+    <color name="Teal_700">#0000796b</color>
+    <color name="Blue_700">#003367d6</color>
+    <color name="Indigo_700">#00303f9f</color>
+    <color name="Purple_700">#007b1fa2</color>
+    <color name="Pink_700">#00c2185b</color>
+    <color name="Red_700">#00c53929</color>
+
 
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f6c8b76..f8721c3 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3631,6 +3631,8 @@
     <!-- Label for the default device locale. [CHAR LIMIT=35] -->
     <string name="locale_default">Default</string>
 
+    <!-- Label for color selection title in sim settings [CHAR LIMIT=35] -->
+    <string name = "color_title">Color</string>
     <!-- Label for default color. This lets the app pick the color. [CHAR LIMIT=35] -->
     <string name="color_unspecified">Default</string>
     <!-- Label for no color (transparent). [CHAR LIMIT=35] -->
diff --git a/src/com/android/settings/sim/SimSettings.java b/src/com/android/settings/sim/SimSettings.java
index 8a96ac7..edad591 100644
--- a/src/com/android/settings/sim/SimSettings.java
+++ b/src/com/android/settings/sim/SimSettings.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.sim;
 
+import android.graphics.Color;
 import android.provider.SearchIndexableResource;
 import com.android.settings.R;
 
@@ -463,6 +464,7 @@
     private class SimPreference extends Preference{
         private SubInfoRecord mSubInfoRecord;
         private int mSlotId;
+        private int[] colorArr;
 
         public SimPreference(Context context, SubInfoRecord subInfoRecord, int slotId) {
             super(context);
@@ -471,6 +473,7 @@
             mSlotId = slotId;
             setKey("sim" + mSlotId);
             update();
+            colorArr = context.getResources().getIntArray(R.array.sim_colors);
         }
 
         public void update() {
@@ -530,6 +533,31 @@
             EditText nameText = (EditText)dialogLayout.findViewById(R.id.sim_name);
             nameText.setText(mSubInfoRecord.displayName);
 
+            final Spinner colorSpinner = (Spinner) dialogLayout.findViewById(R.id.spinner);
+            ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getContext(),
+                    R.array.color_picker, android.R.layout.simple_spinner_item);
+            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+            colorSpinner.setAdapter(adapter);
+
+            for (int i = 0; i < colorArr.length; i++) {
+                if (colorArr[i] == mSubInfoRecord.color) {
+                    colorSpinner.setSelection(i);
+                    break;
+                }
+            }
+
+            colorSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+                @Override
+                public void onItemSelected(AdapterView<?> parent, View view,
+                    int pos, long id){
+                    colorSpinner.setSelection(pos);
+                }
+
+                @Override
+                public void onNothingSelected(AdapterView<?> parent) {
+                }
+            });
+
             TextView numberView = (TextView)dialogLayout.findViewById(R.id.number);
             numberView.setText(simPref.getFormattedPhoneNumber());
 
@@ -547,10 +575,14 @@
                     mSubInfoRecord.displayName = nameText.getText().toString();
                     SubscriptionManager.setDisplayName(mSubInfoRecord.displayName,
                         mSubInfoRecord.subId);
-
                     findRecordBySubId(mSubInfoRecord.subId).displayName =
                         nameText.getText().toString();
 
+                    final int colorSelected = colorSpinner.getSelectedItemPosition();
+                    mSubInfoRecord.color = colorArr[colorSelected];
+                    SubscriptionManager.setColor(colorArr[colorSelected], mSubInfoRecord.subId);
+                    findRecordBySubId(mSubInfoRecord.subId).color = colorArr[colorSelected];
+
                     updateAllOptions();
                     update();
                 }