summaryrefslogtreecommitdiff
path: root/InCallUI/src/com/android/incallui/CallCardPresenter.java
diff options
context:
space:
mode:
authorNancy Chen <nancychen@google.com>2014-06-19 14:59:09 -0700
committerNancy Chen <nancychen@google.com>2014-06-23 12:16:22 -0700
commitbd93cb5444e886266b47e504138bcc65e6f09cbe (patch)
tree5eec091d6127dd9b9be7f9a5842e7a2662ad9fa9 /InCallUI/src/com/android/incallui/CallCardPresenter.java
parent1887dab1ca8f5a1242f5e934620787ca587d1c73 (diff)
InCallUI displaying Multi-SIM/Subscription/Wifi calling
Dynamic text and icon to represent information for the provider of the call. This can be the name of the subscription, connection provider, or wifi connection. This will show up at the banner above the name/number of the call for incoming, outgoing, and active calls. Change-Id: I065f12d41f5d62965d82c955aed9ee070628cadc
Diffstat (limited to 'InCallUI/src/com/android/incallui/CallCardPresenter.java')
-rw-r--r--InCallUI/src/com/android/incallui/CallCardPresenter.java74
1 files changed, 61 insertions, 13 deletions
diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java
index 576283211..e2dd14b3d 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -16,15 +16,18 @@
package com.android.incallui;
+import android.content.ComponentName;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.graphics.Bitmap;
+import android.net.Uri;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.telecomm.CallCapabilities;
import android.telecomm.CallServiceDescriptor;
+import android.telecomm.Subscription;
import android.telephony.DisconnectCause;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
@@ -37,6 +40,9 @@ import com.android.incallui.InCallPresenter.InCallState;
import com.android.incallui.InCallPresenter.InCallStateListener;
import com.android.incallui.InCallPresenter.IncomingCallListener;
import com.android.services.telephony.common.AudioMode;
+
+import java.util.List;
+
import com.google.common.base.Preconditions;
/**
@@ -199,10 +205,10 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
mIsWiFiCachedValue = isWiFi;
getUi().setCallState(callState, mPrimary.getDisconnectCause(), bluetoothOn,
- getGatewayLabel(), getGatewayNumber(), isWiFi, isHandoffCapable,
- isHandoffPending);
+ getConnectionLabel(), getConnectionIcon(), getGatewayNumber(), isWiFi,
+ isHandoffCapable, isHandoffPending);
} else {
- getUi().setCallState(callState, DisconnectCause.NOT_VALID, false, null, null,
+ getUi().setCallState(callState, DisconnectCause.NOT_VALID, false, null, null, null,
mIsWiFiCachedValue, false, false);
}
@@ -217,7 +223,7 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
final boolean bluetoothOn = (AudioMode.BLUETOOTH == mode);
getUi().setCallState(mPrimary.getState(), mPrimary.getDisconnectCause(), bluetoothOn,
- getGatewayLabel(), getGatewayNumber(), isWifiCall(),
+ getConnectionLabel(), getConnectionIcon(), getGatewayNumber(), isWifiCall(),
isHandoffCapable(), isHandoffPending());
}
}
@@ -417,10 +423,11 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
final boolean nameIsNumber = nameForCall != null && nameForCall.equals(
mSecondaryContactInfo.number);
ui.setSecondary(true /* show */, nameForCall, nameIsNumber, mSecondaryContactInfo.label,
+ getSecondaryCallProviderLabel(), getSecondaryCallProviderIcon(),
isConference, isGenericConf);
} else {
// reset to nothing so that it starts off blank next time we use it.
- ui.setSecondary(false, null, false, null, isConference, isGenericConf);
+ ui.setSecondary(false, null, false, null, null, null, isConference, isGenericConf);
}
}
@@ -435,19 +442,59 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
}
/**
- * Returns the label for the gateway app for any existing outgoing call.
+ * Return the Drawable object of the icon to display to the left of the connection label.
+ */
+ private Drawable getConnectionIcon() {
+ if (mIsWiFiCachedValue == true) {
+ return mContext.getResources().getDrawable(R.drawable.ic_in_call_wifi);
+ }
+ Subscription subscription = mPrimary.getSubscription();
+ if (subscription != null) {
+ return subscription.getIcon(mContext);
+ }
+ return null;
+ }
+
+ /**
+ * Returns the label (line of text above the number/name) for any given call.
+ * For example, "calling via [Subscription/Google Voice/Wifi]" for outgoing calls.
*/
- private String getGatewayLabel() {
+ private String getConnectionLabel() {
if (hasOutgoingGatewayCall() && getUi() != null) {
+ // Return the label for the gateway app on outgoing calls.
final PackageManager pm = mContext.getPackageManager();
try {
ApplicationInfo info = pm.getApplicationInfo(
mPrimary.getGatewayInfo().getGatewayProviderPackageName(), 0);
- return mContext.getString(R.string.calling_via_template,
- pm.getApplicationLabel(info).toString());
+ return pm.getApplicationLabel(info).toString();
} catch (PackageManager.NameNotFoundException e) {
+ Log.e(this, "Gateway Application Not Found.", e);
+ return null;
}
}
+ Subscription subscription = mPrimary.getSubscription();
+ if (mIsWiFiCachedValue == true || subscription != null) {
+ // Label will be either subscription name or WiFi connection
+ // TODO: get the name of the wifi connection
+ String wifiString = mContext.getString(R.string.wifi_constant);
+ return subscription == null? wifiString : subscription.getLabel(mContext);
+ }
+ return null;
+ }
+
+ private String getSecondaryCallProviderLabel() {
+ Subscription subscription = mSecondary.getSubscription();
+ if (subscription != null) {
+ return subscription.getLabel(mContext);
+ }
+ return null;
+ }
+
+ private Drawable getSecondaryCallProviderIcon() {
+ Subscription subscription = mSecondary.getSubscription();
+ if (subscription != null) {
+ return subscription.getIcon(mContext);
+ }
return null;
}
@@ -510,10 +557,11 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
void setPrimary(String number, String name, boolean nameIsNumber, String label,
Drawable photo, boolean isConference, boolean isGeneric, boolean isSipCall);
void setSecondary(boolean show, String name, boolean nameIsNumber, String label,
- boolean isConference, boolean isGeneric);
- void setCallState(int state, int cause, boolean bluetoothOn,
- String gatewayLabel, String gatewayNumber, boolean isWifi, boolean isHandoffCapable,
- boolean isHandoffPending);
+ String providerLabel, Drawable providerIcon, boolean isConference,
+ boolean isGeneric);
+ void setCallState(int state, int cause, boolean bluetoothOn, String connectionLabel,
+ Drawable connectionIcon, String gatewayNumber, boolean isWifi,
+ boolean isHandoffCapable, boolean isHandoffPending);
void setPrimaryCallElapsedTime(boolean show, String duration);
void setPrimaryName(String name, boolean nameIsNumber);
void setPrimaryImage(Drawable image);