92 lines
3.0 KiB
Java
92 lines
3.0 KiB
Java
/*
|
|
* Copyright (C) 2016 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License
|
|
*/
|
|
|
|
package com.android.incallui.video.impl;
|
|
|
|
import android.support.annotation.NonNull;
|
|
import android.support.annotation.Nullable;
|
|
import android.view.View;
|
|
import android.view.View.OnClickListener;
|
|
import com.android.dialer.common.Assert;
|
|
import com.android.incallui.incall.protocol.InCallScreenDelegate;
|
|
import com.android.incallui.incall.protocol.SecondaryInfo;
|
|
import com.android.incallui.video.protocol.VideoCallScreenDelegate;
|
|
|
|
/** Manages the swap button and on hold banner. */
|
|
public class SwitchOnHoldCallController implements OnClickListener {
|
|
|
|
@NonNull private InCallScreenDelegate inCallScreenDelegate;
|
|
@NonNull private VideoCallScreenDelegate videoCallScreenDelegate;
|
|
|
|
@NonNull private View switchOnHoldButton;
|
|
|
|
@NonNull private View onHoldBanner;
|
|
|
|
private boolean isVisible;
|
|
|
|
private boolean isEnabled;
|
|
|
|
@Nullable private SecondaryInfo secondaryInfo;
|
|
|
|
public SwitchOnHoldCallController(
|
|
@NonNull View switchOnHoldButton,
|
|
@NonNull View onHoldBanner,
|
|
@NonNull InCallScreenDelegate inCallScreenDelegate,
|
|
@NonNull VideoCallScreenDelegate videoCallScreenDelegate) {
|
|
this.switchOnHoldButton = Assert.isNotNull(switchOnHoldButton);
|
|
switchOnHoldButton.setOnClickListener(this);
|
|
this.onHoldBanner = Assert.isNotNull(onHoldBanner);
|
|
this.inCallScreenDelegate = Assert.isNotNull(inCallScreenDelegate);
|
|
this.videoCallScreenDelegate = Assert.isNotNull(videoCallScreenDelegate);
|
|
}
|
|
|
|
public void setEnabled(boolean isEnabled) {
|
|
this.isEnabled = isEnabled;
|
|
updateButtonState();
|
|
}
|
|
|
|
public void setVisible(boolean isVisible) {
|
|
this.isVisible = isVisible;
|
|
updateButtonState();
|
|
}
|
|
|
|
public void setOnScreen() {
|
|
isVisible = hasSecondaryInfo();
|
|
updateButtonState();
|
|
}
|
|
|
|
public void setSecondaryInfo(@Nullable SecondaryInfo secondaryInfo) {
|
|
this.secondaryInfo = secondaryInfo;
|
|
isVisible = hasSecondaryInfo();
|
|
}
|
|
|
|
private boolean hasSecondaryInfo() {
|
|
return secondaryInfo != null && secondaryInfo.shouldShow();
|
|
}
|
|
|
|
public void updateButtonState() {
|
|
switchOnHoldButton.setEnabled(isEnabled);
|
|
switchOnHoldButton.setVisibility(isVisible ? View.VISIBLE : View.INVISIBLE);
|
|
onHoldBanner.setVisibility(isVisible ? View.VISIBLE : View.INVISIBLE);
|
|
}
|
|
|
|
@Override
|
|
public void onClick(View view) {
|
|
inCallScreenDelegate.onSecondaryInfoClicked();
|
|
videoCallScreenDelegate.resetAutoFullscreenTimer();
|
|
}
|
|
}
|