diff options
author | Andrew Lee <anwlee@google.com> | 2014-08-22 18:11:31 -0700 |
---|---|---|
committer | Andrew Lee <anwlee@google.com> | 2014-08-22 18:43:15 -0700 |
commit | 1da81ce59cfbebd4e53fdfd2011e859069120de7 (patch) | |
tree | a0bbfdf8fa969627afc08ccfd82ce7ac88a1093a /InCallUI | |
parent | 5ef89ed01f89a78c28b09b4d4a218c6a47a9d03e (diff) |
Move "manage conference calls" button above photo.
- Remove it from the CallButtonFragment. This meant that related
logic was removed from CallButtonFragment/Presenter, and similar
logic was added to the CallCardFragment/Presenter.
- Delete old groups icons. (new ones added in ContactsCommon)
- Delete the extra_button_row logic.
+ Replace extra_button_row with a dedicated "manage conference
calls" button, and added to call card content layouts.
+ Style the new button to be similar to the secondary call info.
Bug: 15862303
Change-Id: I2b4e1a3a30422c7d5e9c01479f13291a785d85f3
Diffstat (limited to 'InCallUI')
19 files changed, 100 insertions, 152 deletions
diff --git a/InCallUI/res/drawable-hdpi/ic_groups_holo_dark.png b/InCallUI/res/drawable-hdpi/ic_groups_holo_dark.png Binary files differdeleted file mode 100644 index 6194506d4..000000000 --- a/InCallUI/res/drawable-hdpi/ic_groups_holo_dark.png +++ /dev/null diff --git a/InCallUI/res/drawable-ldrtl-hdpi/ic_groups_holo_dark.png b/InCallUI/res/drawable-ldrtl-hdpi/ic_groups_holo_dark.png Binary files differdeleted file mode 100644 index 185c55bab..000000000 --- a/InCallUI/res/drawable-ldrtl-hdpi/ic_groups_holo_dark.png +++ /dev/null diff --git a/InCallUI/res/drawable-ldrtl-mdpi/ic_groups_holo_dark.png b/InCallUI/res/drawable-ldrtl-mdpi/ic_groups_holo_dark.png Binary files differdeleted file mode 100644 index 844bed3f0..000000000 --- a/InCallUI/res/drawable-ldrtl-mdpi/ic_groups_holo_dark.png +++ /dev/null diff --git a/InCallUI/res/drawable-ldrtl-xhdpi/ic_groups_holo_dark.png b/InCallUI/res/drawable-ldrtl-xhdpi/ic_groups_holo_dark.png Binary files differdeleted file mode 100644 index 38ea395c5..000000000 --- a/InCallUI/res/drawable-ldrtl-xhdpi/ic_groups_holo_dark.png +++ /dev/null diff --git a/InCallUI/res/drawable-mdpi/ic_groups_holo_dark.png b/InCallUI/res/drawable-mdpi/ic_groups_holo_dark.png Binary files differdeleted file mode 100644 index fefee322e..000000000 --- a/InCallUI/res/drawable-mdpi/ic_groups_holo_dark.png +++ /dev/null diff --git a/InCallUI/res/drawable-xhdpi/ic_groups_holo_dark.png b/InCallUI/res/drawable-xhdpi/ic_groups_holo_dark.png Binary files differdeleted file mode 100644 index 470ca2795..000000000 --- a/InCallUI/res/drawable-xhdpi/ic_groups_holo_dark.png +++ /dev/null diff --git a/InCallUI/res/drawable-xxhdpi/ic_groups_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_groups_holo_dark.png Binary files differdeleted file mode 100644 index 6fdaa5d35..000000000 --- a/InCallUI/res/drawable-xxhdpi/ic_groups_holo_dark.png +++ /dev/null diff --git a/InCallUI/res/layout-land/call_card_content.xml b/InCallUI/res/layout-land/call_card_content.xml index f3173532f..ddcd40342 100644 --- a/InCallUI/res/layout-land/call_card_content.xml +++ b/InCallUI/res/layout-land/call_card_content.xml @@ -65,6 +65,11 @@ android:contentDescription="@string/contactPhoto" android:src="@drawable/picture_unknown" /> + <include layout="@layout/manage_conference_call_button" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignTop="@id/photo" /> + <fragment android:name="com.android.incallui.VideoCallFragment" android:layout_alignParentStart="true" android:layout_gravity="start|center_vertical" diff --git a/InCallUI/res/layout/call_button_fragment.xml b/InCallUI/res/layout/call_button_fragment.xml index 6b7e17aa9..aa87d0c1a 100644 --- a/InCallUI/res/layout/call_button_fragment.xml +++ b/InCallUI/res/layout/call_button_fragment.xml @@ -40,17 +40,6 @@ android:animateLayoutChanges="true" android:visibility="invisible" > - <!-- Row 1, the "extra button row": A couple of relatively rare - buttons used only in certain call states. - Most of the time this whole row is GONE. - For now, at least, there's only ever one button visible here - at a time, so this can be a simple FrameLayout. --> - <include android:id="@+id/extraButtonRow" - layout="@layout/extra_button_row" - android:layout_width="match_parent" - android:layout_height="wrap_content" /> - - <!-- Row 2: The main batch of in-call buttons. --> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" diff --git a/InCallUI/res/layout/call_card_content.xml b/InCallUI/res/layout/call_card_content.xml index c45553f6d..6d0ee8802 100644 --- a/InCallUI/res/layout/call_card_content.xml +++ b/InCallUI/res/layout/call_card_content.xml @@ -55,6 +55,7 @@ android:visibility="gone" android:padding="@dimen/call_banner_side_padding" android:background="@android:color/white" /> + </LinearLayout> <!-- Contact photo for primary call info --> @@ -98,6 +99,11 @@ <!-- Secondary "Call info" block, for the background ("on hold") call. --> <include layout="@layout/secondary_call_info" /> + <include layout="@layout/manage_conference_call_button" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignTop="@id/photo" /> + <!-- Placeholder for the dialpad which is replaced with the dialpad fragment when shown. --> <FrameLayout android:id="@+id/dialpadFragmentContainer" diff --git a/InCallUI/res/layout/extra_button_row.xml b/InCallUI/res/layout/extra_button_row.xml deleted file mode 100644 index 417c4d6b9..000000000 --- a/InCallUI/res/layout/extra_button_row.xml +++ /dev/null @@ -1,49 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ 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 - --> - -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@color/button_background_color"> - <!-- The buttons here have a text label floating off to the side - (which is necessary because these buttons are used only in - a few rare states, and the meaning of the icon might not be - obvious.) The entire row (button + text) is clickable. --> - - <!-- "Manage conference" --> - <!-- This button is used only on GSM devices, during a conference call. --> - <LinearLayout android:id="@+id/manageConferenceButton" - android:orientation="horizontal" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingStart="@dimen/button_cluster_horizontal_padding" - android:paddingEnd="@dimen/button_cluster_horizontal_padding" - android:background="?android:attr/selectableItemBackground" - android:visibility="gone"> - <!-- The entire LinearLayout here is clickable, so we don't - care about clicks on the ImageButton itself. --> - <ImageButton android:id="@+id/manageConferenceButtonImage" - android:clickable="false" - style="@style/InCallExtraRowButton" - android:src="@drawable/ic_groups_holo_dark" - android:contentDescription="@string/onscreenManageConferenceText" /> - <TextView android:id="@+id/manageConferenceButtonLabel" - style="@style/InCallExtraRowButtonLabel" - android:text="@string/onscreenManageConferenceText" /> - </LinearLayout> - -</FrameLayout> diff --git a/InCallUI/res/layout/manage_conference_call_button.xml b/InCallUI/res/layout/manage_conference_call_button.xml new file mode 100644 index 000000000..d8ddf2189 --- /dev/null +++ b/InCallUI/res/layout/manage_conference_call_button.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ 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 + --> + +<!-- This button is used only on GSM devices, during a conference call. --> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/manage_conference_call_button" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingStart="@dimen/call_banner_side_padding" + android:paddingEnd="@dimen/secondary_call_banner_right_padding" + android:paddingTop="@dimen/call_banner_secondary_call_top_bottom_padding" + android:paddingBottom="@dimen/call_banner_secondary_call_top_bottom_padding" + android:background="@color/incall_banner_secondary_background_color"> + + <!-- The entire LinearLayout here is clickable, so we ignore ImageButton clicks. --> + <ImageView android:id="@+id/manageConferenceButtonImage" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/ic_group_white_24dp" + android:tint="@color/incall_banner_secondary_text_color" + android:contentDescription="@string/onscreenManageConferenceText" /> + + <TextView android:id="@+id/manageConferenceButtonLabel" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="24dp" + android:gravity="center_vertical" + android:textAppearance="?android:attr/textAppearanceMedium" + android:textColor="@color/incall_banner_secondary_text_color" + android:text="@string/onscreenManageConferenceText" /> + +</LinearLayout> diff --git a/InCallUI/res/values/dimens.xml b/InCallUI/res/values/dimens.xml index 6bf80f314..8648c8c13 100644 --- a/InCallUI/res/values/dimens.xml +++ b/InCallUI/res/values/dimens.xml @@ -50,12 +50,6 @@ <!-- Height and width of the in-call buttons. --> <dimen name="in_call_button_dimension">48dp</dimen> - <!-- Width of buttons in the extra button row. --> - <dimen name="extra_row_button_width">56dp</dimen> - - <!-- Height of buttons in the extra button row. --> - <dimen name="extra_row_button_height">@dimen/in_call_button_dimension</dimen> - <dimen name="primary_call_elevation">4dp</dimen> <dimen name="secondary_call_elevation">4dp</dimen> diff --git a/InCallUI/res/values/styles.xml b/InCallUI/res/values/styles.xml index 06aeb8738..f49cee910 100644 --- a/InCallUI/res/values/styles.xml +++ b/InCallUI/res/values/styles.xml @@ -70,27 +70,6 @@ <item name="android:textOff">@null</item> </style> - <!-- Buttons in extra button row. --> - <style name="InCallExtraRowButton"> - <item name="android:layout_width">@dimen/extra_row_button_width</item> - <item name="android:layout_height">@dimen/extra_row_button_height</item> - <item name="android:background">@null</item> - </style> - - <!-- Text label drawn alongside buttons in the "extra button row" of - the in-call onscreen touch UI. --> - <style name="InCallExtraRowButtonLabel"> - <item name="android:textAppearance">?android:attr/textAppearanceSmall</item> - <item name="android:textColor">@color/incall_call_banner_text_color</item> - <item name="android:textAllCaps">true</item> - <item name="android:textStyle">bold</item> - <item name="android:layout_width">wrap_content</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:layout_gravity">center_vertical</item> - <item name="android:layout_marginStart">5dip</item> - <item name="android:layout_marginEnd">5dip</item> - </style> - <style name="InCallAnimationStyle" parent="@android:style/Animation.Activity"> <!-- Suppress task-to-task animation happening during the transition from OutgoingCallBroadcaster (and SipOptionHandler) to InCallActivity. diff --git a/InCallUI/src/com/android/incallui/CallButtonFragment.java b/InCallUI/src/com/android/incallui/CallButtonFragment.java index 5744cc5a1..14d1363ab 100644 --- a/InCallUI/src/com/android/incallui/CallButtonFragment.java +++ b/InCallUI/src/com/android/incallui/CallButtonFragment.java @@ -58,8 +58,6 @@ public class CallButtonFragment private PopupMenu mAudioModePopup; private boolean mAudioModePopupVisible; private PopupMenu mOverflowPopup; - private View mExtraRowButton; - private View mManageConferenceButton; private int mPrevAudioMode = 0; @@ -90,11 +88,6 @@ public class CallButtonFragment Bundle savedInstanceState) { final View parent = inflater.inflate(R.layout.call_button_fragment, container, false); - mExtraRowButton = parent.findViewById(R.id.extraButtonRow); - - mManageConferenceButton = parent.findViewById(R.id.manageConferenceButton); - mManageConferenceButton.setOnClickListener(this); - mAudioButton = (ImageButton) parent.findViewById(R.id.audioButton); mAudioButton.setOnClickListener(this); mChangeToVoiceButton = (ImageButton) parent.findViewById(R.id.changeToVoiceButton); @@ -191,9 +184,6 @@ public class CallButtonFragment case R.id.overflowButton: mOverflowPopup.show(); break; - case R.id.manageConferenceButton: - getPresenter().manageConferenceButtonClicked(); - break; default: Log.wtf(this, "onClick: unexpected"); break; @@ -660,28 +650,10 @@ public class CallButtonFragment } @Override - public void displayManageConferencePanel(boolean value) { - if (getActivity() != null && getActivity() instanceof InCallActivity) { - ((InCallActivity) getActivity()).displayManageConferencePanel(value); - } - } - - @Override public Context getContext() { return getActivity(); } - @Override - public void showManageConferenceCallButton() { - mExtraRowButton.setVisibility(View.VISIBLE); - mManageConferenceButton.setVisibility(View.VISIBLE); - } - - @Override - public void hideExtraRow() { - mExtraRowButton.setVisibility(View.GONE); - } - private void maybeSendAccessibilityEvent(View view, int stringId) { final Context context = getActivity(); AccessibilityManager manager = diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java index 393c0f6ac..8a5170c88 100644 --- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java +++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java @@ -165,10 +165,6 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto setAudioMode(newMode); } - public void manageConferenceButtonClicked() { - getUi().displayManageConferencePanel(true); - } - public void muteClicked(boolean checked) { Log.d(this, "turning on mute: " + checked); TelecommAdapter.getInstance().mute(checked); @@ -219,7 +215,6 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto public void showDialpadClicked(boolean checked) { Log.v(this, "Show dialpad " + String.valueOf(checked)); getUi().displayDialpad(checked /* show */, true /* animate */); - updateExtraButtonRow(checked); } public void changeToVideoClicked() { @@ -409,25 +404,6 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto ui.enableHold(enableHoldOption); ui.showSwapButton(showSwapOption); } - - // Only show the conference call button if we are not in a generic conference. - // On CDMA devices, instead of a conference call button we show "add" and "merge" buttons. - mShowManageConference = (call.isConferenceCall() && !isGenericConference); - updateExtraButtonRow(ui.isDialpadVisible()); - } - - private void updateExtraButtonRow(boolean isDialpadVisible) { - final boolean showExtraButtonRow = mShowManageConference && !isDialpadVisible; - - Log.d(this, "mShowManageConference : " + mShowManageConference); - Log.d(this, "isDialpadVisible: " + isDialpadVisible); - if (showExtraButtonRow) { - if (mShowManageConference) { - getUi().showManageConferenceCallButton(); - } - } else { - getUi().hideExtraRow(); - } } public void refreshMuteState() { @@ -468,9 +444,6 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto void setSupportedAudio(int mask); void configureOverflowMenu(boolean showMergeMenuOption, boolean showAddMenuOption, boolean showHoldMenuOption, boolean showSwapMenuOption); - void showManageConferenceCallButton(); - void hideExtraRow(); - void displayManageConferencePanel(boolean on); Context getContext(); } } diff --git a/InCallUI/src/com/android/incallui/CallCardFragment.java b/InCallUI/src/com/android/incallui/CallCardFragment.java index bd32684d0..600689c84 100644 --- a/InCallUI/src/com/android/incallui/CallCardFragment.java +++ b/InCallUI/src/com/android/incallui/CallCardFragment.java @@ -90,6 +90,8 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr private ImageView mSecondaryCallProviderIcon; private View mProgressSpinner; + private View mManageConferenceCallButton; + // Dark number info bar private TextView mInCallMessageLabel; @@ -165,10 +167,9 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr mPhoneNumber = (TextView) view.findViewById(R.id.phoneNumber); mPrimaryName = (TextView) view.findViewById(R.id.name); mNumberLabel = (TextView) view.findViewById(R.id.label); - mSecondaryCallInfo = (View) view.findViewById(R.id.secondary_call_info); - mSecondaryCallProviderInfo = (View) view.findViewById(R.id.secondary_call_provider_info); + mSecondaryCallInfo = view.findViewById(R.id.secondary_call_info); + mSecondaryCallProviderInfo = view.findViewById(R.id.secondary_call_provider_info); mPhoto = (ImageView) view.findViewById(R.id.photo); - mCallStateButton = view.findViewById(R.id.callStateButton); mCallStateIcon = (ImageView) view.findViewById(R.id.callStateIcon); mCallStateVideoCallIcon = (ImageView) view.findViewById(R.id.videoCallIcon); mCallStateLabel = (TextView) view.findViewById(R.id.callStateLabel); @@ -215,15 +216,25 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr } }); - mPrimaryName.setElegantTextHeight(false); - mCallStateLabel.setElegantTextHeight(false); - + mCallStateButton = view.findViewById(R.id.callStateButton); mCallStateButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getPresenter().phoneAccountClicked(); } }); + + mManageConferenceCallButton = view.findViewById(R.id.manage_conference_call_button); + mManageConferenceCallButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + InCallActivity activity = (InCallActivity) getActivity(); + activity.showConferenceCallManager(); + } + }); + + mPrimaryName.setElegantTextHeight(false); + mCallStateLabel.setElegantTextHeight(false); } @Override @@ -840,6 +851,16 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr mPhoto.setVisibility(isVisible ? View.VISIBLE : View.GONE); } + /** + * Changes the visibility of the "manage conference call" button. + * + * @param visible Whether to set the button to be visible or not. + */ + @Override + public void showManageConferenceCallButton(boolean visible) { + mManageConferenceCallButton.setVisibility(visible ? View.VISIBLE : View.GONE); + } + private void dispatchPopulateAccessibilityEvent(AccessibilityEvent event, View view) { if (view == null) return; final List<CharSequence> eventText = event.getText(); diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java index 5f98aa9df..b746267e8 100644 --- a/InCallUI/src/com/android/incallui/CallCardPresenter.java +++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java @@ -249,6 +249,8 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> callState != Call.State.ONHOLD)); } + maybeShowManageConferenceCallButton(); + final boolean enableEndCallButton = Call.State.isConnectingOrConnected(callState) && callState != Call.State.INCOMING && mPrimary != null; // Hide the end call button instantly if we're receiving an incoming call. @@ -291,6 +293,16 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> } } + /** + * Only show the conference call button if we are not in a generic conference. + * On CDMA devices, instead of a manage conference call button, we show "add" and "merge" + * buttons in the {@link CallButtonFragment}. + */ + private void maybeShowManageConferenceCallButton() { + final boolean isGenericConference = mPrimary.can(PhoneCapabilities.GENERIC_CONFERENCE); + getUi().showManageConferenceCallButton(mPrimary.isConferenceCall() && !isGenericConference); + } + private void setCallbackNumber() { String callbackNumber = null; @@ -658,6 +670,7 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> void setCallbackNumber(String number, boolean isEmergencyCalls); void setPhotoVisible(boolean isVisible); void setProgressSpinnerVisible(boolean visible); + void showManageConferenceCallButton(boolean visible); } private TelecommManager getTelecommManager() { diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java index 02635dccc..f09203369 100644 --- a/InCallUI/src/com/android/incallui/InCallActivity.java +++ b/InCallUI/src/com/android/incallui/InCallActivity.java @@ -586,10 +586,8 @@ public class InCallActivity extends Activity { return mDialpadFragment != null && mDialpadFragment.isVisible(); } - public void displayManageConferencePanel(boolean showPanel) { - if (showPanel) { - mConferenceManagerFragment.setVisible(true); - } + public void showConferenceCallManager() { + mConferenceManagerFragment.setVisible(true); } public void showPostCharWaitDialog(String callId, String chars) { |