diff options
| author | Kamaljeet Maini <kmaini@cyngn.com> | 2016-03-08 15:45:39 -0800 |
|---|---|---|
| committer | Richard MacGregor <rmacgregor@cyngn.com> | 2016-04-08 10:42:51 -0700 |
| commit | cf732b7076d62e2e2862dd2b320c67f101a2fadf (patch) | |
| tree | 75bef09134517efa26cd3c0d29809d195fea4b3b /src-ambient | |
| parent | ade2cdf6b973a6e9e03a7cacf6f624608c42d7ff (diff) | |
| download | packages_apps_PhoneCommon-cf732b7076d62e2e2862dd2b320c67f101a2fadf.tar.gz packages_apps_PhoneCommon-cf732b7076d62e2e2862dd2b320c67f101a2fadf.tar.bz2 packages_apps_PhoneCommon-cf732b7076d62e2e2862dd2b320c67f101a2fadf.zip | |
Move VoLTE changes to PhoneCommon
While porting VoLTE support from DialerNext to AOSP Dialer, some of
the relevant changes are moved to PhoneCommon.
Change-Id: Id18fe4743af5df133069e889c817937d7847c3b6
Issue-Id: DIALER-720
Diffstat (limited to 'src-ambient')
| -rw-r--r-- | src-ambient/incall/CallMethodSpinnerAdapter.java | 77 |
1 files changed, 65 insertions, 12 deletions
diff --git a/src-ambient/incall/CallMethodSpinnerAdapter.java b/src-ambient/incall/CallMethodSpinnerAdapter.java index 2a6f387..c3a61d3 100644 --- a/src-ambient/incall/CallMethodSpinnerAdapter.java +++ b/src-ambient/incall/CallMethodSpinnerAdapter.java @@ -30,6 +30,7 @@ import android.widget.SpinnerAdapter; import android.widget.TextView; import com.android.phone.common.R; +import com.android.phone.common.util.VolteUtils; import java.util.Collection; import java.util.HashMap; @@ -45,11 +46,14 @@ public class CallMethodSpinnerAdapter extends ArrayAdapter<CallMethodInfo> private final Context mContext; private Map<String, Integer> mComponentMap; + private boolean mShowVolte = false; - public CallMethodSpinnerAdapter(Context context, List<CallMethodInfo> objects) { + public CallMethodSpinnerAdapter(Context context, List<CallMethodInfo> objects, boolean + showVolte) { super(context, 0, objects); mContext = context.getApplicationContext(); processCallMethods(objects); + mShowVolte = showVolte; } /** @@ -114,11 +118,29 @@ public class CallMethodSpinnerAdapter extends ArrayAdapter<CallMethodInfo> @Override public View getView(int position, View convertView, ViewGroup parent) { CallMethodInfo callMethodInfo = getItem(position); - if (convertView == null) { - convertView = LayoutInflater.from(mContext) - .inflate(R.layout.call_method_spinner_item, parent, false); - } + boolean volteInUse = (callMethodInfo.mSubId > 0) && + VolteUtils.isVolteInUse(mContext, callMethodInfo.mSubId); + SpinnerItemViewHolder holder = null; + // Note: if mVolteInUse changes, it invalidates cached views + if (convertView == null || (holder = (SpinnerItemViewHolder)convertView.getTag()) == null + || holder.volteInUse != volteInUse) + { + convertView = LayoutInflater.from(mContext).inflate(R.layout + .call_method_spinner_item, parent, false); + if (holder == null) holder = new SpinnerItemViewHolder(); + convertView.setTag(holder); + holder.volteInUse = volteInUse; + holder.callTypeIcon = (ImageView) convertView.findViewById(R.id + .call_method_spinner_item_image); + holder.volteIcon = (ImageView) convertView.findViewById(R.id + .call_method_spinner_volte_image); + } + if (mShowVolte && volteInUse) { + holder.volteIcon.setVisibility(View.VISIBLE); + } else { + holder.volteIcon.setVisibility(View.GONE); + } setIcon(convertView, callMethodInfo); return convertView; @@ -140,15 +162,33 @@ public class CallMethodSpinnerAdapter extends ArrayAdapter<CallMethodInfo> @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { CallMethodInfo callMethodInfo = getItem(position); - if (convertView == null) { - convertView = LayoutInflater.from(mContext) - .inflate(R.layout.call_method_spinner_dropdown_item, parent, false); - } + boolean volteInUse = (callMethodInfo.mSubId > 0) && + VolteUtils.isVolteInUse(mContext, callMethodInfo.mSubId); + SpinnerDropDownItemViewHolder holder = null; + int tag = volteInUse ? R.string.call_method_spinner_volte_drop_down_tag : + R.string.call_method_spinner_drop_down_tag; + if (convertView == null || (holder = (SpinnerDropDownItemViewHolder) convertView.getTag + (tag)) == null) { + int resId = R.layout.call_method_spinner_dropdown_item; + convertView = LayoutInflater.from(mContext).inflate(resId, parent, false); + holder = new SpinnerDropDownItemViewHolder(); + holder.volteInUse = volteInUse; + holder.callTypeIcon = (ImageView) convertView.findViewById(R.id + .call_method_spinner_item_image); + holder.volteIcon = (ImageView) convertView.findViewById(R.id + .call_method_spinner_volte_image); + holder.textView = (TextView) convertView.findViewById(R.id + .call_method_spinner_item_text); + convertView.setTag(tag, holder); + } + if (mShowVolte && volteInUse) { + holder.volteIcon.setVisibility(View.VISIBLE); + } else { + holder.volteIcon.setVisibility(View.GONE); + } setIcon(convertView, callMethodInfo); - - TextView text=(TextView) convertView.findViewById(R.id.call_method_spinner_item_text); - text.setText(callMethodInfo.mName); + holder.textView.setText(callMethodInfo.mName); return convertView; } @@ -247,4 +287,17 @@ public class CallMethodSpinnerAdapter extends ArrayAdapter<CallMethodInfo> } return String.valueOf(info.hashCode()); } + + private static class SpinnerItemViewHolder { + ImageView callTypeIcon; + ImageView volteIcon; + boolean volteInUse; + } + + private static class SpinnerDropDownItemViewHolder { + ImageView callTypeIcon; + ImageView volteIcon; + TextView textView; + boolean volteInUse; + } } |
