Merge N-MR1 to remote branch.
Change-Id: I77a4ce17c9c85189c03a36e6d34e1a4abf71220a
diff --git a/src/com/android/contacts/common/MoreContactUtils.java b/src/com/android/contacts/common/MoreContactUtils.java
index 77f2bda..7c6201c 100755
--- a/src/com/android/contacts/common/MoreContactUtils.java
+++ b/src/com/android/contacts/common/MoreContactUtils.java
@@ -29,6 +29,7 @@
import android.database.Cursor;
import android.database.sqlite.SQLiteException;
import android.content.Intent;
+import android.graphics.drawable.Drawable;
import android.graphics.Rect;
import android.net.Uri;
import android.os.RemoteException;
@@ -52,6 +53,7 @@
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.SimContactsConstants;
+import com.android.internal.telephony.OperatorSimInfo;
import org.codeaurora.wrapper.UiccPhoneBookController_Wrapper;
import java.util.ArrayList;
@@ -78,6 +80,8 @@
private static final int EMAIL_USED_POS = 3;
private static final int ANR_COUNT_POS = 4;
private static final int ANR_USED_POS = 5;
+ public static final String SIM1_TYPE = "SIM1";
+ public static final String SIM2_TYPE = "SIM2";
public static final String PREFERRED_SIM_ICON_INDEX = "preferred_sim_icon_index";
public final static int[] IC_SIM_PICTURE = {
@@ -740,4 +744,72 @@
return simFilter.toString();
}
+
+ public static String getCustomOperatorLabel(Context context, int slotIndex) {
+ String customLabel = "";
+ OperatorSimInfo operatorSimInfo = new OperatorSimInfo(context);
+ boolean isCustomSimFeatureEnabled = operatorSimInfo.isOperatorFeatureEnabled();
+ if (isCustomSimFeatureEnabled) {
+ boolean isSimTypeOperator = operatorSimInfo.isSimTypeOperator(slotIndex);
+ if (isSimTypeOperator) {
+ customLabel = operatorSimInfo.getOperatorDisplayName();
+ } else {
+ int subId = MoreContactUtils.getActiveSubId(context, slotIndex);
+ customLabel = operatorSimInfo.getOperatorNameForSubId(subId);
+ }
+ }
+ return customLabel;
+ }
+
+ public static void setSimOperatorName(String accountName, TextView accountNameTextView,
+ Context context) {
+ String operatorSimLabel = "";
+ if (accountName != null) {
+ if (accountName.equals(SIM1_TYPE)) {
+ operatorSimLabel = getCustomOperatorLabel(context, SimContactsConstants.SLOT1);
+ } else if(accountName.equals(SIM2_TYPE)) {
+ operatorSimLabel = getCustomOperatorLabel(context, SimContactsConstants.SLOT2);
+ }
+ }
+ if (!TextUtils.isEmpty(operatorSimLabel)) {
+ accountNameTextView.setText(operatorSimLabel);
+ }
+ }
+
+ public static String getSimAccountName(Context context, String accountName) {
+ String operatorSimLabel = "";
+ if (accountName != null) {
+ if (accountName.equalsIgnoreCase(SIM1_TYPE)) {
+ operatorSimLabel = getCustomOperatorLabel(context, SimContactsConstants.SLOT1);
+ } else if(accountName.equalsIgnoreCase(SIM2_TYPE)) {
+ operatorSimLabel = getCustomOperatorLabel(context, SimContactsConstants.SLOT2);
+ }
+ }
+ return operatorSimLabel;
+ }
+
+ public static Drawable getDisplayIcon(Context context, String accountName) {
+ int slotIndex = -1;
+ OperatorSimInfo operatorSimInfo = new OperatorSimInfo(context);
+ boolean isCustomSimFeatureEnabled = operatorSimInfo.isOperatorFeatureEnabled();
+ if (isCustomSimFeatureEnabled) {
+ if (accountName != null && accountName.equals(SIM1_TYPE)) {
+ slotIndex = SimContactsConstants.SLOT1;
+ } else if (accountName != null && accountName.equals(SIM2_TYPE)) {
+ slotIndex = SimContactsConstants.SLOT2;
+ }
+ if (slotIndex >=0) {
+ boolean isSimTypeOperator = operatorSimInfo.isSimTypeOperator(slotIndex);
+ if (isSimTypeOperator) {
+ return operatorSimInfo.getOperatorDrawable();
+ }
+ else {
+ return operatorSimInfo.getGenericSimDrawable();
+ }
+ }
+ return null;
+ }
+ return null;
+ }
+
}
diff --git a/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java b/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
index c231ab2..880411f 100755
--- a/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
+++ b/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
@@ -949,8 +949,13 @@
case R.string.export_to_sim: {
String[] items = new String[tm.getPhoneCount()];
for (int i = 0; i < items.length; i++) {
- items[i] = getString(R.string.export_to_sim) + ": "
- + MoreContactUtils.getAcount(mActivity, i).name;
+ items[i] = getString(R.string.export_to_sim) + ": "
+ + MoreContactUtils.getAcount(mActivity, i).name;
+ String customLabel = MoreContactUtils.
+ getCustomOperatorLabel(mActivity.getApplicationContext(), i);
+ if(!TextUtils.isEmpty(customLabel)) {
+ items[i] = customLabel;
+ }
}
mExportSub = SimContactsConstants.SLOT1;
ExportToSimSelectListener listener = new ExportToSimSelectListener();
@@ -972,6 +977,11 @@
for (int i = 0; i < items.length; i++) {
items[i] = getString(R.string.import_from_sim) + ": "
+ MoreContactUtils.getAcount(mActivity, i).name;
+ String customLabel = MoreContactUtils.
+ getCustomOperatorLabel(mActivity.getApplicationContext(), i);
+ if(!TextUtils.isEmpty(customLabel)) {
+ items[i] = customLabel;
+ }
}
new AlertDialog.Builder(mActivity)
.setTitle(R.string.import_from_sim)
diff --git a/src/com/android/contacts/common/list/AccountFilterActivity.java b/src/com/android/contacts/common/list/AccountFilterActivity.java
index 86d3df8..095238c 100644
--- a/src/com/android/contacts/common/list/AccountFilterActivity.java
+++ b/src/com/android/contacts/common/list/AccountFilterActivity.java
@@ -25,6 +25,7 @@
import android.content.Loader;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
+import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MenuItem;
@@ -34,6 +35,7 @@
import android.widget.BaseAdapter;
import android.widget.ListView;
+import com.android.contacts.common.MoreContactUtils;
import com.android.contacts.common.R;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.account.AccountType;
@@ -125,8 +127,18 @@
continue;
}
Drawable icon = accountType != null ? accountType.getDisplayIcon(context) : null;
+ String accountName = account.name;
+ String customLabel = MoreContactUtils.getSimAccountName(context, accountName);
+ if (!TextUtils.isEmpty(customLabel)) {
+ accountName = customLabel;
+ }
+ Drawable customIcon = accountType != null ? MoreContactUtils.
+ getDisplayIcon(context, account.name) : null;
+ if (customIcon != null) {
+ icon = customIcon;
+ }
accountFilters.add(ContactListFilter.createAccountFilter(
- account.type, account.name, account.dataSet, icon));
+ account.type, accountName, account.dataSet, icon));
}
// Always show "All", even when there's no accounts. (We may have local contacts)
diff --git a/src/com/android/contacts/common/preference/DefaultAccountPreference.java b/src/com/android/contacts/common/preference/DefaultAccountPreference.java
index 267d259..c32639a 100644
--- a/src/com/android/contacts/common/preference/DefaultAccountPreference.java
+++ b/src/com/android/contacts/common/preference/DefaultAccountPreference.java
@@ -19,12 +19,14 @@
import android.app.AlertDialog;
import android.content.Context;
import android.preference.ListPreference;
+import android.text.TextUtils;
import android.util.AttributeSet;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountTypeWithDataSet;
import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.MoreContactUtils;
import java.util.HashMap;
import java.util.List;
@@ -51,7 +53,12 @@
final AccountTypeManager accountTypeManager = AccountTypeManager.getInstance(getContext());
List<AccountWithDataSet> accounts = accountTypeManager.getAccounts(true);
for (AccountWithDataSet account : accounts) {
- mAccountMap.put(account.name, account);
+ String accountName = account.name;
+ String customLabel = MoreContactUtils.getSimAccountName(getContext(), accountName);
+ if(!TextUtils.isEmpty(customLabel)) {
+ accountName = customLabel;
+ }
+ mAccountMap.put(accountName, account);
}
final Set<String> accountNames = mAccountMap.keySet();
final String[] accountNamesArray = accountNames.toArray(new String[accountNames.size()]);
@@ -74,7 +81,12 @@
@Override
public CharSequence getSummary() {
- return mPreferences.getDefaultAccount();
+ String customLabel = MoreContactUtils.getSimAccountName(getContext(),
+ mPreferences.getDefaultAccount());
+ if(TextUtils.isEmpty(customLabel)) {
+ return mPreferences.getDefaultAccount();
+ }
+ return customLabel;
}
@Override
diff --git a/src/com/android/contacts/common/util/AccountsListAdapter.java b/src/com/android/contacts/common/util/AccountsListAdapter.java
index 65a4a77..d82fd2d 100644
--- a/src/com/android/contacts/common/util/AccountsListAdapter.java
+++ b/src/com/android/contacts/common/util/AccountsListAdapter.java
@@ -17,6 +17,7 @@
package com.android.contacts.common.util;
import android.content.Context;
+import android.graphics.drawable.Drawable;
import android.text.TextUtils.TruncateAt;
import android.view.LayoutInflater;
import android.view.View;
@@ -26,6 +27,7 @@
import android.widget.TextView;
import com.android.contacts.common.R;
+import com.android.contacts.common.MoreContactUtils;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountWithDataSet;
@@ -123,6 +125,11 @@
icon.setImageDrawable(accountType.getDisplayIcon(mContext));
+ MoreContactUtils.setSimOperatorName(account.name, text2, mContext);
+ Drawable customIcon = MoreContactUtils.getDisplayIcon(mContext, account.name);
+ if (customIcon != null) {
+ icon.setImageDrawable(customIcon);
+ }
return resultView;
}