1fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville/*
2905bb54108d380555dbec1c9961a675740fe6e96Wink Saville * Copyright (C) 2014 The Android Open Source Project
3905bb54108d380555dbec1c9961a675740fe6e96Wink Saville *
4905bb54108d380555dbec1c9961a675740fe6e96Wink Saville * Licensed under the Apache License, Version 2.0 (the "License");
5905bb54108d380555dbec1c9961a675740fe6e96Wink Saville * you may not use this file except in compliance with the License.
6905bb54108d380555dbec1c9961a675740fe6e96Wink Saville * You may obtain a copy of the License at
7905bb54108d380555dbec1c9961a675740fe6e96Wink Saville *
8905bb54108d380555dbec1c9961a675740fe6e96Wink Saville *      http://www.apache.org/licenses/LICENSE-2.0
9905bb54108d380555dbec1c9961a675740fe6e96Wink Saville *
10905bb54108d380555dbec1c9961a675740fe6e96Wink Saville * Unless required by applicable law or agreed to in writing, software
11905bb54108d380555dbec1c9961a675740fe6e96Wink Saville * distributed under the License is distributed on an "AS IS" BASIS,
12905bb54108d380555dbec1c9961a675740fe6e96Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13905bb54108d380555dbec1c9961a675740fe6e96Wink Saville * See the License for the specific language governing permissions and
14905bb54108d380555dbec1c9961a675740fe6e96Wink Saville * limitations under the License.
15905bb54108d380555dbec1c9961a675740fe6e96Wink Saville */
16fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
17fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savillepackage android.telephony;
18fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
19ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scottimport android.content.Context;
20ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scottimport android.graphics.Bitmap;
21ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scottimport android.graphics.Canvas;
22ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scottimport android.graphics.Color;
23ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scottimport android.graphics.Paint;
24ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scottimport android.graphics.PorterDuff;
25ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scottimport android.graphics.PorterDuffColorFilter;
26ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scottimport android.graphics.Rect;
27ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scottimport android.graphics.Typeface;
28b09fdff0ff3089e908b7c815ca88ace617f93accNathan Haroldimport android.os.Build;
29fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport android.os.Parcel;
30fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport android.os.Parcelable;
317151cde3ca742d24ea97f163526519b83431c87eStuart Scottimport android.util.DisplayMetrics;
32fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
33fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville/**
34905bb54108d380555dbec1c9961a675740fe6e96Wink Saville * A Parcelable class for Subscription Information.
35fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */
36a374c3d03b28f135cdfba2cadf6fe6f03ac010bdWink Savillepublic class SubscriptionInfo implements Parcelable {
37fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
38905bb54108d380555dbec1c9961a675740fe6e96Wink Saville    /**
39da5be611d88c40bdb4299fa0d7fa446230035e0dStuart Scott     * Size of text to render on the icon.
40da5be611d88c40bdb4299fa0d7fa446230035e0dStuart Scott     */
417151cde3ca742d24ea97f163526519b83431c87eStuart Scott    private static final int TEXT_SIZE = 16;
42da5be611d88c40bdb4299fa0d7fa446230035e0dStuart Scott
43da5be611d88c40bdb4299fa0d7fa446230035e0dStuart Scott    /**
44905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     * Subscription Identifier, this is a device unique number
45905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     * and not an index into an array
46905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     */
4795fc99b33418f228aa0390032ad466814d33b164Stuart Scott    private int mId;
4895fc99b33418f228aa0390032ad466814d33b164Stuart Scott
4995fc99b33418f228aa0390032ad466814d33b164Stuart Scott    /**
5095fc99b33418f228aa0390032ad466814d33b164Stuart Scott     * The GID for a SIM that maybe associated with this subscription, empty if unknown
5195fc99b33418f228aa0390032ad466814d33b164Stuart Scott     */
5295fc99b33418f228aa0390032ad466814d33b164Stuart Scott    private String mIccId;
5395fc99b33418f228aa0390032ad466814d33b164Stuart Scott
54905bb54108d380555dbec1c9961a675740fe6e96Wink Saville    /**
5595fc99b33418f228aa0390032ad466814d33b164Stuart Scott     * The index of the slot that currently contains the subscription
56905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     * and not necessarily unique and maybe INVALID_SLOT_ID if unknown
57905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     */
5895fc99b33418f228aa0390032ad466814d33b164Stuart Scott    private int mSimSlotIndex;
5995fc99b33418f228aa0390032ad466814d33b164Stuart Scott
60905bb54108d380555dbec1c9961a675740fe6e96Wink Saville    /**
6195fc99b33418f228aa0390032ad466814d33b164Stuart Scott     * The name displayed to the user that identifies this subscription
62905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     */
6395fc99b33418f228aa0390032ad466814d33b164Stuart Scott    private CharSequence mDisplayName;
6495fc99b33418f228aa0390032ad466814d33b164Stuart Scott
65905bb54108d380555dbec1c9961a675740fe6e96Wink Saville    /**
66ea4713d6e50a34c9e699ba09dd3c73000aff3b46Sanket Padawe     * String that identifies SPN/PLMN
67ea4713d6e50a34c9e699ba09dd3c73000aff3b46Sanket Padawe     * TODO : Add a new field that identifies only SPN for a sim
68e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe     */
69e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe    private CharSequence mCarrierName;
70e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe
71e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe    /**
72905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     * The source of the name, NAME_SOURCE_UNDEFINED, NAME_SOURCE_DEFAULT_SOURCE,
73905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     * NAME_SOURCE_SIM_SOURCE or NAME_SOURCE_USER_INPUT.
74905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     */
7595fc99b33418f228aa0390032ad466814d33b164Stuart Scott    private int mNameSource;
7695fc99b33418f228aa0390032ad466814d33b164Stuart Scott
77905bb54108d380555dbec1c9961a675740fe6e96Wink Saville    /**
78ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott     * The color to be used for tinting the icon when displaying to the user
79905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     */
80ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott    private int mIconTint;
8195fc99b33418f228aa0390032ad466814d33b164Stuart Scott
82905bb54108d380555dbec1c9961a675740fe6e96Wink Saville    /**
83905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     * A number presented to the user identify this subscription
84905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     */
8595fc99b33418f228aa0390032ad466814d33b164Stuart Scott    private String mNumber;
8695fc99b33418f228aa0390032ad466814d33b164Stuart Scott
87905bb54108d380555dbec1c9961a675740fe6e96Wink Saville    /**
88905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     * Data roaming state, DATA_RAOMING_ENABLE, DATA_RAOMING_DISABLE
89905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     */
9095fc99b33418f228aa0390032ad466814d33b164Stuart Scott    private int mDataRoaming;
9195fc99b33418f228aa0390032ad466814d33b164Stuart Scott
92905bb54108d380555dbec1c9961a675740fe6e96Wink Saville    /**
93ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott     * SIM Icon bitmap
94905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     */
95ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott    private Bitmap mIconBitmap;
9695fc99b33418f228aa0390032ad466814d33b164Stuart Scott
97905bb54108d380555dbec1c9961a675740fe6e96Wink Saville    /**
98905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     * Mobile Country Code
99905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     */
10095fc99b33418f228aa0390032ad466814d33b164Stuart Scott    private int mMcc;
10195fc99b33418f228aa0390032ad466814d33b164Stuart Scott
102905bb54108d380555dbec1c9961a675740fe6e96Wink Saville    /**
103905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     * Mobile Network Code
104905bb54108d380555dbec1c9961a675740fe6e96Wink Saville     */
10595fc99b33418f228aa0390032ad466814d33b164Stuart Scott    private int mMnc;
106fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
10795fc99b33418f228aa0390032ad466814d33b164Stuart Scott    /**
108d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     * ISO Country code for the subscription's provider
109d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     */
110d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville    private String mCountryIso;
111d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville
112d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville    /**
11395fc99b33418f228aa0390032ad466814d33b164Stuart Scott     * @hide
11495fc99b33418f228aa0390032ad466814d33b164Stuart Scott     */
115a374c3d03b28f135cdfba2cadf6fe6f03ac010bdWink Saville    public SubscriptionInfo(int id, String iccId, int simSlotIndex, CharSequence displayName,
116ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott            CharSequence carrierName, int nameSource, int iconTint, String number, int roaming,
1171bf6ec2f868041ba4c3d4c88d3ac482bfd4c52b9fionaxu            Bitmap icon, int mcc, int mnc, String countryIso) {
11895fc99b33418f228aa0390032ad466814d33b164Stuart Scott        this.mId = id;
11995fc99b33418f228aa0390032ad466814d33b164Stuart Scott        this.mIccId = iccId;
12095fc99b33418f228aa0390032ad466814d33b164Stuart Scott        this.mSimSlotIndex = simSlotIndex;
12195fc99b33418f228aa0390032ad466814d33b164Stuart Scott        this.mDisplayName = displayName;
122e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe        this.mCarrierName = carrierName;
12395fc99b33418f228aa0390032ad466814d33b164Stuart Scott        this.mNameSource = nameSource;
124ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        this.mIconTint = iconTint;
12595fc99b33418f228aa0390032ad466814d33b164Stuart Scott        this.mNumber = number;
12695fc99b33418f228aa0390032ad466814d33b164Stuart Scott        this.mDataRoaming = roaming;
127ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        this.mIconBitmap = icon;
12895fc99b33418f228aa0390032ad466814d33b164Stuart Scott        this.mMcc = mcc;
12995fc99b33418f228aa0390032ad466814d33b164Stuart Scott        this.mMnc = mnc;
130d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville        this.mCountryIso = countryIso;
131fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    }
132fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
1333ace54b895c97f0e98e989667238be9c96c3b40cNancy Chen    /**
1344abdd079498801edf6d144ba6d6965d4cb00e91eStuart Scott     * @return the subscription ID.
1353ace54b895c97f0e98e989667238be9c96c3b40cNancy Chen     */
13695fc99b33418f228aa0390032ad466814d33b164Stuart Scott    public int getSubscriptionId() {
13795fc99b33418f228aa0390032ad466814d33b164Stuart Scott        return this.mId;
1383ace54b895c97f0e98e989667238be9c96c3b40cNancy Chen    }
1393ace54b895c97f0e98e989667238be9c96c3b40cNancy Chen
1403ace54b895c97f0e98e989667238be9c96c3b40cNancy Chen    /**
1414abdd079498801edf6d144ba6d6965d4cb00e91eStuart Scott     * @return the ICC ID.
1423ace54b895c97f0e98e989667238be9c96c3b40cNancy Chen     */
14395fc99b33418f228aa0390032ad466814d33b164Stuart Scott    public String getIccId() {
14495fc99b33418f228aa0390032ad466814d33b164Stuart Scott        return this.mIccId;
14595fc99b33418f228aa0390032ad466814d33b164Stuart Scott    }
14695fc99b33418f228aa0390032ad466814d33b164Stuart Scott
14795fc99b33418f228aa0390032ad466814d33b164Stuart Scott    /**
1484abdd079498801edf6d144ba6d6965d4cb00e91eStuart Scott     * @return the slot index of this Subscription's SIM card.
14995fc99b33418f228aa0390032ad466814d33b164Stuart Scott     */
15095fc99b33418f228aa0390032ad466814d33b164Stuart Scott    public int getSimSlotIndex() {
15195fc99b33418f228aa0390032ad466814d33b164Stuart Scott        return this.mSimSlotIndex;
15295fc99b33418f228aa0390032ad466814d33b164Stuart Scott    }
15395fc99b33418f228aa0390032ad466814d33b164Stuart Scott
15495fc99b33418f228aa0390032ad466814d33b164Stuart Scott    /**
1554abdd079498801edf6d144ba6d6965d4cb00e91eStuart Scott     * @return the name displayed to the user that identifies this subscription
15695fc99b33418f228aa0390032ad466814d33b164Stuart Scott     */
15795fc99b33418f228aa0390032ad466814d33b164Stuart Scott    public CharSequence getDisplayName() {
15895fc99b33418f228aa0390032ad466814d33b164Stuart Scott        return this.mDisplayName;
15995fc99b33418f228aa0390032ad466814d33b164Stuart Scott    }
16095fc99b33418f228aa0390032ad466814d33b164Stuart Scott
16195fc99b33418f228aa0390032ad466814d33b164Stuart Scott    /**
16295fc99b33418f228aa0390032ad466814d33b164Stuart Scott     * Sets the name displayed to the user that identifies this subscription
16395fc99b33418f228aa0390032ad466814d33b164Stuart Scott     * @hide
16495fc99b33418f228aa0390032ad466814d33b164Stuart Scott     */
16595fc99b33418f228aa0390032ad466814d33b164Stuart Scott    public void setDisplayName(CharSequence name) {
16695fc99b33418f228aa0390032ad466814d33b164Stuart Scott        this.mDisplayName = name;
16795fc99b33418f228aa0390032ad466814d33b164Stuart Scott    }
16895fc99b33418f228aa0390032ad466814d33b164Stuart Scott
16995fc99b33418f228aa0390032ad466814d33b164Stuart Scott    /**
1704abdd079498801edf6d144ba6d6965d4cb00e91eStuart Scott     * @return the name displayed to the user that identifies Subscription provider name
171e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe     */
172e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe    public CharSequence getCarrierName() {
173e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe        return this.mCarrierName;
174e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe    }
175e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe
176e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe    /**
177e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe     * Sets the name displayed to the user that identifies Subscription provider name
178e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe     * @hide
179e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe     */
180e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe    public void setCarrierName(CharSequence name) {
181e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe        this.mCarrierName = name;
182e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe    }
183e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe
184e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe    /**
1854abdd079498801edf6d144ba6d6965d4cb00e91eStuart Scott     * @return the source of the name, eg NAME_SOURCE_UNDEFINED, NAME_SOURCE_DEFAULT_SOURCE,
18695fc99b33418f228aa0390032ad466814d33b164Stuart Scott     * NAME_SOURCE_SIM_SOURCE or NAME_SOURCE_USER_INPUT.
1874abdd079498801edf6d144ba6d6965d4cb00e91eStuart Scott     * @hide
18895fc99b33418f228aa0390032ad466814d33b164Stuart Scott     */
18995fc99b33418f228aa0390032ad466814d33b164Stuart Scott    public int getNameSource() {
19095fc99b33418f228aa0390032ad466814d33b164Stuart Scott        return this.mNameSource;
1913ace54b895c97f0e98e989667238be9c96c3b40cNancy Chen    }
1923ace54b895c97f0e98e989667238be9c96c3b40cNancy Chen
1933ace54b895c97f0e98e989667238be9c96c3b40cNancy Chen    /**
194a374c3d03b28f135cdfba2cadf6fe6f03ac010bdWink Saville     * Creates and returns an icon {@code Bitmap} to represent this {@code SubscriptionInfo} in a user
195ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott     * interface.
196ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott     *
197ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott     * @param context A {@code Context} to get the {@code DisplayMetrics}s from.
198ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott     *
199a374c3d03b28f135cdfba2cadf6fe6f03ac010bdWink Saville     * @return A bitmap icon for this {@code SubscriptionInfo}.
2003ace54b895c97f0e98e989667238be9c96c3b40cNancy Chen     */
201ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott    public Bitmap createIconBitmap(Context context) {
202ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        int width = mIconBitmap.getWidth();
203ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        int height = mIconBitmap.getHeight();
2047151cde3ca742d24ea97f163526519b83431c87eStuart Scott        DisplayMetrics metrics = context.getResources().getDisplayMetrics();
205ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott
206ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        // Create a new bitmap of the same size because it will be modified.
2077151cde3ca742d24ea97f163526519b83431c87eStuart Scott        Bitmap workingBitmap = Bitmap.createBitmap(metrics, width, height, mIconBitmap.getConfig());
208ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott
209ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        Canvas canvas = new Canvas(workingBitmap);
210ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        Paint paint = new Paint();
211ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott
212ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        // Tint the icon with the color.
213ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        paint.setColorFilter(new PorterDuffColorFilter(mIconTint, PorterDuff.Mode.SRC_ATOP));
214ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        canvas.drawBitmap(mIconBitmap, 0, 0, paint);
215ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        paint.setColorFilter(null);
216ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott
217ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        // Write the sim slot index.
218da5be611d88c40bdb4299fa0d7fa446230035e0dStuart Scott        paint.setAntiAlias(true);
219ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        paint.setTypeface(Typeface.create("sans-serif", Typeface.NORMAL));
220ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        paint.setColor(Color.WHITE);
2217151cde3ca742d24ea97f163526519b83431c87eStuart Scott        // Set text size scaled by density
2227151cde3ca742d24ea97f163526519b83431c87eStuart Scott        paint.setTextSize(TEXT_SIZE * metrics.density);
2237151cde3ca742d24ea97f163526519b83431c87eStuart Scott        // Convert sim slot index to localized string
2247151cde3ca742d24ea97f163526519b83431c87eStuart Scott        final String index = String.format("%d", mSimSlotIndex + 1);
225ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        final Rect textBound = new Rect();
226ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        paint.getTextBounds(index, 0, 1, textBound);
227ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        final float xOffset = (width / 2.f) - textBound.centerX();
228ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        final float yOffset = (height / 2.f) - textBound.centerY();
229ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        canvas.drawText(index, xOffset, yOffset, paint);
230ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott
231ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        return workingBitmap;
232ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott    }
233ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott
234ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott    /**
235ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott     * A highlight color to use in displaying information about this {@code PhoneAccount}.
236ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott     *
237ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott     * @return A hexadecimal color value.
238ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott     */
239ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott    public int getIconTint() {
240ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        return mIconTint;
24195fc99b33418f228aa0390032ad466814d33b164Stuart Scott    }
24295fc99b33418f228aa0390032ad466814d33b164Stuart Scott
24395fc99b33418f228aa0390032ad466814d33b164Stuart Scott    /**
24495fc99b33418f228aa0390032ad466814d33b164Stuart Scott     * Sets the color displayed to the user that identifies this subscription
24595fc99b33418f228aa0390032ad466814d33b164Stuart Scott     * @hide
24695fc99b33418f228aa0390032ad466814d33b164Stuart Scott     */
247ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott    public void setIconTint(int iconTint) {
248ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        this.mIconTint = iconTint;
24995fc99b33418f228aa0390032ad466814d33b164Stuart Scott    }
25095fc99b33418f228aa0390032ad466814d33b164Stuart Scott
25195fc99b33418f228aa0390032ad466814d33b164Stuart Scott    /**
2524abdd079498801edf6d144ba6d6965d4cb00e91eStuart Scott     * @return the number of this subscription.
25395fc99b33418f228aa0390032ad466814d33b164Stuart Scott     */
25495fc99b33418f228aa0390032ad466814d33b164Stuart Scott    public String getNumber() {
25595fc99b33418f228aa0390032ad466814d33b164Stuart Scott        return mNumber;
25695fc99b33418f228aa0390032ad466814d33b164Stuart Scott    }
25795fc99b33418f228aa0390032ad466814d33b164Stuart Scott
25895fc99b33418f228aa0390032ad466814d33b164Stuart Scott    /**
259400a3f6df20b92e639f20956301a36beb67b511bStuart Scott     * @return the data roaming state for this subscription, either
260400a3f6df20b92e639f20956301a36beb67b511bStuart Scott     * {@link SubscriptionManager#DATA_ROAMING_ENABLE} or {@link SubscriptionManager#DATA_ROAMING_DISABLE}.
26195fc99b33418f228aa0390032ad466814d33b164Stuart Scott     */
26295fc99b33418f228aa0390032ad466814d33b164Stuart Scott    public int getDataRoaming() {
26395fc99b33418f228aa0390032ad466814d33b164Stuart Scott        return this.mDataRoaming;
26495fc99b33418f228aa0390032ad466814d33b164Stuart Scott    }
26595fc99b33418f228aa0390032ad466814d33b164Stuart Scott
26695fc99b33418f228aa0390032ad466814d33b164Stuart Scott    /**
2674abdd079498801edf6d144ba6d6965d4cb00e91eStuart Scott     * @return the MCC.
26895fc99b33418f228aa0390032ad466814d33b164Stuart Scott     */
26995fc99b33418f228aa0390032ad466814d33b164Stuart Scott    public int getMcc() {
27095fc99b33418f228aa0390032ad466814d33b164Stuart Scott        return this.mMcc;
27195fc99b33418f228aa0390032ad466814d33b164Stuart Scott    }
27295fc99b33418f228aa0390032ad466814d33b164Stuart Scott
27395fc99b33418f228aa0390032ad466814d33b164Stuart Scott    /**
2744abdd079498801edf6d144ba6d6965d4cb00e91eStuart Scott     * @return the MNC.
27595fc99b33418f228aa0390032ad466814d33b164Stuart Scott     */
27695fc99b33418f228aa0390032ad466814d33b164Stuart Scott    public int getMnc() {
27795fc99b33418f228aa0390032ad466814d33b164Stuart Scott        return this.mMnc;
2783ace54b895c97f0e98e989667238be9c96c3b40cNancy Chen    }
2793ace54b895c97f0e98e989667238be9c96c3b40cNancy Chen
280d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville    /**
2814abdd079498801edf6d144ba6d6965d4cb00e91eStuart Scott     * @return the ISO country code
282d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville     */
283d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville    public String getCountryIso() {
284d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville        return this.mCountryIso;
285d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville    }
286d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville
287a374c3d03b28f135cdfba2cadf6fe6f03ac010bdWink Saville    public static final Parcelable.Creator<SubscriptionInfo> CREATOR = new Parcelable.Creator<SubscriptionInfo>() {
288905bb54108d380555dbec1c9961a675740fe6e96Wink Saville        @Override
289a374c3d03b28f135cdfba2cadf6fe6f03ac010bdWink Saville        public SubscriptionInfo createFromParcel(Parcel source) {
29095fc99b33418f228aa0390032ad466814d33b164Stuart Scott            int id = source.readInt();
2917a96207e2ba549843e9fcbbc7f2fde7ed96ada84Tom Taylor            String iccId = source.readString();
29295fc99b33418f228aa0390032ad466814d33b164Stuart Scott            int simSlotIndex = source.readInt();
2938b564c2af85c0f796a2396055c0c3e59a4249c7bStuart Scott            CharSequence displayName = source.readCharSequence();
294e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe            CharSequence carrierName = source.readCharSequence();
2957a96207e2ba549843e9fcbbc7f2fde7ed96ada84Tom Taylor            int nameSource = source.readInt();
296ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott            int iconTint = source.readInt();
2977a96207e2ba549843e9fcbbc7f2fde7ed96ada84Tom Taylor            String number = source.readString();
2987a96207e2ba549843e9fcbbc7f2fde7ed96ada84Tom Taylor            int dataRoaming = source.readInt();
2997a96207e2ba549843e9fcbbc7f2fde7ed96ada84Tom Taylor            int mcc = source.readInt();
3007a96207e2ba549843e9fcbbc7f2fde7ed96ada84Tom Taylor            int mnc = source.readInt();
301d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville            String countryIso = source.readString();
302ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott            Bitmap iconBitmap = Bitmap.CREATOR.createFromParcel(source);
303fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
304d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville            return new SubscriptionInfo(id, iccId, simSlotIndex, displayName, carrierName,
3051bf6ec2f868041ba4c3d4c88d3ac482bfd4c52b9fionaxu                    nameSource, iconTint, number, dataRoaming, iconBitmap, mcc, mnc, countryIso);
306fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville        }
307fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
308905bb54108d380555dbec1c9961a675740fe6e96Wink Saville        @Override
309a374c3d03b28f135cdfba2cadf6fe6f03ac010bdWink Saville        public SubscriptionInfo[] newArray(int size) {
310a374c3d03b28f135cdfba2cadf6fe6f03ac010bdWink Saville            return new SubscriptionInfo[size];
311fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville        }
312fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    };
313fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
314905bb54108d380555dbec1c9961a675740fe6e96Wink Saville    @Override
315fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    public void writeToParcel(Parcel dest, int flags) {
31695fc99b33418f228aa0390032ad466814d33b164Stuart Scott        dest.writeInt(mId);
31795fc99b33418f228aa0390032ad466814d33b164Stuart Scott        dest.writeString(mIccId);
31895fc99b33418f228aa0390032ad466814d33b164Stuart Scott        dest.writeInt(mSimSlotIndex);
3198b564c2af85c0f796a2396055c0c3e59a4249c7bStuart Scott        dest.writeCharSequence(mDisplayName);
320e1013f964dc4eeb28521ed860005e1e21907b0ffSanket Padawe        dest.writeCharSequence(mCarrierName);
32195fc99b33418f228aa0390032ad466814d33b164Stuart Scott        dest.writeInt(mNameSource);
322ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        dest.writeInt(mIconTint);
323bc6a9601d78ae0227d494a2684146dc9e32010d1Stuart Scott        dest.writeString(mNumber);
32495fc99b33418f228aa0390032ad466814d33b164Stuart Scott        dest.writeInt(mDataRoaming);
32595fc99b33418f228aa0390032ad466814d33b164Stuart Scott        dest.writeInt(mMcc);
32695fc99b33418f228aa0390032ad466814d33b164Stuart Scott        dest.writeInt(mMnc);
327d09c4cad65c708f2c4810d24295456708a2000d2Wink Saville        dest.writeString(mCountryIso);
328ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott        mIconBitmap.writeToParcel(dest, flags);
329fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    }
330fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
331905bb54108d380555dbec1c9961a675740fe6e96Wink Saville    @Override
332fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    public int describeContents() {
333fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville        return 0;
334fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville    }
335fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville
336f149dcb36edc4cf75f7c6fb55c54b51fc815f283Sanket Padawe    /**
337f149dcb36edc4cf75f7c6fb55c54b51fc815f283Sanket Padawe     * @hide
338f149dcb36edc4cf75f7c6fb55c54b51fc815f283Sanket Padawe     */
339f149dcb36edc4cf75f7c6fb55c54b51fc815f283Sanket Padawe    public static String givePrintableIccid(String iccId) {
340f149dcb36edc4cf75f7c6fb55c54b51fc815f283Sanket Padawe        String iccIdToPrint = null;
341f149dcb36edc4cf75f7c6fb55c54b51fc815f283Sanket Padawe        if (iccId != null) {
342b09fdff0ff3089e908b7c815ca88ace617f93accNathan Harold            if (iccId.length() > 9 && !Build.IS_DEBUGGABLE) {
343d0a7649f5307842278eebf0c4606344e2ff43a6afionaxu                iccIdToPrint = iccId.substring(0, 9) + Rlog.pii(false, iccId.substring(9));
344f149dcb36edc4cf75f7c6fb55c54b51fc815f283Sanket Padawe            } else {
345f149dcb36edc4cf75f7c6fb55c54b51fc815f283Sanket Padawe                iccIdToPrint = iccId;
346f149dcb36edc4cf75f7c6fb55c54b51fc815f283Sanket Padawe            }
347f149dcb36edc4cf75f7c6fb55c54b51fc815f283Sanket Padawe        }
348f149dcb36edc4cf75f7c6fb55c54b51fc815f283Sanket Padawe        return iccIdToPrint;
349f149dcb36edc4cf75f7c6fb55c54b51fc815f283Sanket Padawe    }
350f149dcb36edc4cf75f7c6fb55c54b51fc815f283Sanket Padawe
351905bb54108d380555dbec1c9961a675740fe6e96Wink Saville    @Override
352eeacf9374748a5f7fc96a1beaf18c353d473d752Wink Saville    public String toString() {
353f149dcb36edc4cf75f7c6fb55c54b51fc815f283Sanket Padawe        String iccIdToPrint = givePrintableIccid(mIccId);
354fb34a123ed17b2ab732815608be47d832e5ada89Sanket Padawe        return "{id=" + mId + ", iccId=" + iccIdToPrint + " simSlotIndex=" + mSimSlotIndex
355ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott                + " displayName=" + mDisplayName + " carrierName=" + mCarrierName
35614d21344d21e379f6aeaa923cae7dc519efa16e3Sanket Padawe                + " nameSource=" + mNameSource + " iconTint=" + mIconTint
357ab45ec177a787fee046f6a9c4d1098d529aff7bbStuart Scott                + " dataRoaming=" + mDataRoaming + " iconBitmap=" + mIconBitmap + " mcc " + mMcc
3581bf6ec2f868041ba4c3d4c88d3ac482bfd4c52b9fionaxu                + " mnc " + mMnc + "}";
359eeacf9374748a5f7fc96a1beaf18c353d473d752Wink Saville    }
360fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville}
361