| <?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 |
| --> |
| |
| <!-- In-call onscreen touch UI elements, used on some platforms. |
| |
| This layout is a fullscreen overlay, drawn on top of the |
| non-touch-sensitive parts of the in-call UI (i.e. the call card). |
| |
| The top-level View here is a InCallTouchUi (FrameLayout) with 2 children: |
| (1) inCallControls: the widgets visible while a regular call (or calls) is in progress |
| (2) incomingCallWidget: the UI displayed while an incoming call is ringing |
| In usual cases, one of these is visible at any given moment. |
| One exception is when incomingCallWidget is fading-out. At that moment, we show |
| inCallControls beneath incomingCallWidget for smoother transition. |
| --> |
| |
| <!-- Main cluster of onscreen buttons on the lower part of the screen. --> |
| <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
| android:id="@+id/bottomButtons" |
| android:orientation="vertical" |
| android:layout_width="match_parent" |
| android:layout_height="wrap_content" |
| android:layout_alignParentBottom="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 "End call" button. --> |
| <ImageButton android:id="@+id/endButton" |
| style="@style/InCallEndButton" |
| android:layout_width="match_parent" |
| android:layout_marginTop="2dp" |
| android:src="@drawable/ic_in_call_phone_hangup" |
| android:background="@drawable/end_call_background" |
| android:contentDescription="@string/onscreenEndCallText"/> |
| |
| <!-- Row 3: The main batch of in-call buttons: |
| Dialpad / Audio mode / Mute / Hold / Add call |
| Visible in all states except while an incoming call is |
| ringing. --> |
| <LinearLayout |
| android:orientation="horizontal" |
| android:layout_width="match_parent" |
| android:layout_height="wrap_content" |
| android:paddingStart="@dimen/button_cluster_side_padding" |
| android:paddingEnd="@dimen/button_cluster_side_padding" |
| android:background="@color/button_background" |
| > |
| |
| <!-- This row has either 4 or 5 buttons, depending on |
| whether the device supports "Hold" (i.e. 4 buttons on |
| CDMA devices, 5 buttons on GSM devices.) The buttons |
| are interspersed with 'layout_weight="1"' placeholder |
| views so that they'll be spaced evenly in both cases. |
| |
| But note there are a couple of *pairs* of buttons that share a |
| single "slot", namely Hold/Swap and Add/Merge. For these, the |
| code in InCallTouchUi is responsible for making sure that at any |
| point exactly one of the pair is VISIBLE and the other is |
| GONE. --> |
| |
| <!-- Separator between left padding and 1st button --> |
| <View style="@style/VerticalSeparator"/> |
| |
| <!-- "Dialpad" --> |
| <!-- This is a "compound button": it has checked and unchecked states. --> |
| <ToggleButton android:id="@+id/dialpadButton" |
| style="@style/InCallCompoundButton" |
| android:background="@drawable/btn_compound_dialpad" |
| android:contentDescription="@string/onscreenShowDialpadText" |
| /> |
| |
| <!-- Separator between 1st and 2nd button --> |
| <View style="@style/VerticalSeparator"/> |
| |
| <!-- "Audio mode" --> |
| <!-- This is a multi-mode button that can behave either like a |
| simple "compound button" with two states *or* like an |
| action button that brings up a popup menu; see |
| btn_compound_audio.xml and InCallTouchUi.updateAudioButton() |
| for the full details. --> |
| <ImageButton android:id="@+id/audioButton" |
| style="@style/InCallButton" |
| android:background="@drawable/btn_compound_audio" |
| android:contentDescription="@string/onscreenAudioText" |
| /> |
| |
| <!-- Separator between 2nd and 3rd button --> |
| <View style="@style/VerticalSeparator"/> |
| |
| <!-- "Mute" --> |
| <!-- This is a "compound button": it has checked and unchecked states. --> |
| <ImageButton android:id="@+id/muteButton" |
| style="@style/InCallButton" |
| android:background="@drawable/btn_fake_compound_mute" |
| android:contentDescription="@string/onscreenMuteText" |
| /> |
| |
| <!-- Separator between 3rd and 4th button --> |
| <View style="@style/VerticalSeparator"/> |
| |
| <!-- This slot is either "Hold" or "Swap", depending on |
| the state of the call. One or the other of these |
| must always be set to GONE. --> |
| <!-- "Hold" --> |
| <!-- This is a "compound button": it has checked and unchecked states. --> |
| <ImageButton android:id="@+id/holdButton" |
| style="@style/InCallButton" |
| android:background="@drawable/btn_fake_compound_hold" |
| android:contentDescription="@string/onscreenHoldText" |
| /> |
| <!-- "Swap" (or "Manage calls" in some CDMA states) --> |
| <ImageButton android:id="@+id/swapButton" |
| style="@style/InCallButton" |
| android:src="@drawable/ic_incall_switch_holo_dark" |
| android:contentDescription="@string/onscreenSwapCallsText" |
| android:visibility="gone" |
| /> |
| |
| <!-- Separator between 4th and 5th button (if 5th exists) --> |
| <View android:id="@+id/holdSwapSpacer" |
| style="@style/VerticalSeparator"/> |
| |
| <!-- This slot is either "Add" or "Merge", depending on |
| the state of the call. One or the other of these |
| must always be set to GONE. --> |
| <!-- "Add Call" --> |
| <ImageButton android:id="@+id/addButton" |
| style="@style/InCallButton" |
| android:src="@drawable/ic_add_contact_holo_dark" |
| android:contentDescription="@string/onscreenAddCallText" |
| android:visibility="gone" |
| /> |
| <!-- "Merge calls" --> |
| <!-- This button is used only on GSM devices, where we know |
| that "Add" and "Merge" are never available at the same time. |
| The "Merge" button for CDMA devices is "cdmaMergeButton" above. --> |
| <ImageButton android:id="@+id/mergeButton" |
| style="@style/InCallButton" |
| android:src="@drawable/ic_merge_holo_dark" |
| android:contentDescription="@string/onscreenMergeCallsText" |
| android:visibility="gone" |
| /> |
| |
| <!-- Separator between 4th (or 5th) button and right padding --> |
| <View style="@style/VerticalSeparator"/> |
| |
| </LinearLayout> |
| |
| </LinearLayout> |