Merge "Import translations. DO NOT MERGE"
diff --git a/InCallUI/res/drawable-hdpi/business_unknown.png b/InCallUI/res/drawable-hdpi/business_unknown.png
new file mode 100644
index 0000000..b369939
--- /dev/null
+++ b/InCallUI/res/drawable-hdpi/business_unknown.png
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/picture_unknown.png b/InCallUI/res/drawable-hdpi/picture_unknown.png
index ba46da1..26d2be1 100644
--- a/InCallUI/res/drawable-hdpi/picture_unknown.png
+++ b/InCallUI/res/drawable-hdpi/picture_unknown.png
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/business_unknown.png b/InCallUI/res/drawable-mdpi/business_unknown.png
new file mode 100644
index 0000000..eac97a9
--- /dev/null
+++ b/InCallUI/res/drawable-mdpi/business_unknown.png
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/picture_unknown.png b/InCallUI/res/drawable-mdpi/picture_unknown.png
index 995df75..1ee333c 100644
--- a/InCallUI/res/drawable-mdpi/picture_unknown.png
+++ b/InCallUI/res/drawable-mdpi/picture_unknown.png
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/business_unknown.png b/InCallUI/res/drawable-xhdpi/business_unknown.png
new file mode 100644
index 0000000..aa84456
--- /dev/null
+++ b/InCallUI/res/drawable-xhdpi/business_unknown.png
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/picture_unknown.png b/InCallUI/res/drawable-xhdpi/picture_unknown.png
index b4bd366..db74fd9 100644
--- a/InCallUI/res/drawable-xhdpi/picture_unknown.png
+++ b/InCallUI/res/drawable-xhdpi/picture_unknown.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/business_unknown.png b/InCallUI/res/drawable-xxhdpi/business_unknown.png
new file mode 100644
index 0000000..6273bb3
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/business_unknown.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/picture_unknown.png b/InCallUI/res/drawable-xxhdpi/picture_unknown.png
index 4127593..38bec2c 100644
--- a/InCallUI/res/drawable-xxhdpi/picture_unknown.png
+++ b/InCallUI/res/drawable-xxhdpi/picture_unknown.png
Binary files differ
diff --git a/InCallUI/res/layout/call_button_fragment.xml b/InCallUI/res/layout/call_button_fragment.xml
index 06de6d9..338190c 100644
--- a/InCallUI/res/layout/call_button_fragment.xml
+++ b/InCallUI/res/layout/call_button_fragment.xml
@@ -51,6 +51,7 @@
<ImageButton android:id="@+id/endButton"
style="@style/InCallEndButton"
android:layout_width="match_parent"
+ android:layout_marginTop="2dp"
android:src="@drawable/ic_in_call_phone_hangup"
android:background="@drawable/end_call_background"
android:contentDescription="@string/onscreenEndCallText"/>
diff --git a/InCallUI/res/values/colors.xml b/InCallUI/res/values/colors.xml
index 9d149a4..53d8f52 100644
--- a/InCallUI/res/values/colors.xml
+++ b/InCallUI/res/values/colors.xml
@@ -42,5 +42,5 @@
<drawable name="end_call_pressed_state">#ff4e4e</drawable>
<!-- Used when the End Call button is disabled -->
- <drawable name="end_call_disabled_state">#00000000</drawable>
+ <drawable name="end_call_disabled_state">#303030</drawable>
</resources>
diff --git a/InCallUI/src/com/android/incallui/CallButtonFragment.java b/InCallUI/src/com/android/incallui/CallButtonFragment.java
index 2098694..b0fdda1 100644
--- a/InCallUI/src/com/android/incallui/CallButtonFragment.java
+++ b/InCallUI/src/com/android/incallui/CallButtonFragment.java
@@ -189,12 +189,23 @@
}
@Override
- public void setVisible(boolean on) {
- if (on) {
- getView().setVisibility(View.VISIBLE);
- } else {
- getView().setVisibility(View.INVISIBLE);
+ public void setEnabled(boolean isEnabled) {
+ View view = getView();
+ if (view.getVisibility() != View.VISIBLE) {
+ view.setVisibility(View.VISIBLE);
}
+
+ // The main end-call button spanning across the screen.
+ mEndCallButton.setEnabled(isEnabled);
+
+ // The smaller buttons laid out horizontally just below the end-call button.
+ mMuteButton.setEnabled(isEnabled);
+ mAudioButton.setEnabled(isEnabled);
+ mHoldButton.setEnabled(isEnabled);
+ mShowDialpadButton.setEnabled(isEnabled);
+ mMergeButton.setEnabled(isEnabled);
+ mAddCallButton.setEnabled(isEnabled);
+ mSwapButton.setEnabled(isEnabled);
}
@Override
diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index 6840a15..3642630 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -221,14 +221,14 @@
return;
}
- final boolean isVisible = state.isConnectingOrConnected() &&
+ final boolean isEnabled = state.isConnectingOrConnected() &&
!state.isIncoming() && call != null;
- ui.setVisible(isVisible);
+ ui.setEnabled(isEnabled);
Log.d(this, "Updating call UI for call: ", call);
- if (isVisible) {
+ if (isEnabled) {
Log.v(this, "Show hold ", call.can(Capabilities.SUPPORT_HOLD));
Log.v(this, "Enable hold", call.can(Capabilities.HOLD));
Log.v(this, "Show merge ", call.can(Capabilities.MERGE_CALLS));
@@ -335,7 +335,7 @@
}
public interface CallButtonUi extends Ui {
- void setVisible(boolean on);
+ void setEnabled(boolean on);
void setMute(boolean on);
void enableMute(boolean enabled);
void setHold(boolean on);
diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java
index 4ff4d65..949d718 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -261,6 +261,9 @@
if (entry.name != null) {
Log.d(TAG, "Contact found: " + entry);
}
+ if (entry.personUri != null) {
+ CallerInfoUtils.sendViewNotification(mContext, entry.personUri);
+ }
}
@Override
diff --git a/InCallUI/src/com/android/incallui/CallerInfoUtils.java b/InCallUI/src/com/android/incallui/CallerInfoUtils.java
index 2971a29..3d2c5c4 100644
--- a/InCallUI/src/com/android/incallui/CallerInfoUtils.java
+++ b/InCallUI/src/com/android/incallui/CallerInfoUtils.java
@@ -1,6 +1,8 @@
package com.android.incallui;
import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
import android.text.TextUtils;
import com.android.services.telephony.common.Call;
@@ -9,7 +11,7 @@
import java.util.Arrays;
/**
- * TODO: Insert description here. (generated by yorkelee)
+ * Utility methods for contact and caller info related functionality
*/
public class CallerInfoUtils {
@@ -18,6 +20,12 @@
/** Define for not a special CNAP string */
private static final int CNAP_SPECIAL_CASE_NO = -1;
+ private static final String VIEW_NOTIFICATION_ACTION =
+ "com.android.contacts.VIEW_NOTIFICATION";
+ private static final String VIEW_NOTIFICATION_PACKAGE = "com.android.contacts";
+ private static final String VIEW_NOTIFICATION_CLASS =
+ "com.android.contacts.ViewNotificationService";
+
public CallerInfoUtils() {
}
@@ -172,4 +180,14 @@
}
return builder.toString();
}
+
+ /**
+ * Send a notification that that we are viewing a particular contact, so that the high-res
+ * photo is downloaded by the sync adapter.
+ */
+ public static void sendViewNotification(Context context, Uri contactUri) {
+ final Intent intent = new Intent(VIEW_NOTIFICATION_ACTION, contactUri);
+ intent.setClassName(VIEW_NOTIFICATION_PACKAGE, VIEW_NOTIFICATION_CLASS);
+ context.startService(intent);
+ }
}
diff --git a/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java b/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java
index d0f62d7..1ba88cb 100644
--- a/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java
+++ b/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java
@@ -64,6 +64,8 @@
Log.v(this, "Number of existing calls is " +
String.valueOf(call.getChildCallIds().size()));
update(callList);
+ } else {
+ getUi().setVisible(false);
}
} else {
getUi().setVisible(false);
diff --git a/InCallUI/src/com/android/incallui/ContactInfoCache.java b/InCallUI/src/com/android/incallui/ContactInfoCache.java
index 13f8dd0..4b482cb 100644
--- a/InCallUI/src/com/android/incallui/ContactInfoCache.java
+++ b/InCallUI/src/com/android/incallui/ContactInfoCache.java
@@ -234,6 +234,12 @@
entry.location = oldEntry.location;
}
+ // If no image and it's a business, switch to using the default business avatar.
+ if (info.getImageUrl() == null && info.isBusiness()) {
+ Log.d(TAG, "Business has no image. Using default.");
+ entry.photo = mContext.getResources().getDrawable(R.drawable.business_unknown);
+ }
+
// Add the contact info to the cache.
mInfoMap.put(mCallId, entry);
sendInfoNotifications(mCallId, entry);
diff --git a/InCallUI/src/com/android/incallui/InCallPresenter.java b/InCallUI/src/com/android/incallui/InCallPresenter.java
index 541661c..4b38939 100644
--- a/InCallUI/src/com/android/incallui/InCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/InCallPresenter.java
@@ -246,7 +246,7 @@
*/
@Override
public void onDisconnect(Call call) {
- mInCallActivity.hideDialpadForDisconnect();
+ hideDialpadForDisconnect();
maybeShowErrorDialogOnDisconnect(call);
// We need to do the run the same code as onCallListChange.
@@ -487,6 +487,15 @@
}
/**
+ * Hides the dialpad. Called when a call is disconnected (Requires hiding dialpad).
+ */
+ private void hideDialpadForDisconnect() {
+ if (isActivityStarted()) {
+ mInCallActivity.hideDialpadForDisconnect();
+ }
+ }
+
+ /**
* When the state of in-call changes, this is the first method to get called. It determines if
* the UI needs to be started or finished depending on the new state and does it.
*/
diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
index 89d0744..1690c54 100644
--- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java
+++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
@@ -329,15 +329,24 @@
* Gets a large icon from the contact info object to display in the notification.
*/
private Bitmap getLargeIconToDisplay(ContactCacheEntry contactInfo, boolean isConference) {
+ Bitmap largeIcon = null;
if (isConference) {
- return BitmapFactory.decodeResource(mContext.getResources(),
+ largeIcon = BitmapFactory.decodeResource(mContext.getResources(),
R.drawable.picture_conference);
}
if (contactInfo.photo != null && (contactInfo.photo instanceof BitmapDrawable)) {
- return ((BitmapDrawable) contactInfo.photo).getBitmap();
+ largeIcon = ((BitmapDrawable) contactInfo.photo).getBitmap();
}
- return null;
+ if (largeIcon != null) {
+ final int height = (int) mContext.getResources().getDimension(
+ android.R.dimen.notification_large_icon_height);
+ final int width = (int) mContext.getResources().getDimension(
+ android.R.dimen.notification_large_icon_width);
+ largeIcon = Bitmap.createScaledBitmap(largeIcon, width, height, false);
+ }
+
+ return largeIcon;
}
/**
diff --git a/InCallUI/src/com/android/incallui/service/PhoneNumberService.java b/InCallUI/src/com/android/incallui/service/PhoneNumberService.java
index 942bf42..24303cd 100644
--- a/InCallUI/src/com/android/incallui/service/PhoneNumberService.java
+++ b/InCallUI/src/com/android/incallui/service/PhoneNumberService.java
@@ -67,5 +67,6 @@
public String getPhoneLabel();
public String getNormalizedNumber();
public String getImageUrl();
+ public boolean isBusiness();
}
}