summaryrefslogtreecommitdiff
path: root/InCallUI
diff options
context:
space:
mode:
authorIhab Awad <ihab@google.com>2014-09-11 08:54:01 -0700
committerIhab Awad <ihab@google.com>2014-09-11 15:02:39 -0700
commit01694b67a3797f6aa948fe348c35bbf68d9b688d (patch)
tree16fcb8c7a06233322a5f33c5b668ffab0042f9ba /InCallUI
parentdbd311a0364490c2cd72bc9fde09196351749707 (diff)
Change UI to represent conferenced IMS connections (3/3)
IMS conferenced connnections cannot individually hold or disconnect. Bug: 17451623 Change-Id: I701773a40f6329b93ccf434d8ad30f99f0438edf
Diffstat (limited to 'InCallUI')
-rw-r--r--InCallUI/src/com/android/incallui/ConferenceManagerFragment.java21
-rw-r--r--InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java33
2 files changed, 34 insertions, 20 deletions
diff --git a/InCallUI/src/com/android/incallui/ConferenceManagerFragment.java b/InCallUI/src/com/android/incallui/ConferenceManagerFragment.java
index f45d294a0..e7785c151 100644
--- a/InCallUI/src/com/android/incallui/ConferenceManagerFragment.java
+++ b/InCallUI/src/com/android/incallui/ConferenceManagerFragment.java
@@ -158,14 +158,21 @@ public class ConferenceManagerFragment
}
@Override
- public final void setupEndButtonForRow(final int rowId) {
+ public final void setupEndButtonForRow(final int rowId, boolean canDisconnect) {
View endButton = mConferenceCallList[rowId].findViewById(R.id.conferenceCallerDisconnect);
- endButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- getPresenter().endConferenceConnection(rowId);
- }
- });
+
+ // Comment
+ if (canDisconnect) {
+ endButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ getPresenter().endConferenceConnection(rowId);
+ }
+ });
+ endButton.setVisibility(View.VISIBLE);
+ } else {
+ endButton.setVisibility(View.INVISIBLE);
+ }
}
@Override
diff --git a/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java b/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java
index f40415ccd..ba01e7597 100644
--- a/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java
+++ b/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java
@@ -17,8 +17,8 @@
package com.android.incallui;
import android.content.Context;
-import android.graphics.drawable.Drawable;
import android.net.Uri;
+import android.telecomm.PhoneCapabilities;
import android.text.TextUtils;
import com.android.incallui.ContactInfoCache.ContactCacheEntry;
@@ -26,7 +26,6 @@ import com.android.incallui.InCallPresenter.InCallState;
import com.android.incallui.InCallPresenter.InCallStateListener;
import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableSortedSet;
/**
* Logic for call buttons.
@@ -100,14 +99,24 @@ public class ConferenceManagerPresenter
for (int i = 0; i < MAX_CALLERS_IN_CONFERENCE; i++) {
if (i < mCallerIds.length) {
+ int callCapabilities =
+ callList.getCallById(currentCall.getChildCallIds().get(i))
+ .getTelecommCall().getDetails().getCallCapabilities();
+ boolean thisRowCanSeparate = canSeparate &&
+ ((callCapabilities & PhoneCapabilities.SEPARATE_FROM_CONFERENCE) != 0);
+ boolean thisRowCanDisconnect =
+ ((callCapabilities & PhoneCapabilities.DISCONNECT_FROM_CONFERENCE) != 0);
// Fill in the row in the UI for this caller.
-
final ContactCacheEntry contactCache = ContactInfoCache.getInstance(mContext).
getInfo(mCallerIds[i]);
- updateManageConferenceRow(i, contactCache, canSeparate);
+ updateManageConferenceRow(
+ i,
+ contactCache,
+ thisRowCanSeparate,
+ thisRowCanDisconnect);
} else {
// Blank out this row in the UI
- updateManageConferenceRow(i, null, false);
+ updateManageConferenceRow(i, null, false, false);
}
}
}
@@ -122,10 +131,12 @@ public class ConferenceManagerPresenter
* so hide this row in the UI.
* @param canSeparate if true, show a "Separate" (i.e. "Private") button
* on this row in the UI.
+ * @param canDisconnect if true, show a "Disconnect" button on this row in the UI.
*/
public void updateManageConferenceRow(final int i,
final ContactCacheEntry contactCacheEntry,
- boolean canSeparate) {
+ boolean canSeparate,
+ boolean canDisconnect) {
if (contactCacheEntry != null) {
// Activate this row of the Manage conference panel:
@@ -139,12 +150,8 @@ public class ConferenceManagerPresenter
number = null;
}
- if (canSeparate) {
- getUi().setupSeparateButtonForRow(i, canSeparate);
- }
- // display the CallerInfo.
- getUi().setupEndButtonForRow(i);
-
+ getUi().setupSeparateButtonForRow(i, canSeparate);
+ getUi().setupEndButtonForRow(i, canDisconnect);
getUi().displayCallerInfoForConferenceRow(i, name, number, contactCacheEntry.label,
contactCacheEntry.lookupKey, contactCacheEntry.displayPhotoUri);
} else {
@@ -176,6 +183,6 @@ public class ConferenceManagerPresenter
void displayCallerInfoForConferenceRow(int rowId, String callerName, String callerNumber,
String callerNumberType, String lookupKey, Uri photoUri);
void setupSeparateButtonForRow(int rowId, boolean canSeparate);
- void setupEndButtonForRow(int rowId);
+ void setupEndButtonForRow(int rowId, boolean canDisconnect);
}
}