/* * 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(); } }