Merge "Add getter methods in SubInfoRecord for UI. Adapt PhoneAccount." into lmp-sprout-dev
diff --git a/api/current.txt b/api/current.txt
index 305ae57..d66867b 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -28486,6 +28486,9 @@
     ctor public SubInfoRecord();
     ctor public SubInfoRecord(long, java.lang.String, int, java.lang.String, int, int, java.lang.String, int, int, int[], int, int);
     method public int describeContents();
+    method public int getColor();
+    method public android.graphics.drawable.BitmapDrawable getIconDrawable();
+    method public java.lang.String getLabel();
     method public void writeToParcel(android.os.Parcel, int);
     field public static final android.os.Parcelable.Creator CREATOR;
     field public int color;
diff --git a/telecomm/java/android/telecom/PhoneAccount.java b/telecomm/java/android/telecom/PhoneAccount.java
index 1d6d8bc..67b6328 100644
--- a/telecomm/java/android/telecom/PhoneAccount.java
+++ b/telecomm/java/android/telecom/PhoneAccount.java
@@ -108,11 +108,17 @@
      */
     public static final String SCHEME_SIP = "sip";
 
+    /**
+     * Indicating no color is set.
+     */
+    public static final int NO_COLOR = -1;
+
     private final PhoneAccountHandle mAccountHandle;
     private final Uri mAddress;
     private final Uri mSubscriptionAddress;
     private final int mCapabilities;
     private final int mIconResId;
+    private final int mColor;
     private final CharSequence mLabel;
     private final CharSequence mShortDescription;
     private final List<String> mSupportedUriSchemes;
@@ -123,6 +129,7 @@
         private Uri mSubscriptionAddress;
         private int mCapabilities;
         private int mIconResId;
+        private int mColor = NO_COLOR;
         private CharSequence mLabel;
         private CharSequence mShortDescription;
         private List<String> mSupportedUriSchemes = new ArrayList<String>();
@@ -144,6 +151,7 @@
             mSubscriptionAddress = phoneAccount.getSubscriptionAddress();
             mCapabilities = phoneAccount.getCapabilities();
             mIconResId = phoneAccount.getIconResId();
+            mColor = phoneAccount.getColor();
             mLabel = phoneAccount.getLabel();
             mShortDescription = phoneAccount.getShortDescription();
             mSupportedUriSchemes.addAll(phoneAccount.getSupportedUriSchemes());
@@ -169,6 +177,11 @@
             return this;
         }
 
+        public Builder setColor(int value) {
+            this.mColor = value;
+            return this;
+        }
+
         public Builder setShortDescription(CharSequence value) {
             this.mShortDescription = value;
             return this;
@@ -222,6 +235,7 @@
                     mSubscriptionAddress,
                     mCapabilities,
                     mIconResId,
+                    mColor,
                     mLabel,
                     mShortDescription,
                     mSupportedUriSchemes);
@@ -234,6 +248,7 @@
             Uri subscriptionAddress,
             int capabilities,
             int iconResId,
+            int color,
             CharSequence label,
             CharSequence shortDescription,
             List<String> supportedUriSchemes) {
@@ -242,6 +257,7 @@
         mSubscriptionAddress = subscriptionAddress;
         mCapabilities = capabilities;
         mIconResId = iconResId;
+        mColor = color;
         mLabel = label;
         mShortDescription = shortDescription;
         mSupportedUriSchemes = Collections.unmodifiableList(supportedUriSchemes);
@@ -371,6 +387,15 @@
     }
 
     /**
+     * A highlight color to use in displaying information about this {@code PhoneAccount}.
+     *
+     * @return A hexadecimal color value.
+     */
+    public int getColor() {
+        return mColor;
+    }
+
+    /**
      * An icon to represent this {@code PhoneAccount} in a user interface.
      *
      * @return An icon for this {@code PhoneAccount}.
@@ -413,6 +438,7 @@
         out.writeParcelable(mSubscriptionAddress, 0);
         out.writeInt(mCapabilities);
         out.writeInt(mIconResId);
+        out.writeInt(mColor);
         out.writeCharSequence(mLabel);
         out.writeCharSequence(mShortDescription);
         out.writeList(mSupportedUriSchemes);
@@ -439,6 +465,7 @@
         mSubscriptionAddress = in.readParcelable(getClass().getClassLoader());
         mCapabilities = in.readInt();
         mIconResId = in.readInt();
+        mColor = in.readInt();
         mLabel = in.readCharSequence();
         mShortDescription = in.readCharSequence();
 
diff --git a/telephony/java/android/telephony/SubInfoRecord.java b/telephony/java/android/telephony/SubInfoRecord.java
index b9de871..f2df079 100644
--- a/telephony/java/android/telephony/SubInfoRecord.java
+++ b/telephony/java/android/telephony/SubInfoRecord.java
@@ -16,6 +16,7 @@
 
 package android.telephony;
 
+import android.graphics.drawable.BitmapDrawable;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -107,6 +108,31 @@
         this.mnc = mnc;
     }
 
+    /**
+     * Returns the string displayed to the user that identifies this subscription
+     */
+    public String getLabel() {
+        return this.displayName;
+    }
+
+    /**
+     * Return the icon used to identify this SIM.
+     * TODO: return the correct drawable.
+     */
+    public BitmapDrawable getIconDrawable() {
+        return new BitmapDrawable();
+    }
+
+    /**
+     * Return the color to be used for when displaying to the user. This is the value of the color.
+     * ex: 0x00ff00
+     */
+    public int getColor() {
+        // Note: This color is currently an index into a list of drawables, but this is soon to
+        // change.
+        return this.color;
+    }
+
     public static final Parcelable.Creator<SubInfoRecord> CREATOR = new Parcelable.Creator<SubInfoRecord>() {
         @Override
         public SubInfoRecord createFromParcel(Parcel source) {