diff options
author | Ihab Awad <ihab@google.com> | 2014-09-11 08:54:01 -0700 |
---|---|---|
committer | Ihab Awad <ihab@google.com> | 2014-09-11 15:02:39 -0700 |
commit | 01694b67a3797f6aa948fe348c35bbf68d9b688d (patch) | |
tree | 16fcb8c7a06233322a5f33c5b668ffab0042f9ba /InCallUI | |
parent | dbd311a0364490c2cd72bc9fde09196351749707 (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.java | 21 | ||||
-rw-r--r-- | InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java | 33 |
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); } } |