summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Bird <sbird@cyngn.com>2016-05-02 14:28:38 -0700
committerRajesh Yengisetty <rajesh@cyngn.com>2016-05-09 09:41:56 -0700
commit9109b539d245ce94f5675e21c119a5f79cb89266 (patch)
treeb8bcd7fdaeba30956bf3dcae46d47bd64aeb1305
parent1513c75c14068c3a43f66ffa2431572896c76c96 (diff)
downloadpackages_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.xml6
-rw-r--r--src/com/android/incallui/CallButtonFragment.java212
-rw-r--r--src/com/android/incallui/CallButtonPresenter.java280
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);
- }
- };
}