summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanesh M <daneshm90@gmail.com>2016-02-03 16:07:43 -0800
committerDanesh M <daneshm90@gmail.com>2016-02-03 16:21:56 -0800
commit1f31bd847e3871b0e4571db01ffa77be0700b15e (patch)
tree1a3977368bcfe050ee44a834d213939fd54221cd
parenteaa16db73c61aa3e1f32aacb740492456b59f4ac (diff)
downloadpackages_apps_Settings-1f31bd847e3871b0e4571db01ffa77be0700b15e.zip
packages_apps_Settings-1f31bd847e3871b0e4571db01ffa77be0700b15e.tar.gz
packages_apps_Settings-1f31bd847e3871b0e4571db01ffa77be0700b15e.tar.bz2
Settings : Add radio button / selection states for default SIMs
CRACKLING-928 Change-Id: I786d4d921987d483cd0a5fa77976a0b8047d06db
-rw-r--r--res/layout/select_account_list_item.xml60
-rw-r--r--src/com/android/settings/sim/SimDialogActivity.java59
2 files changed, 84 insertions, 35 deletions
diff --git a/res/layout/select_account_list_item.xml b/res/layout/select_account_list_item.xml
index 3587e55..c3d4e3a 100644
--- a/res/layout/select_account_list_item.xml
+++ b/res/layout/select_account_list_item.xml
@@ -16,42 +16,54 @@
<!-- Layout of a single item for displaying sim cards. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="?android:attr/selectableItemBackground" >
+ android:orientation="horizontal"
+ android:gravity="center_vertical"
+ android:paddingStart="12dp"
+ android:paddingEnd="12dp"
+ android:minHeight="?android:attr/listPreferredItemHeightSmall"
+ android:background="@android:color/transparent">
<ImageView android:id="@+id/icon"
android:layout_width="48dp"
android:layout_height="48dp"
android:scaleType="center" />
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_marginStart="15dip"
- android:layout_marginEnd="6dip"
- android:layout_marginTop="6dip"
- android:layout_marginBottom="6dip"
+ <LinearLayout
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_width="0dp"
- android:layout_weight="1" >
+ android:layout_weight="1"
+ android:orientation="vertical"
+ android:gravity="center_vertical">
+
<TextView android:id="@+id/title"
- android:textAppearance="?android:attr/textAppearanceLarge"
- android:gravity="start|center_vertical"
- android:layout_marginLeft="8dp"
- android:layout_width="match_parent"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:textAppearance="?android:attr/textAppearanceListItem"
+ android:textColor="?android:attr/textColorAlertDialogListItem"
+ android:gravity="center_vertical|start"
android:singleLine="true"
- android:ellipsize="marquee"
- android:fadingEdge="horizontal" />
+ android:ellipsize="marquee" />
+
<TextView android:id="@+id/summary"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:gravity="start|center_vertical"
- android:layout_marginLeft="8dp"
- android:layout_width="match_parent"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_below="@id/title"
- android:textColor="?android:attr/textColorSecondary"
- android:layout_alignStart="@id/title" />
+ android:textAppearance="?android:attr/textAppearanceListItemSecondary"
+ android:textColor="?android:attr/textColorAlertDialogListItem"
+ android:gravity="center_vertical|start"
+ android:singleLine="true"
+ android:ellipsize="marquee" />
+
</LinearLayout>
-</LinearLayout>
+
+ <RadioButton
+ android:id="@+id/radio"
+ android:layout_width="35dip"
+ android:layout_height="wrap_content"
+ android:paddingEnd="12dip"
+ android:gravity="center_vertical"
+ android:focusable="false"
+ android:clickable="false" />
+
+</LinearLayout> \ No newline at end of file
diff --git a/src/com/android/settings/sim/SimDialogActivity.java b/src/com/android/settings/sim/SimDialogActivity.java
index 79dc40a..63124d7 100644
--- a/src/com/android/settings/sim/SimDialogActivity.java
+++ b/src/com/android/settings/sim/SimDialogActivity.java
@@ -40,6 +40,7 @@ import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter;
+import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
@@ -175,7 +176,11 @@ public class SimDialogActivity extends Activity {
switch (id) {
case DATA_PICK:
sir = subInfoList.get(value);
- setDefaultDataSubId(context, sir.getSubscriptionId());
+ SubscriptionInfo defaultSub = subscriptionManager
+ .getDefaultDataSubscriptionInfo();
+ if (defaultSub.getSubscriptionId() != sir.getSubscriptionId()) {
+ setDefaultDataSubId(context, sir.getSubscriptionId());
+ }
break;
case CALLS_PICK:
final TelecomManager telecomManager =
@@ -232,19 +237,25 @@ public class SimDialogActivity extends Activity {
}
};
+ int currentIndex = 0;
ArrayList<SubscriptionInfo> callsSubInfoList = new ArrayList<SubscriptionInfo>();
if (id == CALLS_PICK) {
final TelecomManager telecomManager = TelecomManager.from(context);
final TelephonyManager telephonyManager = TelephonyManager.from(context);
final Iterator<PhoneAccountHandle> phoneAccounts =
telecomManager.getCallCapablePhoneAccounts().listIterator();
-
+ PhoneAccountHandle defaultPhoneAccount =
+ telecomManager.getUserSelectedOutgoingPhoneAccount();
list.add(getResources().getString(R.string.sim_calls_ask_first_prefs_title));
callsSubInfoList.add(null);
while (phoneAccounts.hasNext()) {
final PhoneAccount phoneAccount =
telecomManager.getPhoneAccount(phoneAccounts.next());
list.add((String)phoneAccount.getLabel());
+ if (defaultPhoneAccount != null && defaultPhoneAccount.equals(
+ phoneAccount.getAccountHandle())) {
+ currentIndex = list.size() - 1;
+ }
int subId = telephonyManager.getSubIdForPhoneAccount(phoneAccount);
if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
final SubscriptionInfo sir = SubscriptionManager.from(context)
@@ -257,6 +268,18 @@ public class SimDialogActivity extends Activity {
} else if ((id == SMS_PICK)){
list.add(getResources().getString(R.string.sim_calls_ask_first_prefs_title));
smsSubInfoList.add(null);
+ SubscriptionInfo defaultSub = subscriptionManager.getActiveSubscriptionInfo(
+ SubscriptionManager.getDefaultSmsSubId());
+ boolean isSMSPrompt = false;
+ try {
+ isSMSPrompt = mExtTelephony.isSMSPromptEnabled();
+ } catch (RemoteException | NullPointerException e) {
+ // Assume sms prompt is disabled
+ }
+ // External telephony interfaces may not exist, fall back to our impl
+ if (mExtTelephony == null) {
+ isSMSPrompt = SmsManager.getDefault().isSMSPromptEnabled();
+ }
for (int i = 0; i < selectableSubInfoLength; ++i) {
final SubscriptionInfo sir = subInfoList.get(i);
smsSubInfoList.add(sir);
@@ -265,8 +288,13 @@ public class SimDialogActivity extends Activity {
displayName = "";
}
list.add(displayName.toString());
+ if (!isSMSPrompt && defaultSub != null && sir.getSubscriptionId()
+ == defaultSub.getSubscriptionId()) {
+ currentIndex = list.size() - 1;
+ }
}
} else {
+ SubscriptionInfo defaultSub = subscriptionManager.getDefaultDataSubscriptionInfo();
for (int i = 0; i < selectableSubInfoLength; ++i) {
final SubscriptionInfo sir = subInfoList.get(i);
CharSequence displayName = sir.getDisplayName();
@@ -274,6 +302,10 @@ public class SimDialogActivity extends Activity {
displayName = "";
}
list.add(displayName.toString());
+ if (defaultSub != null && defaultSub.getSubscriptionId()
+ == sir.getSubscriptionId()) {
+ currentIndex = list.size() - 1;
+ }
}
}
@@ -281,13 +313,6 @@ public class SimDialogActivity extends Activity {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
- ListAdapter adapter = new SelectAccountListAdapter(
- id == CALLS_PICK ? callsSubInfoList :
- (id == SMS_PICK ? smsSubInfoList: subInfoList),
- builder.getContext(),
- R.layout.select_account_list_item,
- arr, id);
-
switch (id) {
case DATA_PICK:
builder.setTitle(R.string.select_sim_for_data);
@@ -303,6 +328,12 @@ public class SimDialogActivity extends Activity {
+ id + " in SIM dialog.");
}
+ ListAdapter adapter = new SelectAccountListAdapter(
+ id == CALLS_PICK ? callsSubInfoList :
+ (id == SMS_PICK ? smsSubInfoList: subInfoList),
+ builder.getContext(),
+ R.layout.select_account_list_item,
+ arr, id, currentIndex);
Dialog dialog = builder.setAdapter(adapter, selectionListener).create();
dialog.setOnKeyListener(keyListener);
@@ -323,14 +354,16 @@ public class SimDialogActivity extends Activity {
private int mDialogId;
private final float OPACITY = 0.54f;
private List<SubscriptionInfo> mSubInfoList;
+ private final int mSelectionIndex;
public SelectAccountListAdapter(List<SubscriptionInfo> subInfoList,
- Context context, int resource, String[] arr, int dialogId) {
+ Context context, int resource, String[] arr, int dialogId, int selectionIndex) {
super(context, resource, arr);
mContext = context;
mResId = resource;
mDialogId = dialogId;
mSubInfoList = subInfoList;
+ mSelectionIndex = selectionIndex;
}
@Override
@@ -347,6 +380,7 @@ public class SimDialogActivity extends Activity {
holder.title = (TextView) rowView.findViewById(R.id.title);
holder.summary = (TextView) rowView.findViewById(R.id.summary);
holder.icon = (ImageView) rowView.findViewById(R.id.icon);
+ holder.radio = (RadioButton) rowView.findViewById(R.id.radio);
rowView.setTag(holder);
} else {
rowView = convertView;
@@ -356,15 +390,17 @@ public class SimDialogActivity extends Activity {
final SubscriptionInfo sir = mSubInfoList.get(position);
if (sir == null) {
holder.title.setText(getItem(position));
- holder.summary.setText("");
+ holder.summary.setVisibility(View.GONE);
holder.icon.setImageDrawable(getResources()
.getDrawable(R.drawable.ic_live_help));
holder.icon.setAlpha(OPACITY);
} else {
holder.title.setText(sir.getDisplayName());
holder.summary.setText(sir.getNumber());
+ holder.summary.setVisibility(View.VISIBLE);
holder.icon.setImageBitmap(sir.createIconBitmap(mContext));
}
+ holder.radio.setChecked(position == mSelectionIndex);
return rowView;
}
@@ -372,6 +408,7 @@ public class SimDialogActivity extends Activity {
TextView title;
TextView summary;
ImageView icon;
+ RadioButton radio;
}
}
}