1<?xml version="1.0" encoding="utf-8"?> 2<!-- Copyright (C) 2009 The Android Open Source Project 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15--> 16 17<!-- In-call onscreen touch UI elements, used on some platforms. 18 19 This layout is a fullscreen overlay, drawn on top of the 20 non-touch-sensitive parts of the in-call UI (i.e. the call card). 21 22 The top-level View here is a FrameLayout with 2 children: 23 (1) incomingCallWidget: the UI displayed while an incoming call is ringing 24 (2) inCallControls: the widgets visible while a regular call (or calls) is in progress 25 Exactly one of these is visible at any given moment. 26 --> 27<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 28 android:layout_width="match_parent" 29 android:layout_height="match_parent" 30 > 31 32 <!-- (1) incomingCallWidget: the UI displayed while an incoming call is ringing. --> 33 <com.android.internal.widget.SlidingTab 34 android:id="@+id/incomingCallWidget" 35 android:layout_width="match_parent" 36 android:layout_height="wrap_content" 37 android:visibility="gone" 38 android:layout_alignParentBottom="true" 39 android:layout_marginBottom="80dip" 40 /> 41 42 <!-- 43 (2) inCallControls: the widgets visible while a regular call 44 (or calls) is in progress 45 --> 46 <RelativeLayout android:id="@+id/inCallControls" 47 android:layout_width="match_parent" 48 android:layout_height="match_parent" 49 android:layout_alignParentTop="true" 50 android:visibility="gone" 51 > 52 <!-- Buttons visible in the upper corners of the screen (in some states). --> 53 <!-- These are small round ImageButtons with a text label floating 54 off to the side. --> 55 56 <!-- "Hold" (upper left) --> 57 <!-- (Note "Hold", "Swap" and "Merge" are never available at 58 the same time. That's why it's OK for them to be in the 59 same position onscreen.) --> 60 <LinearLayout android:id="@+id/holdButtonContainer" 61 style="@style/InCallRoundButtonContainer" 62 android:layout_alignParentLeft="true" 63 android:layout_marginLeft="10dip" 64 android:visibility="gone"> 65 <ImageButton android:id="@+id/holdButton" 66 style="@style/InCallRoundTouchButton" 67 android:src="@drawable/ic_in_call_touch_round_hold" 68 android:contentDescription="@string/onscreenHoldText" /> 69 <TextView android:id="@+id/holdButtonLabel" 70 style="@style/InCallRoundButtonLabel" /> 71 </LinearLayout> 72 73 <!-- "Swap" (upper left) --> 74 <!-- This button's label changes to "Manage calls" in some CDMA states. --> 75 <LinearLayout android:id="@+id/swapButtonContainer" 76 style="@style/InCallRoundButtonContainer" 77 android:layout_alignParentLeft="true" 78 android:layout_marginLeft="10dip" 79 android:visibility="gone"> 80 <ImageButton android:id="@+id/swapButton" 81 style="@style/InCallRoundTouchButton" 82 android:src="@drawable/ic_in_call_touch_round_swap" 83 android:contentDescription="@string/onscreenSwapCallsText"/> 84 <TextView android:id="@+id/swapButtonLabel" 85 style="@style/InCallRoundButtonLabel" /> 86 </LinearLayout> 87 88 <!-- CDMA-specific "Merge" (upper left) --> 89 <!-- This button is used only on CDMA devices, where we can't use 90 the Merge button in the main cluster (because the "Add Call" 91 button might need to be enabled at the same time.) --> 92 <LinearLayout android:id="@+id/cdmaMergeButtonContainer" 93 style="@style/InCallRoundButtonContainer" 94 android:layout_alignParentLeft="true" 95 android:layout_marginLeft="10dip" 96 android:visibility="gone"> 97 <ImageButton android:id="@+id/cdmaMergeButton" 98 style="@style/InCallRoundTouchButton" 99 android:src="@drawable/ic_in_call_touch_round_merge_call" 100 android:contentDescription="@string/onscreenMergeCallsText" /> 101 <TextView 102 style="@style/InCallRoundButtonLabel" 103 android:text="@string/onscreenMergeCallsText" /> 104 </LinearLayout> 105 106 <!-- DTMF dialpad shown in the upper part of the screen 107 (above the main cluster of buttons.) --> 108 <!-- TODO: this should be a ViewStub, and should only get inflated 109 when first needed. --> 110 <include layout="@layout/non_drawer_dialpad"/> 111 112 <!-- Main cluster of onscreen buttons on the lower part of the screen. --> 113 <LinearLayout android:id="@+id/bottomButtons" 114 android:orientation="vertical" 115 android:layout_width="match_parent" 116 android:layout_height="wrap_content" 117 android:layout_alignParentBottom="true" 118 android:paddingLeft="4dip" 119 android:paddingRight="4dip" 120 android:paddingBottom="4dip" 121 > 122 123 <LinearLayout android:id="@+id/inCallControlsRow1" 124 android:orientation="horizontal" 125 android:layout_width="match_parent" 126 android:layout_height="wrap_content" 127 > 128 <!-- The buttons in the top row all have an icon *and* a 129 text label, so we use a <Button> with a "top" 130 compound drawable (rather than an ImageButton, which 131 can't have a label.) Some buttons set the icon image 132 here; others do it from Java if the image depends on 133 the current state of the call. --> 134 135 <!-- The upper-left button in the main cluster is either 136 "Add" or "Merge", depending on the state of the call. --> 137 <FrameLayout 138 android:layout_width="1dip" 139 android:layout_weight="1" 140 android:layout_height="wrap_content" 141 android:layout_marginTop="8dip" 142 android:layout_marginBottom="8dip" 143 android:layout_marginLeft="8dip" 144 android:layout_marginRight="8dip" 145 > 146 <!-- "Add Call" --> 147 <Button android:id="@+id/addButton" 148 style="@style/InCallTouchButton" 149 android:layout_width="match_parent" 150 android:layout_height="wrap_content" 151 android:layout_marginTop="0dip" 152 android:layout_marginBottom="0dip" 153 android:layout_marginLeft="0dip" 154 android:layout_marginRight="0dip" 155 android:text="@string/onscreenAddCallText" 156 android:drawableTop="@drawable/ic_in_call_touch_add_call" 157 /> 158 <!-- "Merge calls" --> 159 <!-- This button is used only on GSM devices, where we know 160 that "Add" and "Merge" are never available at the same time. 161 The "Merge" button for CDMA devices is "cdmaMergeButton" above. --> 162 <Button android:id="@+id/mergeButton" 163 style="@style/InCallTouchButton" 164 android:layout_width="match_parent" 165 android:layout_height="wrap_content" 166 android:layout_marginTop="0dip" 167 android:layout_marginBottom="0dip" 168 android:layout_marginLeft="0dip" 169 android:layout_marginRight="0dip" 170 android:text="@string/onscreenMergeCallsText" 171 android:drawableTop="@drawable/ic_in_call_touch_merge_call" 172 /> 173 </FrameLayout> 174 175 <!-- "End call" --> 176 <Button android:id="@+id/endButton" 177 style="@style/InCallTouchButton" 178 android:layout_width="1dip" 179 android:layout_weight="1" 180 android:layout_height="wrap_content" 181 android:text="@string/onscreenEndCallText" 182 android:drawableTop="@drawable/ic_in_call_touch_end" 183 android:textColor="@color/incall_endButtonLabel" 184 /> 185 186 <!-- "Dialpad" --> 187 <Button android:id="@+id/dialpadButton" 188 style="@style/InCallTouchButton" 189 android:layout_width="1dip" 190 android:layout_weight="1" 191 android:layout_height="wrap_content" 192 android:text="@string/onscreenShowDialpadText" 193 /> 194 </LinearLayout> 195 <LinearLayout android:id="@+id/inCallControlsRow2" 196 android:orientation="horizontal" 197 android:layout_width="match_parent" 198 android:layout_height="wrap_content" 199 > 200 <!-- "Bluetooth" --> 201 <ToggleButton android:id="@+id/bluetoothButton" 202 style="@style/InCallTouchToggleButton" 203 android:layout_width="1dip" 204 android:layout_weight="1" 205 android:layout_height="wrap_content" 206 android:textOn="@string/onscreenBluetoothText" 207 android:textOff="@string/onscreenBluetoothText" 208 /> 209 <!-- "Mute" --> 210 <ToggleButton android:id="@+id/muteButton" 211 style="@style/InCallTouchToggleButton" 212 android:layout_width="1dip" 213 android:layout_weight="1" 214 android:layout_height="wrap_content" 215 android:textOn="@string/onscreenMuteText" 216 android:textOff="@string/onscreenMuteText" 217 /> 218 <!-- "Speaker" --> 219 <ToggleButton android:id="@+id/speakerButton" 220 style="@style/InCallTouchToggleButton" 221 android:layout_width="1dip" 222 android:layout_weight="1" 223 android:layout_height="wrap_content" 224 android:textOn="@string/onscreenSpeakerText" 225 android:textOff="@string/onscreenSpeakerText" 226 /> 227 </LinearLayout> 228 229 </LinearLayout> 230 231 </RelativeLayout> 232 233</RelativeLayout> 234