| /* |
| * 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.text.TextUtils; |
| import android.view.LayoutInflater; |
| import android.view.View; |
| import android.view.ViewGroup; |
| import android.widget.Chronometer; |
| import android.widget.TextView; |
| |
| /** |
| * Fragment for call control buttons |
| */ |
| public class ConferenceManagerFragment |
| extends BaseFragment<ConferenceManagerPresenter, |
| ConferenceManagerPresenter.ConferenceManagerUi> |
| implements ConferenceManagerPresenter.ConferenceManagerUi { |
| |
| private View mButtonManageConferenceDone; |
| private ViewGroup[] mConferenceCallList; |
| private Chronometer mConferenceTime; |
| |
| @Override |
| ConferenceManagerPresenter createPresenter() { |
| // having a singleton instance. |
| return new ConferenceManagerPresenter(); |
| } |
| |
| @Override |
| ConferenceManagerPresenter.ConferenceManagerUi getUi() { |
| return this; |
| } |
| |
| @Override |
| public void onCreate(Bundle savedInstanceState) { |
| super.onCreate(savedInstanceState); |
| } |
| |
| @Override |
| public View onCreateView(LayoutInflater inflater, ViewGroup container, |
| Bundle savedInstanceState) { |
| final View parent = inflater.inflate(R.layout.conference_manager_fragment, container, |
| false); |
| |
| // set up the Conference Call chronometer |
| mConferenceTime = (Chronometer) parent.findViewById(R.id.manageConferencePanelHeader); |
| mConferenceTime.setFormat(getActivity().getString(R.string.caller_manage_header)); |
| |
| // Create list of conference call widgets |
| mConferenceCallList = new ViewGroup[getPresenter().getMaxCallersInConference()]; |
| |
| final int[] viewGroupIdList = { R.id.caller0, R.id.caller1, R.id.caller2, |
| R.id.caller3, R.id.caller4 }; |
| for (int i = 0; i < getPresenter().getMaxCallersInConference(); i++) { |
| mConferenceCallList[i] = |
| (ViewGroup) parent.findViewById(viewGroupIdList[i]); |
| } |
| |
| mButtonManageConferenceDone = parent.findViewById(R.id.manage_done); |
| mButtonManageConferenceDone.setOnClickListener(new View.OnClickListener() { |
| @Override |
| public void onClick(View v) { |
| getPresenter().manageConferenceDoneClicked(); |
| } |
| }); |
| |
| return parent; |
| } |
| |
| @Override |
| public void onActivityCreated(Bundle savedInstanceState) { |
| super.onActivityCreated(savedInstanceState); |
| } |
| |
| @Override |
| public void setVisible(boolean on) { |
| if (on) { |
| final CallList calls = CallList.getInstance(); |
| getPresenter().init(getActivity(), calls); |
| getView().setVisibility(View.VISIBLE); |
| |
| } else { |
| getView().setVisibility(View.GONE); |
| } |
| } |
| |
| @Override |
| public boolean isFragmentVisible() { |
| return isVisible(); |
| } |
| |
| @Override |
| public void setRowVisible(int rowId, boolean on) { |
| if (on) { |
| mConferenceCallList[rowId].setVisibility(View.VISIBLE); |
| } else { |
| mConferenceCallList[rowId].setVisibility(View.GONE); |
| } |
| } |
| |
| /** |
| * Helper function to fill out the Conference Call(er) information |
| * for each item in the "Manage Conference Call" list. |
| */ |
| @Override |
| public final void displayCallerInfoForConferenceRow(int rowId, String callerName, |
| String callerNumber, String callerNumberType) { |
| |
| final TextView nameTextView = (TextView) mConferenceCallList[rowId].findViewById( |
| R.id.conferenceCallerName); |
| final TextView numberTextView = (TextView) mConferenceCallList[rowId].findViewById( |
| R.id.conferenceCallerNumber); |
| final TextView numberTypeTextView = (TextView) mConferenceCallList[rowId].findViewById( |
| R.id.conferenceCallerNumberType); |
| |
| // set the caller name |
| nameTextView.setText(callerName); |
| |
| // set the caller number in subscript, or make the field disappear. |
| if (TextUtils.isEmpty(callerNumber)) { |
| numberTextView.setVisibility(View.GONE); |
| numberTypeTextView.setVisibility(View.GONE); |
| } else { |
| numberTextView.setVisibility(View.VISIBLE); |
| numberTextView.setText(callerNumber); |
| numberTypeTextView.setVisibility(View.VISIBLE); |
| numberTypeTextView.setText(callerNumberType); |
| } |
| } |
| |
| @Override |
| public final void setupEndButtonForRow(final int rowId) { |
| View endButton = mConferenceCallList[rowId].findViewById(R.id.conferenceCallerDisconnect); |
| endButton.setOnClickListener(new View.OnClickListener() { |
| @Override |
| public void onClick(View v) { |
| getPresenter().endConferenceConnection(rowId); |
| } |
| }); |
| } |
| |
| @Override |
| public final void setCanSeparateButtonForRow(final int rowId, boolean canSeparate) { |
| final View separateButton = mConferenceCallList[rowId].findViewById( |
| R.id.conferenceCallerSeparate); |
| |
| if (canSeparate) { |
| final View.OnClickListener separateThisConnection = new View.OnClickListener() { |
| @Override |
| public void onClick(View v) { |
| getPresenter().separateConferenceConnection(rowId); |
| } |
| }; |
| separateButton.setOnClickListener(separateThisConnection); |
| separateButton.setVisibility(View.VISIBLE); |
| } else { |
| separateButton.setVisibility(View.INVISIBLE); |
| } |
| } |
| |
| /** |
| * Starts the "conference time" chronometer. |
| */ |
| @Override |
| public void startConferenceTime(long base) { |
| if (mConferenceTime != null) { |
| mConferenceTime.setBase(base); |
| mConferenceTime.start(); |
| } |
| } |
| |
| /** |
| * Stops the "conference time" chronometer. |
| */ |
| @Override |
| public void stopConferenceTime() { |
| if (mConferenceTime != null) { |
| mConferenceTime.stop(); |
| } |
| } |
| } |