summaryrefslogtreecommitdiff
path: root/InCallUI
diff options
context:
space:
mode:
Diffstat (limited to 'InCallUI')
-rw-r--r--InCallUI/src/com/android/incallui/CallCardFragment.java8
-rw-r--r--InCallUI/src/com/android/incallui/CallCardPresenter.java20
-rw-r--r--InCallUI/src/com/android/incallui/InCallPresenter.java52
-rw-r--r--InCallUI/src/com/android/incallui/VideoCallPresenter.java60
4 files changed, 87 insertions, 53 deletions
diff --git a/InCallUI/src/com/android/incallui/CallCardFragment.java b/InCallUI/src/com/android/incallui/CallCardFragment.java
index 611a1f4cb..43cec89de 100644
--- a/InCallUI/src/com/android/incallui/CallCardFragment.java
+++ b/InCallUI/src/com/android/incallui/CallCardFragment.java
@@ -23,7 +23,6 @@ import android.animation.LayoutTransition;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.content.Context;
-import android.content.res.Configuration;
import android.graphics.Point;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
@@ -54,7 +53,6 @@ import android.widget.TextView;
import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette;
import com.android.contacts.common.widget.FloatingActionButtonController;
-import com.android.incallui.service.PhoneNumberService;
import com.android.phone.common.animation.AnimUtils;
import java.util.List;
@@ -223,6 +221,12 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
mSecondaryCallInfo = view.findViewById(R.id.secondary_call_info);
mSecondaryCallProviderInfo = view.findViewById(R.id.secondary_call_provider_info);
mPhoto = (ImageView) view.findViewById(R.id.photo);
+ mPhoto.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ getPresenter().onContactPhotoClick();
+ }
+ });
mCallStateIcon = (ImageView) view.findViewById(R.id.callStateIcon);
mCallStateVideoCallIcon = (ImageView) view.findViewById(R.id.videoCallIcon);
mCallStateLabel = (TextView) view.findViewById(R.id.callStateLabel);
diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java
index 9a5f96414..fcbe16794 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -405,7 +405,7 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
String simNumber = mgr.getLine1Number(mPrimary.getAccountHandle());
if (!showCallbackNumber && PhoneNumberUtils.compare(callbackNumber, simNumber)) {
Log.d(this, "Numbers are the same (and callback number is not being forced to show);" +
- " not showing the callback number");
+ " not showing the callback number");
callbackNumber = null;
}
@@ -435,6 +435,16 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
}
}
+ /**
+ * Handles click on the contact photo by toggling fullscreen mode if the current call is a video
+ * call.
+ */
+ public void onContactPhotoClick() {
+ if (mPrimary != null && mPrimary.isVideoCall(mContext)) {
+ InCallPresenter.getInstance().toggleFullscreenMode();
+ }
+ }
+
private void maybeStartSearch(Call call, boolean isPrimary) {
// no need to start search for conference calls which show generic info.
if (call != null && !call.isConferenceCall()) {
@@ -746,17 +756,17 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
}
/**
- * Handles a change to the full screen video state.
+ * Handles a change to the fullscreen mode of the in-call UI.
*
- * @param isFullScreenVideo {@code True} if the application is entering full screen video mode.
+ * @param isFullscreenMode {@code True} if the in-call UI is entering full screen mode.
*/
@Override
- public void onFullScreenVideoStateChanged(boolean isFullScreenVideo) {
+ public void onFullscreenModeChanged(boolean isFullscreenMode) {
final CallCardUi ui = getUi();
if (ui == null) {
return;
}
- ui.setCallCardVisible(!isFullScreenVideo);
+ ui.setCallCardVisible(!isFullscreenMode);
}
private boolean isPrimaryCallActive() {
diff --git a/InCallUI/src/com/android/incallui/InCallPresenter.java b/InCallUI/src/com/android/incallui/InCallPresenter.java
index 83d5af34e..d48c27e1d 100644
--- a/InCallUI/src/com/android/incallui/InCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/InCallPresenter.java
@@ -98,6 +98,11 @@ public class InCallPresenter implements CallList.Listener {
private boolean mAccountSelectionCancelled = false;
private InCallCameraManager mInCallCameraManager = null;
+ /**
+ * Determines if the InCall UI is in fullscreen mode or not.
+ */
+ private boolean mIsFullScreen = false;
+
private final android.telecom.Call.Callback mCallback =
new android.telecom.Call.Callback() {
@Override
@@ -780,7 +785,7 @@ public class InCallPresenter implements CallList.Listener {
private void notifyVideoPauseController(boolean showing) {
Log.d(this, "notifyVideoPauseController: mIsChangingConfigurations=" +
- mIsChangingConfigurations);
+ mIsChangingConfigurations);
if (!mIsChangingConfigurations) {
VideoPauseController.getInstance().onUiShowing(showing);
}
@@ -894,13 +899,50 @@ public class InCallPresenter implements CallList.Listener {
}
/**
+ * Toggles whether the application is in fullscreen mode or not.
+ *
+ * @return {@code true} if in-call is now in fullscreen mode.
+ */
+ public boolean toggleFullscreenMode() {
+ mIsFullScreen = !mIsFullScreen;
+ Log.v(this, "toggleFullscreenMode = " + mIsFullScreen);
+ notifyFullscreenModeChange(mIsFullScreen);
+ return mIsFullScreen;
+ }
+
+ /**
+ * Changes the fullscreen mode of the in-call UI.
+ *
+ * @param isFullScreen {@code true} if in-call should be in fullscreen mode, {@code false}
+ * otherwise.
+ */
+ public void setFullScreen(boolean isFullScreen) {
+ Log.v(this, "setFullScreen = " + isFullScreen);
+ if (mIsFullScreen == isFullScreen) {
+ Log.v(this, "setFullScreen ignored as already in that state.");
+ return;
+ }
+ mIsFullScreen = isFullScreen;
+ notifyFullscreenModeChange(mIsFullScreen);
+ }
+
+ /**
+ * @return {@code true} if the in-call ui is currently in fullscreen mode, {@code false}
+ * otherwise.
+ */
+ public boolean isFullscreen() {
+ return mIsFullScreen;
+ }
+
+
+ /**
* Called by the {@link VideoCallPresenter} to inform of a change in full screen video status.
*
- * @param isFullScreenVideo {@code True} if entering full screen video mode.
+ * @param isFullscreenMode {@code True} if entering full screen mode.
*/
- public void setFullScreenVideoState(boolean isFullScreenVideo) {
+ public void notifyFullscreenModeChange(boolean isFullscreenMode) {
for (InCallEventListener listener : mInCallEventListeners) {
- listener.onFullScreenVideoStateChanged(isFullScreenVideo);
+ listener.onFullscreenModeChanged(isFullscreenMode);
}
}
@@ -1564,7 +1606,7 @@ public class InCallPresenter implements CallList.Listener {
* In-Call UI. Used as a means of communicating between fragments that make up the UI.
*/
public interface InCallEventListener {
- public void onFullScreenVideoStateChanged(boolean isFullScreenVideo);
+ public void onFullscreenModeChanged(boolean isFullscreenMode);
}
public interface InCallUiListener {
diff --git a/InCallUI/src/com/android/incallui/VideoCallPresenter.java b/InCallUI/src/com/android/incallui/VideoCallPresenter.java
index dc5e81fb1..e0b6da8ef 100644
--- a/InCallUI/src/com/android/incallui/VideoCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/VideoCallPresenter.java
@@ -28,14 +28,11 @@ import android.provider.ContactsContract;
import android.telecom.AudioState;
import android.telecom.CameraCapabilities;
import android.telecom.Connection;
-import android.telecom.Connection.VideoProvider;
import android.telecom.InCallService.VideoCall;
import android.telecom.VideoProfile;
import android.view.Surface;
-import android.view.View;
import android.widget.ImageView;
-import com.android.contacts.common.CallUtil;
import com.android.contacts.common.ContactPhotoManager;
import com.android.incallui.InCallPresenter.InCallDetailsListener;
import com.android.incallui.InCallPresenter.InCallOrientationListener;
@@ -71,7 +68,8 @@ import java.util.Objects;
public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi> implements
IncomingCallListener, InCallOrientationListener, InCallStateListener,
InCallDetailsListener, SurfaceChangeListener, VideoEventListener,
- InCallVideoCallCallbackNotifier.SessionModificationListener {
+ InCallVideoCallCallbackNotifier.SessionModificationListener,
+ InCallPresenter.InCallEventListener {
public static final String TAG = "VideoCallPresenter";
/**
@@ -82,7 +80,7 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi
public void run() {
if (mAutoFullScreenPending) {
Log.v(this, "Automatically entering fullscreen mode.");
- setFullScreen(true);
+ InCallPresenter.getInstance().setFullScreen(true);
mAutoFullScreenPending = false;
} else {
Log.v(this, "Skipping scheduled fullscreen mode.");
@@ -168,11 +166,6 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi
private int mPreviewSurfaceState = PreviewSurfaceState.NONE;
/**
- * Determines whether the video surface is in full-screen mode.
- */
- private boolean mIsFullScreen = false;
-
- /**
* Saves the audio mode which was selected prior to going into a video call.
*/
private static int sPrevVideoAudioMode = AudioModeProvider.AUDIO_MODE_INVALID;
@@ -367,31 +360,6 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi
}
}
- private void toggleFullScreen() {
- mIsFullScreen = !mIsFullScreen;
- Log.v(this, "toggleFullScreen = " + mIsFullScreen);
- // Ensure we cancel any scheduled auto activation of fullscreen mode as the user's setting
- // should override any automatic operation.
- cancelAutoFullScreen();
- InCallPresenter.getInstance().setFullScreenVideoState(mIsFullScreen);
- }
-
- /**
- * Sets the current full screen mode.
- *
- * @param isFullScreen {@code true} if full screen mode should be active, {@code false}
- * otherwise.
- */
- public void setFullScreen(boolean isFullScreen) {
- Log.v(this, "setFullScreen = " + isFullScreen);
- if (mIsFullScreen == isFullScreen) {
- Log.v(this, "setFullScreen ignored as already in that state.");
- return;
- }
- mIsFullScreen = isFullScreen;
- InCallPresenter.getInstance().setFullScreenVideoState(mIsFullScreen);
- }
-
/**
* Handles clicks on the video surfaces by toggling full screen state.
* Informs the {@link InCallPresenter} of the change so that it can inform the
@@ -400,7 +368,8 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi
* @param surfaceId The video surface receiving the click.
*/
public void onSurfaceClick(int surfaceId) {
- toggleFullScreen();
+ boolean isFullscreen = InCallPresenter.getInstance().toggleFullscreenMode();
+ Log.v(this, "toggleFullScreen = " + isFullscreen);
}
/**
@@ -485,6 +454,16 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi
maybeAutoEnterFullscreen(currentCall);
}
+ /**
+ * Handles a change to the fullscreen mode of the app.
+ *
+ * @param isFullscreenMode {@code true} if the app is now fullscreen, {@code false} otherwise.
+ */
+ @Override
+ public void onFullscreenModeChanged(boolean isFullscreenMode) {
+ cancelAutoFullScreen();
+ }
+
private void checkForVideoStateChange(Call call) {
final boolean isVideoCall = CallUtils.isVideoCall(call);
final boolean hasVideoStateChanged = mCurrentVideoState != call.getVideoState();
@@ -773,9 +752,7 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi
showVideoUi(VideoProfile.VideoState.AUDIO_ONLY, Call.State.ACTIVE);
enableCamera(mVideoCall, false);
-
- Log.d(this, "exitVideoMode mIsFullScreen: " + mIsFullScreen);
- setFullScreen(false);
+ InCallPresenter.getInstance().setFullScreen(false);
mIsVideoMode = false;
}
@@ -1092,7 +1069,7 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi
}
if (!CallUtils.isVideoCall(call) || call.getState() == Call.State.INCOMING) {
- setFullScreen(false);
+ InCallPresenter.getInstance().setFullScreen(false);
}
}
@@ -1113,7 +1090,8 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi
if (call == null || (
call != null && (call.getState() != Call.State.ACTIVE ||
- !CallUtils.isVideoCall(call)) || mIsFullScreen)) {
+ !CallUtils.isVideoCall(call)) ||
+ InCallPresenter.getInstance().isFullscreen())) {
// Ensure any previously scheduled attempt to enter fullscreen is cancelled.
cancelAutoFullScreen();
return;