diff options
author | Stephen Bird <sbird@cyngn.com> | 2016-05-02 14:28:38 -0700 |
---|---|---|
committer | Rajesh Yengisetty <rajesh@cyngn.com> | 2016-05-09 09:41:56 -0700 |
commit | 9109b539d245ce94f5675e21c119a5f79cb89266 (patch) | |
tree | b8bcd7fdaeba30956bf3dcae46d47bd64aeb1305 | |
parent | 1513c75c14068c3a43f66ffa2431572896c76c96 (diff) | |
download | packages_apps_InCallUI-9109b539d245ce94f5675e21c119a5f79cb89266.tar.gz packages_apps_InCallUI-9109b539d245ce94f5675e21c119a5f79cb89266.tar.bz2 packages_apps_InCallUI-9109b539d245ce94f5675e21c119a5f79cb89266.zip |
Revert all the changes plugins have made to the CallButton files.
All of this is now in our ModButton* files. This allows us to show
multiple integrations without modifying or crowding the original
buttons.
Ticket: CD-592
Change-Id: I31e3501944b7b6dd5e321470cf1eb2aa15daf18e
-rw-r--r-- | res/layout/call_button_fragment.xml | 6 | ||||
-rw-r--r-- | src/com/android/incallui/CallButtonFragment.java | 212 | ||||
-rw-r--r-- | src/com/android/incallui/CallButtonPresenter.java | 280 |
3 files changed, 12 insertions, 486 deletions
diff --git a/res/layout/call_button_fragment.xml b/res/layout/call_button_fragment.xml index 4eb16e10..1842d88b 100644 --- a/res/layout/call_button_fragment.xml +++ b/res/layout/call_button_fragment.xml @@ -110,12 +110,6 @@ android:contentDescription="@string/onscreenVideoCallText" android:visibility="gone" /> - <!-- Take a note for this call --> - <ImageButton android:id="@+id/takeNoteButton" - style="@style/InCallButton" - android:contentDescription="@string/onscreenNoteText" - android:visibility="gone" /> - <!-- "Switch camera" for video calls. --> <ToggleButton android:id="@+id/switchCameraButton" style="@style/InCallCompoundButton" diff --git a/src/com/android/incallui/CallButtonFragment.java b/src/com/android/incallui/CallButtonFragment.java index c82f5aa8..34eca3cc 100644 --- a/src/com/android/incallui/CallButtonFragment.java +++ b/src/com/android/incallui/CallButtonFragment.java @@ -19,10 +19,7 @@ package com.android.incallui; import static com.android.incallui.CallButtonFragment.Buttons.*; import android.annotation.NonNull; -import android.app.AlertDialog; -import android.app.PendingIntent; import android.content.Context; -import android.content.DialogInterface; import android.content.pm.PackageManager; import android.content.res.ColorStateList; import android.content.res.Resources; @@ -34,7 +31,6 @@ import android.graphics.drawable.StateListDrawable; import android.os.Bundle; import android.telecom.CallAudioState; import android.util.SparseIntArray; -import android.text.TextUtils; import android.view.ContextThemeWrapper; import android.view.HapticFeedbackConstants; import android.view.LayoutInflater; @@ -42,21 +38,11 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.widget.ArrayAdapter; import android.widget.CompoundButton; import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.ListAdapter; import android.widget.PopupMenu; import android.widget.PopupMenu.OnDismissListener; import android.widget.PopupMenu.OnMenuItemClickListener; -import android.widget.TextView; - -import com.android.incallui.incallapi.InCallPluginInfo; - -import java.lang.Override; -import java.util.ArrayList; -import java.util.List; import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette; @@ -67,9 +53,6 @@ public class CallButtonFragment extends BaseFragment<CallButtonPresenter, CallButtonPresenter.CallButtonUi> implements CallButtonPresenter.CallButtonUi, OnMenuItemClickListener, OnDismissListener, View.OnClickListener { - private static final String TAG = CallButtonFragment.class.getSimpleName(); - private static final boolean DEBUG = false; - private static final int INVALID_INDEX = -1; private int mButtonMaxVisible; // The button is currently visible in the UI @@ -85,9 +68,9 @@ public class CallButtonFragment public static final int BUTTON_AUDIO = 0; public static final int BUTTON_MUTE = 1; public static final int BUTTON_DIALPAD = 2; - public static final int BUTTON_UPGRADE_TO_VIDEO = 3; - public static final int BUTTON_HOLD = 4; - public static final int BUTTON_SWAP = 5; + public static final int BUTTON_HOLD = 3; + public static final int BUTTON_SWAP = 4; + public static final int BUTTON_UPGRADE_TO_VIDEO = 5; public static final int BUTTON_SWITCH_CAMERA = 6; public static final int BUTTON_ADD_CALL = 7; public static final int BUTTON_MERGE = 8; @@ -95,8 +78,7 @@ public class CallButtonFragment public static final int BUTTON_MANAGE_VIDEO_CONFERENCE = 10; public static final int BUTTON_RECORD_CALL = 11; public static final int BUTTON_TRANSFER_CALL = 12; - public static final int BUTTON_TAKE_NOTE = 13; - public static final int BUTTON_COUNT = 14; + public static final int BUTTON_COUNT = 13; } private SparseIntArray mButtonVisibilityMap = new SparseIntArray(BUTTON_COUNT); @@ -116,7 +98,6 @@ public class CallButtonFragment private ImageButton mManageVideoCallConferenceButton; private ImageButton mAddParticipantButton; private ImageButton mTransferCallButton; - private ImageButton mTakeNoteButton; private PopupMenu mAudioModePopup; private boolean mAudioModePopupVisible; @@ -187,10 +168,8 @@ public class CallButtonFragment mOverflowButton = (ImageButton) parent.findViewById(R.id.overflowButton); mOverflowButton.setOnClickListener(this); mManageVideoCallConferenceButton = (ImageButton) parent.findViewById( - R.id.manageVideoCallConferenceButton); + R.id.manageVideoCallConferenceButton); mManageVideoCallConferenceButton.setOnClickListener(this); - mTakeNoteButton = (ImageButton) parent.findViewById(R.id.takeNoteButton); - mTakeNoteButton.setOnClickListener(this); return parent; } @@ -246,7 +225,7 @@ public class CallButtonFragment getPresenter().addParticipantClicked(); break; case R.id.changeToVideoButton: - getPresenter().switchToVideoCall(); + getPresenter().changeToVideoClicked(); break; case R.id.switchCameraButton: getPresenter().switchCameraClicked( @@ -269,9 +248,6 @@ public class CallButtonFragment break; case R.id.transferCall: getPresenter().transferCallClicked(); - break; - case R.id.takeNoteButton: - getPresenter().takeNote(); default: Log.wtf(this, "onClick: unexpected"); return; @@ -407,7 +383,6 @@ public class CallButtonFragment mManageVideoCallConferenceButton.setEnabled(isEnabled); mAddParticipantButton.setEnabled(isEnabled); mTransferCallButton.setEnabled(isEnabled); - mTakeNoteButton.setEnabled(isEnabled); } @Override @@ -451,8 +426,6 @@ public class CallButtonFragment return mCallRecordButton; case BUTTON_TRANSFER_CALL: return mTransferCallButton; - case BUTTON_TAKE_NOTE: - return mTakeNoteButton; default: Log.w(this, "Invalid button id"); return null; @@ -474,64 +447,6 @@ public class CallButtonFragment mSwitchCameraButton.setSelected(isBackFacingCamera); } - // The icons used for the call button fragment are constructed using layerdrawables, - // where the second layer is a item containing a bitmap with it's gravity set to "center". - // This method gets the insets set on the layerdrawable layer when the bitmap is centered, - // and applies it to the vector drawable that we are replacing it with. - public void modifyChangeToVideoButton() { - boolean canVideoCall = getPresenter().canVideoCall(); - List<InCallPluginInfo> contactInCallPlugins = - getPresenter().getContactInCallPluginInfoList(); - int listSize = (contactInCallPlugins != null) ? contactInCallPlugins.size() : 0; - if (!canVideoCall && listSize == 1) { - InCallPluginInfo info = contactInCallPlugins.get(0); - if (info != null && info.getPluginVideoIcon() != null) { - LayerDrawable layerDrawable = - (LayerDrawable) getResources().getDrawable(R.drawable.btn_change_to_video) - .mutate(); - - int buttonWidth = mChangeToVideoButton.getWidth(); - int buttonHeight = mChangeToVideoButton.getWidth(); - if (buttonWidth == 0 || buttonHeight == 0) { - buttonWidth = - getResources().getDimensionPixelSize(R.dimen.in_call_button_dimension); - buttonHeight = - getResources().getDimensionPixelSize(R.dimen.in_call_button_dimension); - } - int xInset = buttonWidth - layerDrawable.getIntrinsicWidth(); - if (xInset > 0) { - xInset = xInset / 2; - } else { - xInset = 0; - } - int yInset = buttonHeight - layerDrawable.getIntrinsicHeight(); - if (yInset > 0) { - yInset = yInset / 2; - } else { - yInset = 0; - } - - if (DEBUG) { - Log.i(TAG, "mChangeToVideoButton: [w h] [" + mChangeToVideoButton.getWidth() + - " " + mChangeToVideoButton.getHeight() + "]\n" + - "adjusted button: [w h] [" + buttonWidth + " " + buttonHeight + "]\n" + - "layerDrawable: [w h] [" + layerDrawable.getIntrinsicWidth() + " " + - layerDrawable.getIntrinsicHeight() + "]\n" + - "xInset = " + xInset + ", xInset = " + yInset); - } - - Drawable icon = info.getPluginVideoIcon(); - icon.setTintList(getResources().getColorStateList(R.color.selectable_icon_tint)); - icon.setAutoMirrored(false); - - // layer 0 is background, layer 1 is the icon to use. - layerDrawable.setLayerInset(1, xInset, yInset, xInset, yInset); - layerDrawable.setDrawableByLayerId(R.id.foregroundItem, icon); - mChangeToVideoButton.setBackground(layerDrawable); - } - } - } - @Override public void setVideoPaused(boolean isPaused) { mPauseVideoButton.setSelected(isPaused); @@ -627,69 +542,6 @@ public class CallButtonFragment } } - /**The function is called when Video Call button gets pressed. The function creates and - * displays video call options. - */ - @Override - public void displayVideoCallOptions() { - CallButtonPresenter.CallButtonUi ui = getUi(); - if (ui == null) { - Log.e(this, "Cannot display VideoCallOptions as ui is null"); - return; - } - - Context context = getContext(); - - final ArrayList<Drawable> icons = new ArrayList<Drawable>(); - final ArrayList<String> items = new ArrayList<String>(); - final ArrayList<Integer> itemToCallType = new ArrayList<Integer>(); - final Resources res = ui.getContext().getResources(); - - // Prepare the string array and mapping. - List<InCallPluginInfo> contactInCallPlugins = - getPresenter().getContactInCallPluginInfoList(); - if (contactInCallPlugins != null && !contactInCallPlugins.isEmpty()) { - int i = 0; - for (InCallPluginInfo info : contactInCallPlugins) { - items.add(info.getPluginTitle()); - icons.add(info.getPluginBrandIcon()); - itemToCallType.add(i++); - } - } - - boolean canVideoCall = getPresenter().canVideoCall(); - if (canVideoCall) { - // First item, if available is VT IMS call - items.add(res.getString(R.string.modify_call_option_vt)); - Drawable icon = res.getDrawable(R.drawable.ic_toolbar_video); - icon.setTint(res.getColor(R.color.vidoecall_handoff_default_video_call_color)); - icons.add(icon); - itemToCallType.add(-1); - } - - ListAdapter adapter = new ListItemWithImageArrayAdapter(context.getApplicationContext(), - R.layout.videocall_handoff_item, items, icons); - DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int item) { - final int selCallType = itemToCallType.get(item); - if (selCallType < 0) { - // VT Call selected - getPresenter().changeToVideoClicked(); - } else { - // InCall Plugin selected - getPresenter().handoverCallToVoIPPlugin(selCallType); - } - dialog.dismiss(); - } - }; - AlertDialog.Builder builder = new AlertDialog.Builder(getUi().getContext()); - builder.setTitle(R.string.video_call_option_title); - builder.setAdapter(adapter, listener); - final AlertDialog alert; - alert = builder.create(); - alert.show(); - } - @Override public void setAudio(int mode) { updateAudioButtons(getPresenter().getSupportedAudio()); @@ -1019,56 +871,4 @@ public class CallButtonFragment public Context getContext() { return getActivity(); } - - @Override - public void showInviteSnackbar(final PendingIntent inviteIntent, String inviteText) { - if (TextUtils.isEmpty(inviteText)) { - return; - } - final InCallActivity activity = (InCallActivity) getActivity(); - if (activity != null) { - activity.showInviteSnackbar(inviteIntent, inviteText); - } - } - - @Override - public void setDeepLinkNoteIcon(Drawable d) { - if (d == null) { - mTakeNoteButton.setVisibility(View.GONE); - } else { - mTakeNoteButton.setImageDrawable(d); - } - } - - /** - * Adapter used to Array adapter with an icon and custom item layout - */ - private class ListItemWithImageArrayAdapter extends ArrayAdapter<String> { - private int mLayout; - private List<Drawable> mIcons; - - public ListItemWithImageArrayAdapter(Context context, int layout, List<String> titles, - List<Drawable> icons) { - super(context, 0, titles); - mLayout = layout; - mIcons = icons; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - String title = getItem(position); - Drawable icon = mIcons.get(position); - if (convertView == null) { - convertView = LayoutInflater.from(getContext()).inflate(mLayout, parent, false); - } - - TextView textView = (TextView) convertView.findViewById(R.id.title); - textView.setText(title); - - ImageView msgIcon = (ImageView) convertView.findViewById(R.id.icon); - msgIcon.setImageDrawable(icon); - - return convertView; - } - } } diff --git a/src/com/android/incallui/CallButtonPresenter.java b/src/com/android/incallui/CallButtonPresenter.java index 902bed3d..1e9380d6 100644 --- a/src/com/android/incallui/CallButtonPresenter.java +++ b/src/com/android/incallui/CallButtonPresenter.java @@ -19,63 +19,25 @@ package com.android.incallui; import static com.android.incallui.CallButtonFragment.Buttons.*; import android.app.AlertDialog; -import android.app.PendingIntent; -import android.content.ComponentName; import android.content.Context; -import android.content.CursorLoader; import android.content.DialogInterface; -import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; -import android.graphics.PorterDuff; -import android.graphics.drawable.Drawable; -import android.net.Uri; import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.ResultReceiver; -import android.provider.Settings; import android.telecom.CallAudioState; import android.telecom.InCallService.VideoCall; import android.telecom.PhoneAccount; import android.telecom.PhoneAccountHandle; import android.telecom.VideoProfile; -import android.text.TextUtils; - -import com.android.dialer.deeplink.DeepLinkIntegrationManager; import com.android.incallui.AudioModeProvider.AudioModeListener; -import com.android.incallui.ContactInfoCache; -import com.android.incallui.ContactInfoCache.ContactCacheEntry; -import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback; -import com.android.incallui.incallapi.InCallPluginInfo; import com.android.incallui.InCallCameraManager.Listener; import com.android.incallui.InCallPresenter.CanAddCallListener; -import com.android.incallui.InCallPresenter.InCallPluginUpdateListener; import com.android.incallui.InCallPresenter.InCallState; import com.android.incallui.InCallPresenter.InCallStateListener; import com.android.incallui.InCallPresenter.IncomingCallListener; import com.android.incallui.InCallPresenter.InCallDetailsListener; -import com.android.phone.common.ambient.AmbientConnection; - -import com.android.phone.common.incall.StartInCallCallReceiver; - -import com.cyanogen.ambient.common.api.AmbientApiClient; -import com.cyanogen.ambient.common.api.ResultCallback; -import com.cyanogen.ambient.deeplink.applicationtype.DeepLinkApplicationType; -import com.cyanogen.ambient.deeplink.DeepLink; -import com.cyanogen.ambient.deeplink.DeepLink.DeepLinkResultList; -import com.cyanogen.ambient.deeplink.linkcontent.CallDeepLinkContent; -import com.cyanogen.ambient.deeplink.linkcontent.DeepLinkContentType; -import com.cyanogen.ambient.incall.InCallServices; -import com.cyanogen.ambient.incall.extension.OriginCodes; -import com.cyanogen.ambient.incall.extension.StatusCodes; -import com.cyanogen.ambient.incall.extension.StartCallRequest; - -import cyanogenmod.providers.CMSettings; - -import java.util.List; import java.util.Objects; /** @@ -83,42 +45,19 @@ import java.util.Objects; */ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButtonUi> implements InCallStateListener, AudioModeListener, IncomingCallListener, - InCallDetailsListener, CanAddCallListener, CallList.ActiveSubChangeListener, Listener, - StartInCallCallReceiver.Receiver, ContactInfoCacheCallback, InCallPluginUpdateListener { + InCallDetailsListener, CanAddCallListener, CallList.ActiveSubChangeListener, Listener { - private static final String TAG = CallButtonPresenter.class.getSimpleName(); private static final String KEY_AUTOMATICALLY_MUTED = "incall_key_automatically_muted"; private static final String KEY_PREVIOUS_MUTE_STATE = "incall_key_previous_mute_state"; private static final String RECORDING_WARNING_PRESENTED = "recording_warning_presented"; - private static final boolean DEBUG = false; private Call mCall; - private DeepLink mNoteDeepLink; private boolean mAutomaticallyMuted = false; private boolean mPreviousMuteState = false; - private ContactInfoCache.ContactCacheEntry mPrimaryContactInfo; - private StartInCallCallReceiver mCallback; - - @Override - public void onReceiveResult(int resultCode, Bundle resultData) { - if (DEBUG) Log.i(TAG, "Got InCallPlugin result callback code = " + resultCode); - - switch (resultCode) { - case StatusCodes.StartCall.HANDOVER_CONNECTED: - if (mCall == null) { - return; - } - if (DEBUG) Log.i(TAG, "Disconnecting call: " + mCall); - TelecomAdapter.getInstance().disconnectCall(mCall.getId()); - break; - default: - Log.i(TAG, "Nothing to do for this InCallPlugin resultcode = " + resultCode); - } + public CallButtonPresenter() { } - public CallButtonPresenter() {} - @Override public void onUiReady(CallButtonUi ui) { super.onUiReady(ui); @@ -132,7 +71,6 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto inCallPresenter.addDetailsListener(this); inCallPresenter.addCanAddCallListener(this); inCallPresenter.getInCallCameraManager().addCameraSelectionListener(this); - inCallPresenter.addInCallPluginUpdateListener(this); CallList.getInstance().addActiveSubChangeListener(this); // Update the buttons state immediately for the current call @@ -150,7 +88,6 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto InCallPresenter.getInstance().removeDetailsListener(this); InCallPresenter.getInstance().getInCallCameraManager().removeCameraSelectionListener(this); InCallPresenter.getInstance().removeCanAddCallListener(this); - InCallPresenter.getInstance().removeInCallPluginUpdateListener(this); CallList.getInstance().removeActiveSubChangeListener(this); } @@ -182,24 +119,10 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto } else { mCall = null; } - if (mCall != null && mPrimaryContactInfo == null) { - startContactInfoSearch(mCall, true, newState == InCallState.INCOMING); - getPreferredLinks(); - } updateUi(newState, mCall); } /** - * Starts a query for more contact data for the save primary and secondary calls. - */ - private void startContactInfoSearch(final Call call, final boolean isPrimary, - boolean isIncoming) { - final ContactInfoCache cache = ContactInfoCache.getInstance(getUi().getContext()); - - cache.findInfo(call, isIncoming, this); - } - - /** * Updates the user interface in response to a change in the details of a call. * Currently handles changes to the call buttons in response to a change in the details for a * call. This is important to ensure changes to the active call are reflected in the available @@ -335,82 +258,6 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto InCallPresenter.getInstance().sendAddParticipantIntent(); } - public List<InCallPluginInfo> getContactInCallPluginInfoList() { - List<InCallPluginInfo> inCallPluginInfoList = null; - if (mCall != null) { - final ContactInfoCache cache = ContactInfoCache.getInstance(getUi().getContext()); - if (cache != null) { - ContactCacheEntry contactInfo = cache.getInfo(mCall.getId()); - if (contactInfo != null) { - inCallPluginInfoList = contactInfo.inCallPluginInfoList; - } - if (inCallPluginInfoList == null) { - cache.refreshPluginInfo(mCall, this); - } - } - } - return inCallPluginInfoList; - } - - public void handoverCallToVoIPPlugin() { - handoverCallToVoIPPlugin(0); - } - - public void handoverCallToVoIPPlugin(int contactPluginIndex) { - List<InCallPluginInfo> inCallPluginInfoList = getContactInCallPluginInfoList(); - if (inCallPluginInfoList != null && inCallPluginInfoList.size() > contactPluginIndex) { - InCallPluginInfo info = inCallPluginInfoList.get(contactPluginIndex); - final ComponentName component = info.getPluginComponent(); - final String userId = info.getUserId(); - final String mimeType = info.getMimeType(); - if (component != null && !TextUtils.isEmpty(component.flattenToString()) && - !TextUtils.isEmpty(mimeType)) { - // Attempt call handover - final PendingIntent inviteIntent = info.getPluginInviteIntent(); - if (!TextUtils.isEmpty(userId)) { - AmbientApiClient client = AmbientConnection.CLIENT - .get(getUi().getContext().getApplicationContext()); - - mCallback = new StartInCallCallReceiver(new Handler(Looper.myLooper())); - mCallback.setReceiver(CallButtonPresenter.this); - StartCallRequest request = new StartCallRequest(userId, - OriginCodes.CALL_HANDOVER, - StartCallRequest.FLAG_CALL_TRANSFER, - mCallback); - - if (DEBUG) Log.i(TAG, "Starting InCallPlugin call for = " + userId); - InCallServices.getInstance().startVideoCall(client, component, request); - } else if (inviteIntent != null) { - // Attempt contact invite - if (DEBUG) { - final ContactInfoCache cache = - ContactInfoCache.getInstance(getUi().getContext()); - ContactCacheEntry entry = cache.getInfo(mCall.getId()); - Uri lookupUri = entry.lookupUri; - Log.i(TAG, "Attempting invite for " + lookupUri.toString()); - } - String inviteText = getUi().getContext().getApplicationContext() - .getString(R.string.snackbar_incall_plugin_contact_invite, - info.getPluginTitle()); - getUi().showInviteSnackbar(inviteIntent, inviteText); - } else { - // Inform user to add contact manually, no invite intent found - if (DEBUG) { - final ContactInfoCache cache = - ContactInfoCache.getInstance(getUi().getContext()); - ContactCacheEntry entry = cache.getInfo(mCall.getId()); - Uri lookupUri = entry.lookupUri; - Log.i(TAG, "No invite intent for " + lookupUri.toString()); - } - String inviteText = getUi().getContext().getApplicationContext() - .getString(R.string.snackbar_incall_plugin_no_invite_found, - info.getPluginTitle()); - getUi().showInviteSnackbar(null, inviteText); - } - } - } - } - public void addCallClicked() { // Automatically mute the current call mAutomaticallyMuted = true; @@ -456,22 +303,6 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto mCall.setSessionModificationState(Call.SessionModificationState.WAITING_FOR_RESPONSE); } - public void switchToVideoCall() { - boolean canVideoCall = canVideoCall(); - List<InCallPluginInfo> contactInCallPlugins = getContactInCallPluginInfoList(); - int listSize = (contactInCallPlugins != null) ? contactInCallPlugins.size() : 0; - if (canVideoCall && listSize == 0) { - // If only VT Call available - changeToVideoClicked(); - } else if (!canVideoCall && listSize == 1) { - // If only one InCall Plugin available - handoverCallToVoIPPlugin(); - } else if (canVideoCall || listSize > 0){ - // If multiple sources available - getUi().displayVideoCallOptions(); - } - } - /** * Switches the camera between the front-facing and back-facing camera. * @param useFrontFacingCamera True if we should switch to using the front-facing camera, or @@ -602,18 +433,6 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto updateButtonsState(call); } - public boolean canVideoCall() { - return (mCall == null) ? false : (QtiCallUtils.hasVideoCapabilities(mCall) || - QtiCallUtils.hasVoiceCapabilities(mCall)); - } - - private boolean isDeviceProvisionedInSettingsDb(Context context) { - return (CMSettings.Secure.getInt(context.getContentResolver(), - CMSettings.Secure.CM_SETUP_WIZARD_COMPLETED, 0) != 0) - && (Settings.Global.getInt(context.getContentResolver(), - Settings.Global.DEVICE_PROVISIONED, 0) != 0); - } - /** * Updates the buttons applicable for the UI. * @@ -622,6 +441,7 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto private void updateButtonsState(Call call) { Log.v(this, "updateButtonsState"); final CallButtonUi ui = getUi(); + final boolean isVideo = CallUtils.isVideoCall(call); // Common functionality (audio, hold, etc). @@ -640,17 +460,10 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto final boolean showMerge = call.can( android.telecom.Call.Details.CAPABILITY_MERGE_CONFERENCE); final int callState = call.getState(); - List<InCallPluginInfo> contactInCallPlugins = getContactInCallPluginInfoList(); final boolean showUpgradeToVideo = (!isVideo || useExt) && (QtiCallUtils.hasVideoCapabilities(call) || - QtiCallUtils.hasVoiceCapabilities(call) || - (contactInCallPlugins != null && !contactInCallPlugins.isEmpty())) && - (callState == Call.State.ACTIVE || callState == Call.State.ONHOLD) - && isDeviceProvisionedInSettingsDb(ui.getContext()); - final boolean showNote = - DeepLinkIntegrationManager.getInstance().ambientIsAvailable(getUi().getContext()) && - (callState == Call.State.ACTIVE || callState == Call.State.ONHOLD) && - mNoteDeepLink != null && isDeviceProvisionedInSettingsDb(ui.getContext()); + QtiCallUtils.hasVoiceCapabilities(call)) && + (callState == Call.State.ACTIVE || callState == Call.State.ONHOLD); final boolean showMute = call.can(android.telecom.Call.Details.CAPABILITY_MUTE); final boolean showAddParticipant = call.can( @@ -665,14 +478,10 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto ui.showButton(BUTTON_AUDIO, true); ui.showButton(BUTTON_SWAP, showSwap); ui.showButton(BUTTON_HOLD, showHold); - ui.showButton(BUTTON_TAKE_NOTE, showNote); ui.setHold(isCallOnHold); ui.showButton(BUTTON_MUTE, showMute); ui.showButton(BUTTON_ADD_CALL, showAddCall); ui.showButton(BUTTON_UPGRADE_TO_VIDEO, showUpgradeToVideo); - if (showUpgradeToVideo) { - ui.modifyChangeToVideoButton(); - } ui.showButton(BUTTON_SWITCH_CAMERA, isVideo); ui.showButton(BUTTON_PAUSE_VIDEO, isVideo && !useExt); ui.showButton(BUTTON_DIALPAD, !isVideo || useExt); @@ -696,31 +505,6 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto mAutomaticallyMuted = false; } - private void contactUpdated() { - if (DEBUG) Log.i(this, "contactUpdated"); - if (getUi() != null && mCall != null) { - updateButtonsState(mCall); - } - } - - @Override - public void onInCallPluginUpdated() { - if (DEBUG) Log.i(this, "onInCallPluginUpdated"); - contactUpdated(); - } - - @Override - public void onContactInfoComplete(String callId, ContactInfoCache.ContactCacheEntry entry) { - if (DEBUG) Log.i(this, "onContactInfoComplete"); - mPrimaryContactInfo = entry; - contactUpdated(); - } - - @Override - public void onImageLoadComplete(String callId, ContactInfoCache.ContactCacheEntry entry) { - // Stub - } - @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); @@ -752,10 +536,7 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto void requestCallRecordingPermission(String[] permissions); void displayDialpad(boolean on, boolean animate); boolean isDialpadVisible(); - void modifyChangeToVideoButton(); - void displayVideoCallOptions(); - void showInviteSnackbar(PendingIntent inviteIntent, String inviteText); - void setDeepLinkNoteIcon(Drawable d); + /** * Once showButton() has been called on each of the individual buttons in the UI, call * this to configure the overflow menu appropriately. @@ -778,53 +559,4 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto onStateChange(null, state, CallList.getInstance()); } - - public void takeNote() { - if (mCall != null && mNoteDeepLink != null) { - Context ctx = getUi().getContext(); - - android.telecom.Call.Details details = mCall.getTelecommCall().getDetails(); - CallDeepLinkContent content = new CallDeepLinkContent(mNoteDeepLink); - content.setName(TextUtils.isEmpty(mPrimaryContactInfo.name) ? - ctx.getString(R.string.deeplink_unknown_caller) : mPrimaryContactInfo.name); - content.setNumber(mCall.getNumber()); - content.setUri(DeepLinkIntegrationManager.generateCallUri(mCall.getNumber(), - details.getCreateTimeMillis())); - DeepLinkIntegrationManager.getInstance().sendContentSentEvent(ctx, mNoteDeepLink, - new ComponentName(ctx, CallButtonPresenter.class)); - ctx.startActivity(content.build()); - - } - } - - public void getPreferredLinks() { - if (mCall != null) { - Uri callUri = DeepLinkIntegrationManager.generateCallUri(mCall.getNumber(), - mCall.getCreateTimeMillis()); - DeepLinkIntegrationManager.getInstance().getPreferredLinksFor(mNoteDeepLinkCallback, - DeepLinkContentType.CALL, callUri); - } - } - - private ResultCallback<DeepLinkResultList> mNoteDeepLinkCallback = - new ResultCallback<DeepLinkResultList>() { - @Override - public void onResult(DeepLinkResultList deepLinkResult) { - List<DeepLink> links = deepLinkResult.getResults(); - Drawable toDraw = null; - if (links != null && getUi() != null) { - for (DeepLink result : links) { - if (result.getApplicationType() == DeepLinkApplicationType.NOTE) { - mNoteDeepLink = result; - toDraw = result.getDrawableIcon(getUi().getContext()).mutate(); - toDraw.setColorFilter( - getUi().getContext().getColor(R.color.button_default_color), - PorterDuff.Mode.SRC_IN); - break; - } - } - } - getUi().setDeepLinkNoteIcon(toDraw); - } - }; } |