summaryrefslogtreecommitdiffstats
path: root/src-ambient
diff options
context:
space:
mode:
authorKamaljeet Maini <kmaini@cyngn.com>2016-03-08 15:45:39 -0800
committerRichard MacGregor <rmacgregor@cyngn.com>2016-04-08 10:42:51 -0700
commitcf732b7076d62e2e2862dd2b320c67f101a2fadf (patch)
tree75bef09134517efa26cd3c0d29809d195fea4b3b /src-ambient
parentade2cdf6b973a6e9e03a7cacf6f624608c42d7ff (diff)
downloadpackages_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.java77
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;
+ }
}