From 37adc9854ae78a0dd358b8e129417c142b83cf1c Mon Sep 17 00:00:00 2001 From: Ta-wei Yen Date: Thu, 12 Nov 2015 14:23:00 -0800 Subject: Use separate AnswerFragment for Talkback + Split AnswerFragment into GlowpadAnswerFragment and AccessibleAnswerFragment, with the refactored AnswerFragment as base class. + InCallActivity will select GlowpadAnswerFragment and AccessibleAnswerFragment base on if any touch exploration accessibility service is active. + Removed AnswerListener from GlowPadWrapper, as it is only implemented in one class and made the code more complex. + Changed answer icon's color into green. Bug:24101341 Change-Id: Ida2b07986d64d6442ff87a2258180846a092942e --- .../android/incallui/GlowPadAnswerFragment.java | 155 +++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 InCallUI/src/com/android/incallui/GlowPadAnswerFragment.java (limited to 'InCallUI/src/com/android/incallui/GlowPadAnswerFragment.java') diff --git a/InCallUI/src/com/android/incallui/GlowPadAnswerFragment.java b/InCallUI/src/com/android/incallui/GlowPadAnswerFragment.java new file mode 100644 index 000000000..62a8e7829 --- /dev/null +++ b/InCallUI/src/com/android/incallui/GlowPadAnswerFragment.java @@ -0,0 +1,155 @@ +/* + * Copyright (C) 2013 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; + +import android.os.Bundle; +import android.telecom.VideoProfile; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.android.dialer.R; + +public class GlowPadAnswerFragment extends AnswerFragment { + + private GlowPadWrapper mGlowpad; + + public GlowPadAnswerFragment() { + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + mGlowpad = (GlowPadWrapper) inflater.inflate(R.layout.answer_fragment, + container, false); + + Log.d(this, "Creating view for answer fragment ", this); + Log.d(this, "Created from activity", getActivity()); + mGlowpad.setAnswerFragment(this); + + return mGlowpad; + } + + @Override + public void onResume() { + super.onResume(); + mGlowpad.requestFocus(); + } + + @Override + public void onDestroyView() { + Log.d(this, "onDestroyView"); + if (mGlowpad != null) { + mGlowpad.stopPing(); + mGlowpad = null; + } + super.onDestroyView(); + } + + @Override + public void onShowAnswerUi(boolean shown) { + Log.d(this, "Show answer UI: " + shown); + if (shown) { + mGlowpad.startPing(); + } else { + mGlowpad.stopPing(); + } + } + + /** + * Sets targets on the glowpad according to target set identified by the parameter. + * + * @param targetSet Integer identifying the set of targets to use. + */ + public void showTargets(int targetSet) { + showTargets(targetSet, VideoProfile.STATE_BIDIRECTIONAL); + } + + /** + * Sets targets on the glowpad according to target set identified by the parameter. + * + * @param targetSet Integer identifying the set of targets to use. + */ + @Override + public void showTargets(int targetSet, int videoState) { + final int targetResourceId; + final int targetDescriptionsResourceId; + final int directionDescriptionsResourceId; + final int handleDrawableResourceId; + mGlowpad.setVideoState(videoState); + + switch (targetSet) { + case TARGET_SET_FOR_AUDIO_WITH_SMS: + targetResourceId = R.array.incoming_call_widget_audio_with_sms_targets; + targetDescriptionsResourceId = + R.array.incoming_call_widget_audio_with_sms_target_descriptions; + directionDescriptionsResourceId = + R.array.incoming_call_widget_audio_with_sms_direction_descriptions; + handleDrawableResourceId = R.drawable.ic_incall_audio_handle; + break; + case TARGET_SET_FOR_VIDEO_WITHOUT_SMS: + targetResourceId = R.array.incoming_call_widget_video_without_sms_targets; + targetDescriptionsResourceId = + R.array.incoming_call_widget_video_without_sms_target_descriptions; + directionDescriptionsResourceId = + R.array.incoming_call_widget_video_without_sms_direction_descriptions; + handleDrawableResourceId = R.drawable.ic_incall_video_handle; + break; + case TARGET_SET_FOR_VIDEO_WITH_SMS: + targetResourceId = R.array.incoming_call_widget_video_with_sms_targets; + targetDescriptionsResourceId = + R.array.incoming_call_widget_video_with_sms_target_descriptions; + directionDescriptionsResourceId = + R.array.incoming_call_widget_video_with_sms_direction_descriptions; + handleDrawableResourceId = R.drawable.ic_incall_video_handle; + break; + case TARGET_SET_FOR_VIDEO_ACCEPT_REJECT_REQUEST: + targetResourceId = + R.array.incoming_call_widget_video_request_targets; + targetDescriptionsResourceId = + R.array.incoming_call_widget_video_request_target_descriptions; + directionDescriptionsResourceId = R.array + .incoming_call_widget_video_request_target_direction_descriptions; + handleDrawableResourceId = R.drawable.ic_incall_video_handle; + break; + case TARGET_SET_FOR_AUDIO_WITHOUT_SMS: + default: + targetResourceId = R.array.incoming_call_widget_audio_without_sms_targets; + targetDescriptionsResourceId = + R.array.incoming_call_widget_audio_without_sms_target_descriptions; + directionDescriptionsResourceId = + R.array.incoming_call_widget_audio_without_sms_direction_descriptions; + handleDrawableResourceId = R.drawable.ic_incall_audio_handle; + break; + } + + if (targetResourceId != mGlowpad.getTargetResourceId()) { + mGlowpad.setTargetResources(targetResourceId); + mGlowpad.setTargetDescriptionsResourceId(targetDescriptionsResourceId); + mGlowpad.setDirectionDescriptionsResourceId(directionDescriptionsResourceId); + mGlowpad.setHandleDrawable(handleDrawableResourceId); + mGlowpad.reset(false); + } + } + + @Override + protected void onMessageDialogCancel() { + if (mGlowpad != null) { + mGlowpad.startPing(); + } + } +} -- cgit v1.2.3