summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--InCallUI/res/drawable-hdpi/picture_dialing.pngbin0 -> 2509 bytes
-rw-r--r--InCallUI/res/drawable-ldrtl-hdpi/picture_dialing.pngbin0 -> 9815 bytes
-rw-r--r--InCallUI/res/drawable-ldrtl-mdpi/picture_dialing.pngbin0 -> 7473 bytes
-rw-r--r--InCallUI/res/drawable-ldrtl-xhdpi/picture_dialing.pngbin0 -> 12979 bytes
-rw-r--r--InCallUI/res/drawable-mdpi/picture_dialing.pngbin0 -> 1480 bytes
-rw-r--r--InCallUI/res/drawable-xhdpi/picture_dialing.pngbin0 -> 3707 bytes
-rw-r--r--InCallUI/res/drawable-xxhdpi/picture_dialing.pngbin0 -> 10653 bytes
-rw-r--r--InCallUI/src/com/android/incallui/CallButtonFragment.java16
-rw-r--r--InCallUI/src/com/android/incallui/CallButtonPresenter.java32
-rw-r--r--InCallUI/src/com/android/incallui/CallCardFragment.java26
-rw-r--r--InCallUI/src/com/android/incallui/CallCardPresenter.java105
11 files changed, 107 insertions, 72 deletions
diff --git a/InCallUI/res/drawable-hdpi/picture_dialing.png b/InCallUI/res/drawable-hdpi/picture_dialing.png
new file mode 100644
index 000000000..6311f693b
--- /dev/null
+++ b/InCallUI/res/drawable-hdpi/picture_dialing.png
Binary files differ
diff --git a/InCallUI/res/drawable-ldrtl-hdpi/picture_dialing.png b/InCallUI/res/drawable-ldrtl-hdpi/picture_dialing.png
new file mode 100644
index 000000000..cb587a88c
--- /dev/null
+++ b/InCallUI/res/drawable-ldrtl-hdpi/picture_dialing.png
Binary files differ
diff --git a/InCallUI/res/drawable-ldrtl-mdpi/picture_dialing.png b/InCallUI/res/drawable-ldrtl-mdpi/picture_dialing.png
new file mode 100644
index 000000000..4047b2258
--- /dev/null
+++ b/InCallUI/res/drawable-ldrtl-mdpi/picture_dialing.png
Binary files differ
diff --git a/InCallUI/res/drawable-ldrtl-xhdpi/picture_dialing.png b/InCallUI/res/drawable-ldrtl-xhdpi/picture_dialing.png
new file mode 100644
index 000000000..f167ecbe8
--- /dev/null
+++ b/InCallUI/res/drawable-ldrtl-xhdpi/picture_dialing.png
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/picture_dialing.png b/InCallUI/res/drawable-mdpi/picture_dialing.png
new file mode 100644
index 000000000..b81b6037e
--- /dev/null
+++ b/InCallUI/res/drawable-mdpi/picture_dialing.png
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/picture_dialing.png b/InCallUI/res/drawable-xhdpi/picture_dialing.png
new file mode 100644
index 000000000..792cd8efe
--- /dev/null
+++ b/InCallUI/res/drawable-xhdpi/picture_dialing.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/picture_dialing.png b/InCallUI/res/drawable-xxhdpi/picture_dialing.png
new file mode 100644
index 000000000..17d45f55b
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/picture_dialing.png
Binary files differ
diff --git a/InCallUI/src/com/android/incallui/CallButtonFragment.java b/InCallUI/src/com/android/incallui/CallButtonFragment.java
index e53a34726..f79ed40f6 100644
--- a/InCallUI/src/com/android/incallui/CallButtonFragment.java
+++ b/InCallUI/src/com/android/incallui/CallButtonFragment.java
@@ -55,7 +55,7 @@ public class CallButtonFragment
private View mEndCallButton;
private View mExtraRowButton;
private View mManageConferenceButton;
- private View mCDMAMergeButton;
+ private View mGenericMergeButton;
@Override
CallButtonPresenter createPresenter() {
@@ -88,7 +88,13 @@ public class CallButtonFragment
getPresenter().manageConferenceButtonClicked();
}
});
- mCDMAMergeButton = parent.findViewById(R.id.cdmaMergeButton);
+ mGenericMergeButton = parent.findViewById(R.id.cdmaMergeButton);
+ mGenericMergeButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ getPresenter().mergeClicked();
+ }
+ });
mEndCallButton = parent.findViewById(R.id.endButton);
mEndCallButton.setOnClickListener(new View.OnClickListener() {
@@ -502,14 +508,14 @@ public class CallButtonFragment
public void showManageConferenceCallButton() {
mExtraRowButton.setVisibility(View.VISIBLE);
mManageConferenceButton.setVisibility(View.VISIBLE);
- mCDMAMergeButton.setVisibility(View.GONE);
+ mGenericMergeButton.setVisibility(View.GONE);
}
@Override
- public void showCDMAMergeButton() {
+ public void showGenericMergeButton() {
mExtraRowButton.setVisibility(View.VISIBLE);
mManageConferenceButton.setVisibility(View.GONE);
- mCDMAMergeButton.setVisibility(View.VISIBLE);
+ mGenericMergeButton.setVisibility(View.VISIBLE);
}
@Override
diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index 6b05ff5c7..db9876897 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -226,8 +226,12 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto
final boolean canMerge = call.can(Capabilities.MERGE_CALLS);
final boolean canAdd = call.can(Capabilities.ADD_CALL);
+ final boolean isGenericConference = call.can(Capabilities.GENERIC_CONFERENCE);
- if (canMerge) {
+ final boolean showGenericMerge = isGenericConference && canMerge;
+ final boolean showMerge = !isGenericConference && canMerge;
+
+ if (showMerge) {
ui.showMerge(true);
ui.showAddCall(false);
} else {
@@ -258,20 +262,18 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto
//
// - "Manage conference" (used only on GSM devices)
// - "Merge" button (used only on CDMA devices)
- // TODO(klp) Add cdma merge button
- final boolean showCdmaMerge = false;
-// (phoneType == PhoneConstants.PHONE_TYPE_CDMA) && inCallControlState.canMerge;
- final boolean showExtraButtonRow =
- (showCdmaMerge || call.isConferenceCall()) && !getUi().isDialpadVisible();
+
+ final boolean showManageConference = (call.isConferenceCall() && !isGenericConference);
+ final boolean showExtraButtonRow = (showGenericMerge || showManageConference) &&
+ !getUi().isDialpadVisible();
+
+ Log.i(this, "isGeneric: " + isGenericConference);
+ Log.i(this, "showManageConference : " + showManageConference);
+ Log.i(this, "showGenericMerge: " + showGenericMerge);
if (showExtraButtonRow) {
- // Need to set up mCdmaMergeButton and mManageConferenceButton if this is the first
- // time they're visible.
- // TODO(klp) add cdma merge button
-// if (mCdmaMergeButton == null) {
-// setupExtraButtons();
-// }
-// mCdmaMergeButton.setVisibility(showCdmaMerge ? View.VISIBLE : View.GONE);
- if (call.isConferenceCall()) {
+ if (showGenericMerge) {
+ getUi().showGenericMergeButton();
+ } else if (showManageConference) {
getUi().showManageConferenceCallButton();
}
} else {
@@ -296,7 +298,7 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto
void setAudio(int mode);
void setSupportedAudio(int mask);
void showManageConferenceCallButton();
- void showCDMAMergeButton();
+ void showGenericMergeButton();
void hideExtraRow();
void displayManageConferencePanel(boolean on);
}
diff --git a/InCallUI/src/com/android/incallui/CallCardFragment.java b/InCallUI/src/com/android/incallui/CallCardFragment.java
index af3705a06..49ee786cd 100644
--- a/InCallUI/src/com/android/incallui/CallCardFragment.java
+++ b/InCallUI/src/com/android/incallui/CallCardFragment.java
@@ -168,12 +168,12 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
@Override
public void setPrimary(String number, String name, boolean nameIsNumber, String label,
- Drawable photo, boolean isConference, boolean isSipCall) {
+ Drawable photo, boolean isConference, boolean isGeneric, boolean isSipCall) {
Log.d(this, "Setting primary call");
if (isConference) {
- name = getView().getResources().getString(R.string.card_title_conf_call);
- photo = getView().getResources().getDrawable(R.drawable.picture_conference);
+ name = getConferenceString(isGeneric);
+ photo = getConferencePhoto(isGeneric);
nameIsNumber = false;
}
@@ -192,12 +192,12 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
@Override
public void setSecondary(boolean show, String name, boolean nameIsNumber, String label,
- Drawable photo, boolean isConference) {
+ Drawable photo, boolean isConference, boolean isGeneric) {
if (show) {
if (isConference) {
- name = getView().getResources().getString(R.string.card_title_conf_call);
- photo = getView().getResources().getDrawable(R.drawable.picture_conference);
+ name = getConferenceString(isGeneric);
+ photo = getConferencePhoto(isGeneric);
nameIsNumber = false;
}
@@ -316,10 +316,22 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
AnimationUtils.Fade.show(view);
} else {
AnimationUtils.startCrossFade(view, current, photo);
- mPhoto.setVisibility(View.VISIBLE);
+ view.setVisibility(View.VISIBLE);
}
}
+ private String getConferenceString(boolean isGeneric) {
+ Log.v(this, "isGenericString: " + isGeneric);
+ final int resId = isGeneric ? R.string.card_title_in_call : R.string.card_title_conf_call;
+ return getView().getResources().getString(resId);
+ }
+
+ private Drawable getConferencePhoto(boolean isGeneric) {
+ Log.v(this, "isGenericPhoto: " + isGeneric);
+ final int resId = isGeneric ? R.drawable.picture_dialing : R.drawable.picture_conference;
+ return getView().getResources().getDrawable(resId);
+ }
+
private void setBluetoothOn(boolean onOff) {
// Also, display a special icon (alongside the "Incoming call"
// label) if there's an incoming call and audio will be routed
diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java
index 12c14e8ce..1830f054c 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -33,6 +33,7 @@ import com.android.incallui.InCallPresenter.InCallStateListener;
import com.android.incallui.InCallPresenter.IncomingCallListener;
import com.android.services.telephony.common.AudioMode;
import com.android.services.telephony.common.Call;
+import com.android.services.telephony.common.Call.Capabilities;
import com.android.services.telephony.common.CallIdentification;
import com.google.common.base.Preconditions;
@@ -74,15 +75,13 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
final CallIdentification identification = call.getIdentification();
- // TODO(klp): Logic to determine which ui field get what data resides in
- // contactInfoCache.
- // It needs to be moved so it can be re-used.
- mPrimaryContactInfo = ContactInfoCache.buildCacheEntryFromCall(mContext, identification,
- call.getState() == Call.State.INCOMING);
-
// start processing lookups right away.
- startContactInfoSearch(identification, true, call.isConferenceCall(),
- call.getState() == Call.State.INCOMING);
+ if (!call.isConferenceCall()) {
+ startContactInfoSearch(identification, true,
+ call.getState() == Call.State.INCOMING);
+ } else {
+ updateContactEntry(null, true, true);
+ }
}
}
@@ -150,35 +149,31 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
Log.d(this, "Primary call: " + primary);
Log.d(this, "Secondary call: " + secondary);
- if (primary != null) {
- if (mPrimary == null || mPrimary.getCallId() != primary.getCallId()) {
- // primary call has changed
- mPrimaryContactInfo = ContactInfoCache.buildCacheEntryFromCall(mContext,
- primary.getIdentification(), primary.getState() == Call.State.INCOMING);
- updatePrimaryDisplayInfo(mPrimaryContactInfo, isConference(primary));
- startContactInfoSearch(primary.getIdentification(), true,
- primary.isConferenceCall(), primary.getState() == Call.State.INCOMING);
- }
+ final boolean primaryChanged = !areCallsSame(mPrimary, primary);
+ final boolean secondaryChanged = !areCallsSame(mSecondary, secondary);
+ mSecondary = secondary;
+ mPrimary = primary;
+
+ if (primaryChanged && mPrimary != null) {
+ // primary call has changed
+ mPrimaryContactInfo = ContactInfoCache.buildCacheEntryFromCall(mContext,
+ mPrimary.getIdentification(), mPrimary.getState() == Call.State.INCOMING);
+ updatePrimaryDisplayInfo(mPrimaryContactInfo, isConference(mPrimary));
+ maybeStartSearch(mPrimary, true);
}
- if (secondary == null) {
+ if (mSecondary == null) {
// Secondary call may have ended. Update the ui.
mSecondaryContactInfo = null;
updateSecondaryDisplayInfo(false);
- } else {
- if (mSecondary == null || mSecondary.getCallId() != secondary.getCallId()) {
- // secondary call has changed
- mSecondaryContactInfo = ContactInfoCache.buildCacheEntryFromCall(mContext,
- secondary.getIdentification(), secondary.getState() == Call.State.INCOMING);
- updateSecondaryDisplayInfo(secondary.isConferenceCall());
- startContactInfoSearch(secondary.getIdentification(), false,
- secondary.isConferenceCall(), secondary.getState() == Call.State.INCOMING);
- }
+ } else if (secondaryChanged) {
+ // secondary call has changed
+ mSecondaryContactInfo = ContactInfoCache.buildCacheEntryFromCall(mContext,
+ mSecondary.getIdentification(), mSecondary.getState() == Call.State.INCOMING);
+ updateSecondaryDisplayInfo(mSecondary.isConferenceCall());
+ maybeStartSearch(mSecondary, false);
}
- mPrimary = primary;
- mSecondary = secondary;
-
// Start/Stop the call time update timer
if (mPrimary != null && mPrimary.getState() == Call.State.ACTIVE) {
Log.d(this, "Starting the calltime timer");
@@ -233,18 +228,36 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
}
}
+ private boolean areCallsSame(Call call1, Call call2) {
+ if (call1 == null && call2 == null) {
+ return true;
+ } else if (call1 == null || call2 == null) {
+ return false;
+ }
+
+ // otherwise compare call Ids
+ return call1.getCallId() == call2.getCallId();
+ }
+
+ private void maybeStartSearch(Call call, boolean isPrimary) {
+ // no need to start search for conference calls which show generic info.
+ if (call != null && !call.isConferenceCall()) {
+ startContactInfoSearch(call.getIdentification(), isPrimary,
+ call.getState() == Call.State.INCOMING);
+ }
+ }
+
/**
* Starts a query for more contact data for the save primary and secondary calls.
*/
private void startContactInfoSearch(final CallIdentification identification,
- final boolean isPrimary, final boolean isConference, boolean isIncoming) {
-
+ final boolean isPrimary, boolean isIncoming) {
final ContactInfoCache cache = ContactInfoCache.getInstance(mContext);
cache.findInfo(identification, isIncoming, new ContactInfoCacheCallback() {
@Override
public void onContactInfoComplete(int callId, ContactCacheEntry entry) {
- updateContactEntry(entry, isPrimary, isConference);
+ updateContactEntry(entry, isPrimary, false);
if (entry.name != null) {
Log.d(TAG, "Contact found: " + entry);
}
@@ -266,11 +279,12 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
});
}
- private boolean isConference(Call call) {
- if (call == null) {
- return false;
- }
- return call.isConferenceCall();
+ private static boolean isConference(Call call) {
+ return call != null && call.isConferenceCall();
+ }
+
+ private static boolean isGenericConference(Call call) {
+ return call != null && call.can(Capabilities.GENERIC_CONFERENCE);
}
private void updateContactEntry(ContactCacheEntry entry, boolean isPrimary,
@@ -332,15 +346,15 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
return;
}
+ final boolean isGenericConf = isGenericConference(mPrimary);
if (entry != null) {
final String name = getNameForCall(entry);
final String number = getNumberForCall(entry);
final boolean nameIsNumber = name != null && name.equals(entry.number);
ui.setPrimary(number, name, nameIsNumber, entry.label,
- entry.photo, isConference, entry.isSipCall);
+ entry.photo, isConference, isGenericConf, entry.isSipCall);
} else {
- // reset to nothing (like at end of call)
- ui.setPrimary(null, null, false, null, null, false, false);
+ ui.setPrimary(null, null, false, null, null, isConference, isGenericConf, false);
}
}
@@ -352,6 +366,7 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
return;
}
+ final boolean isGenericConf = isGenericConference(mSecondary);
if (mSecondaryContactInfo != null) {
Log.d(TAG, "updateSecondaryDisplayInfo() " + mSecondaryContactInfo);
final String nameForCall = getNameForCall(mSecondaryContactInfo);
@@ -359,10 +374,10 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
final boolean nameIsNumber = nameForCall != null && nameForCall.equals(
mSecondaryContactInfo.number);
ui.setSecondary(true, nameForCall, nameIsNumber, mSecondaryContactInfo.label,
- mSecondaryContactInfo.photo, isConference);
+ mSecondaryContactInfo.photo, isConference, isGenericConf);
} else {
// reset to nothing so that it starts off blank next time we use it.
- ui.setSecondary(false, null, false, null, null, false);
+ ui.setSecondary(false, null, false, null, null, isConference, isGenericConf);
}
}
@@ -436,9 +451,9 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
public interface CallCardUi extends Ui {
void setVisible(boolean on);
void setPrimary(String number, String name, boolean nameIsNumber, String label,
- Drawable photo, boolean isConference, boolean isSipCall);
+ Drawable photo, boolean isConference, boolean isGeneric, boolean isSipCall);
void setSecondary(boolean show, String name, boolean nameIsNumber, String label,
- Drawable photo, boolean isConference);
+ Drawable photo, boolean isConference, boolean isGeneric);
void setSecondaryImage(Drawable image);
void setCallState(int state, Call.DisconnectCause cause, boolean bluetoothOn,
String gatewayLabel, String gatewayNumber);