diff options
author | Yorke Lee <yorkelee@google.com> | 2015-04-10 14:51:57 -0700 |
---|---|---|
committer | Yorke Lee <yorkelee@google.com> | 2015-04-10 15:02:48 -0700 |
commit | e700d3a392ed803d3102ab3f94a3bebec4e6e991 (patch) | |
tree | fb662fbbdce638bb6ced34e97b0f8ad8f8264047 /InCallUI | |
parent | 55576e529a3fa7183a698669374b9c2dd28ad5c5 (diff) |
Initial refactoring for call buttons
Create common functions to show/enable call buttons
Bug: 20127747
Change-Id: I22d45597a73a75954448cb3bd5b906af06d7d690
Diffstat (limited to 'InCallUI')
-rw-r--r-- | InCallUI/src/com/android/incallui/CallButtonFragment.java | 155 | ||||
-rw-r--r-- | InCallUI/src/com/android/incallui/CallButtonPresenter.java | 85 |
2 files changed, 107 insertions, 133 deletions
diff --git a/InCallUI/src/com/android/incallui/CallButtonFragment.java b/InCallUI/src/com/android/incallui/CallButtonFragment.java index 8682d65e5..a6ea334b3 100644 --- a/InCallUI/src/com/android/incallui/CallButtonFragment.java +++ b/InCallUI/src/com/android/incallui/CallButtonFragment.java @@ -16,6 +16,8 @@ package com.android.incallui; +import static com.android.incallui.CallButtonFragment.Buttons.*; + import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; @@ -44,7 +46,6 @@ import android.widget.Toast; import android.widget.PopupMenu.OnDismissListener; import android.widget.PopupMenu.OnMenuItemClickListener; -import com.android.contacts.common.util.MaterialColorMapUtils; import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette; import java.util.ArrayList; @@ -55,8 +56,26 @@ public class CallButtonFragment extends BaseFragment<CallButtonPresenter, CallButtonPresenter.CallButtonUi> implements CallButtonPresenter.CallButtonUi, OnMenuItemClickListener, OnDismissListener, View.OnClickListener { - private CompoundButton mAudioButton; private static final int INVALID_INDEX = -1; + + public interface Buttons { + public static final int BUTTON_AUDIO = 1; + public static final int BUTTON_DOWNGRADE_TO_VOICE = 2; + public static final int BUTTON_MUTE = 3; + public static final int BUTTON_DIALPAD = 4; + public static final int BUTTON_HOLD = 5; + public static final int BUTTON_SWAP = 6; + public static final int BUTTON_UPGRADE_TO_VIDEO = 7; + public static final int BUTTON_SWITCH_CAMERA = 8; + public static final int BUTTON_ADD_CALL = 9; + public static final int BUTTON_MERGE = 10; + public static final int BUTTON_PAUSE_VIDEO = 11; + public static final int BUTTON_MANAGE_VIDEO_CONFERENCE = 12; + public static final int BUTTON_OVERFLOW = 13; + } + + + private CompoundButton mAudioButton; private ImageButton mChangeToVoiceButton; private CompoundButton mMuteButton; private CompoundButton mShowDialpadButton; @@ -157,7 +176,6 @@ public class CallButtonFragment int id = view.getId(); Log.d(this, "onClick(View " + view + ", id " + id + ")..."); - boolean isClickHandled = true; switch(id) { case R.id.audioButton: onAudioButtonClicked(); @@ -206,16 +224,13 @@ public class CallButtonFragment onManageVideoCallConferenceClicked(); break; default: - isClickHandled = false; Log.wtf(this, "onClick: unexpected"); - break; + return; } - if (isClickHandled) { - view.performHapticFeedback( - HapticFeedbackConstants.VIRTUAL_KEY, - HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); - } + view.performHapticFeedback( + HapticFeedbackConstants.VIRTUAL_KEY, + HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); } public void updateColors() { @@ -355,23 +370,53 @@ public class CallButtonFragment } @Override - public void showAudioButton(boolean show) { - mAudioButton.setVisibility(show ? View.VISIBLE : View.GONE); - } - - @Override - public void showChangeToVoiceButton(boolean show) { - mChangeToVoiceButton.setVisibility(show ? View.VISIBLE : View.GONE); + public void showButton(int buttonId, boolean show) { + final View button = getButtonById(buttonId); + if (button != null) { + button.setVisibility(show ? View.VISIBLE : View.GONE); + } } @Override - public void enableMute(boolean enabled) { - mMuteButton.setEnabled(enabled); + public void enableButton(int buttonId, boolean enable) { + final View button = getButtonById(buttonId); + if (button != null) { + button.setEnabled(enable); + } } - @Override - public void showDialpadButton(boolean show) { - mShowDialpadButton.setVisibility(show ? View.VISIBLE : View.GONE); + private View getButtonById(int id) { + switch (id) { + case BUTTON_AUDIO: + return mAudioButton; + case BUTTON_DOWNGRADE_TO_VOICE: + return mChangeToVoiceButton; + case BUTTON_MUTE: + return mMuteButton; + case BUTTON_DIALPAD: + return mShowDialpadButton; + case BUTTON_HOLD: + return mHoldButton; + case BUTTON_SWAP: + return mSwapButton; + case BUTTON_UPGRADE_TO_VIDEO: + return mChangeToVideoButton; + case BUTTON_SWITCH_CAMERA: + return mSwitchCameraButton; + case BUTTON_ADD_CALL: + return mAddCallButton; + case BUTTON_MERGE: + return mMergeButton; + case BUTTON_PAUSE_VIDEO: + return mPauseVideoButton; + case BUTTON_MANAGE_VIDEO_CONFERENCE: + return mManageVideoCallConferenceButton; + case BUTTON_OVERFLOW: + return mOverflowButton; + default: + Log.w(this, "Invalid button id"); + return null; + } } @Override @@ -382,75 +427,15 @@ public class CallButtonFragment } @Override - public void showHoldButton(boolean show) { - mHoldButton.setVisibility(show ? View.VISIBLE : View.GONE); - } - - @Override - public void enableHold(boolean enabled) { - mHoldButton.setEnabled(enabled); - } - - @Override - public void showSwapButton(boolean show) { - mSwapButton.setVisibility(show ? View.VISIBLE : View.GONE); - } - - @Override - public void showChangeToVideoButton(boolean show) { - mChangeToVideoButton.setVisibility(show ? View.VISIBLE : View.GONE); - } - - @Override - public void enableChangeToVideoButton(boolean enable) { - mChangeToVideoButton.setEnabled(enable); - } - - @Override - public void showSwitchCameraButton(boolean show) { - mSwitchCameraButton.setVisibility(show ? View.VISIBLE : View.GONE); - } - - @Override - public void setSwitchCameraButton(boolean isBackFacingCamera) { + public void setCameraSwitched(boolean isBackFacingCamera) { mSwitchCameraButton.setSelected(isBackFacingCamera); } @Override - public void showAddCallButton(boolean show) { - Log.d(this, "show Add call button: " + show); - mAddCallButton.setVisibility(show ? View.VISIBLE : View.GONE); - } - - public void showManageConferenceVideoCallButton(boolean show) { - mManageVideoCallConferenceButton.setVisibility(show ? View.VISIBLE : View.GONE); - } - - @Override - public void showMergeButton(boolean show) { - mMergeButton.setVisibility(show ? View.VISIBLE : View.GONE); - - // If the merge button was disabled, re-enable it when hiding it. - if (!show) { - mMergeButton.setEnabled(true); - } - } - - @Override - public void showPauseVideoButton(boolean show) { - mPauseVideoButton.setVisibility(show ? View.VISIBLE : View.GONE); - } - - @Override - public void setPauseVideoButton(boolean isPaused) { + public void setVideoPaused(boolean isPaused) { mPauseVideoButton.setSelected(isPaused); } - @Override - public void showOverflowButton(boolean show) { - mOverflowButton.setVisibility(show ? View.VISIBLE : View.GONE); - } - /**The function is called when Modify Call button gets pressed. The function creates and * displays modify call options. */ @@ -526,7 +511,7 @@ public class CallButtonFragment @Override public void configureOverflowMenu(boolean showMergeMenuOption, boolean showAddMenuOption, - boolean showHoldMenuOption, boolean showSwapMenuOption, + boolean showHoldMenuOption, boolean showSwapMenuOption, boolean showManageConferenceVideoCallOption) { if (mOverflowPopup == null) { final ContextThemeWrapper contextWrapper = new ContextThemeWrapper(getActivity(), diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java index 4e840be9f..0faebfd29 100644 --- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java +++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java @@ -16,6 +16,8 @@ package com.android.incallui; +import static com.android.incallui.CallButtonFragment.Buttons.*; + import android.app.AlertDialog; import android.content.Context; import android.os.Bundle; @@ -321,7 +323,7 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto mCall.getVideoState() & ~VideoProfile.VideoState.PAUSED); videoCall.sendSessionModifyRequest(videoProfile); } - getUi().setPauseVideoButton(pause); + getUi().setVideoPaused(pause); } private void updateUi(InCallState state, Call call) { @@ -342,7 +344,7 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto updateCallButtons(call, ui.getContext()); - ui.enableMute(call.can(android.telecom.Call.Details.CAPABILITY_MUTE)); + ui.enableButton(BUTTON_MUTE, call.can(android.telecom.Call.Details.CAPABILITY_MUTE)); } private static int toInteger(boolean b) { @@ -367,13 +369,13 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto final CallButtonUi ui = getUi(); // Show all video-call-related buttons. - ui.showSwitchCameraButton(true); - ui.showPauseVideoButton(true); + ui.showButton(BUTTON_SWITCH_CAMERA, true); + ui.showButton(BUTTON_PAUSE_VIDEO, true); final boolean supportHold = call.can(android.telecom.Call.Details.CAPABILITY_SUPPORT_HOLD); final boolean enableHoldOption = call.can(android.telecom.Call.Details.CAPABILITY_HOLD); - ui.showHoldButton(supportHold); - ui.enableHold(enableHoldOption); + ui.showButton(BUTTON_HOLD, supportHold); + ui.enableButton(BUTTON_HOLD, enableHoldOption); ui.setHold(call.getState() == Call.State.ONHOLD); } @@ -382,13 +384,13 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto final CallButtonUi ui = getUi(); // Hide all video-call-related buttons. - ui.showChangeToVoiceButton(false); - ui.showSwitchCameraButton(false); - ui.showPauseVideoButton(false); + ui.showButton(BUTTON_DOWNGRADE_TO_VOICE, false); + ui.showButton(BUTTON_SWITCH_CAMERA, false); + ui.showButton(BUTTON_PAUSE_VIDEO, false); // Show all voice-call-related buttons. - ui.showAudioButton(true); - ui.showDialpadButton(true); + ui.showButton(BUTTON_AUDIO, true); + ui.showButton(BUTTON_DIALPAD, true); Log.v(this, "Show hold ", call.can(android.telecom.Call.Details.CAPABILITY_SUPPORT_HOLD)); Log.v(this, "Enable hold", call.can(android.telecom.Call.Details.CAPABILITY_HOLD)); @@ -410,7 +412,7 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto boolean canVideoCall = call.can(android.telecom.Call.Details.CAPABILITY_SUPPORTS_VT_LOCAL) && call.can(android.telecom.Call.Details.CAPABILITY_SUPPORTS_VT_REMOTE); - ui.showChangeToVideoButton(canVideoCall); + ui.showButton(BUTTON_UPGRADE_TO_VIDEO, canVideoCall); final boolean showMergeOption = call.can( android.telecom.Call.Details.CAPABILITY_MERGE_CONFERENCE); @@ -447,11 +449,11 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto final boolean isOverflowScenario = !canVideoCall && showOverflowMenu; if (isVideoOverflowScenario) { - ui.showHoldButton(false); - ui.showSwapButton(false); - ui.showAddCallButton(false); - ui.showMergeButton(false); - ui.showManageConferenceVideoCallButton(false); + ui.showButton(BUTTON_HOLD, false); + ui.showButton(BUTTON_SWAP, false); + ui.showButton(BUTTON_ADD_CALL, false); + ui.showButton(BUTTON_MERGE, false); + ui.showButton(BUTTON_MANAGE_VIDEO_CONFERENCE, false); ui.configureOverflowMenu( showMergeOption, @@ -459,12 +461,12 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto showHoldOption && enableHoldOption /* showHoldMenuOption */, showSwapOption, showManageVideoCallConferenceOption); - ui.showOverflowButton(true); + ui.showButton(BUTTON_OVERFLOW, true); } else { if (isOverflowScenario) { - ui.showAddCallButton(false); - ui.showMergeButton(false); - ui.showManageConferenceVideoCallButton(false); + ui.showButton(BUTTON_ADD_CALL, false); + ui.showButton(BUTTON_MERGE, false); + ui.showButton(BUTTON_MANAGE_VIDEO_CONFERENCE, false); ui.configureOverflowMenu( showMergeOption, @@ -473,15 +475,15 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto false /* showSwapMenuOption */, showManageVideoCallConferenceOption); } else { - ui.showMergeButton(showMergeOption); - ui.showAddCallButton(showAddCallOption); - ui.showManageConferenceVideoCallButton(showManageVideoCallConferenceOption); + ui.showButton(BUTTON_MERGE, showMergeOption); + ui.showButton(BUTTON_ADD_CALL, showAddCallOption); + ui.showButton(BUTTON_MANAGE_VIDEO_CONFERENCE, showManageVideoCallConferenceOption); } - ui.showOverflowButton(isOverflowScenario); - ui.showHoldButton(showHoldOption); - ui.enableHold(enableHoldOption); - ui.showSwapButton(showSwapOption); + ui.showButton(BUTTON_OVERFLOW, isOverflowScenario); + ui.showButton(BUTTON_HOLD, showHoldOption); + ui.enableButton(BUTTON_HOLD, enableHoldOption); + ui.showButton(BUTTON_SWAP, showSwapOption); } } @@ -514,31 +516,18 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto } public interface CallButtonUi extends Ui { + void showButton(int buttonId, boolean show); + void enableButton(int buttonId, boolean enable); void setEnabled(boolean on); void setMute(boolean on); - void enableMute(boolean enabled); - void showAudioButton(boolean show); - void showChangeToVoiceButton(boolean show); - void showDialpadButton(boolean show); void setHold(boolean on); - void showHoldButton(boolean show); - void enableHold(boolean enabled); - void showSwapButton(boolean show); - void showChangeToVideoButton(boolean show); - void enableChangeToVideoButton(boolean enable); - void showSwitchCameraButton(boolean show); - void setSwitchCameraButton(boolean isBackFacingCamera); - void showAddCallButton(boolean show); - void showManageConferenceVideoCallButton(boolean show); - void showMergeButton(boolean show); - void showPauseVideoButton(boolean show); - void setPauseVideoButton(boolean isPaused); - void showOverflowButton(boolean show); + void setCameraSwitched(boolean isBackFacingCamera); + void setVideoPaused(boolean isPaused); + void setAudio(int mode); + void setSupportedAudio(int mask); void displayDialpad(boolean on, boolean animate); void displayModifyCallOptions(); boolean isDialpadVisible(); - void setAudio(int mode); - void setSupportedAudio(int mask); void configureOverflowMenu(boolean showMergeMenuOption, boolean showAddMenuOption, boolean showHoldMenuOption, boolean showSwapMenuOption, boolean showManageConferenceVideoCallOption); @@ -550,6 +539,6 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto if (getUi() == null) { return; } - getUi().setSwitchCameraButton(!isUsingFrontFacingCamera); + getUi().setCameraSwitched(!isUsingFrontFacingCamera); } } |