diff options
author | Danesh M <daneshm90@gmail.com> | 2016-02-03 16:07:43 -0800 |
---|---|---|
committer | Danesh M <daneshm90@gmail.com> | 2016-02-03 16:21:56 -0800 |
commit | 1f31bd847e3871b0e4571db01ffa77be0700b15e (patch) | |
tree | 1a3977368bcfe050ee44a834d213939fd54221cd | |
parent | eaa16db73c61aa3e1f32aacb740492456b59f4ac (diff) | |
download | packages_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.xml | 60 | ||||
-rw-r--r-- | src/com/android/settings/sim/SimDialogActivity.java | 59 |
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; } } } |