<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2011 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.
-->

<resources>
    <!-- Dimensions for CallCard elements (the normal in-call UI) -->

    <!-- Height of the "call banner" overlay on top of the upper part of
         the call info area. -->
    <dimen name="call_banner_height">80dp</dimen>

    <!-- Margin between the bottom of the "call card" photo
         and the top of the in-call button cluster. -->
    <dimen name="in_call_touch_ui_upper_margin">2dp</dimen>

    <!-- Padding at the left and right edges of the "call banner". -->
    <dimen name="call_banner_side_padding">24dp</dimen>
    <!-- Padding at the top and bottom edges of the "call banner". -->
    <dimen name="call_banner_top_bottom_padding">16dp</dimen>

    <!-- Padding at the top and bottom edges of the "provider information" -->
    <dimen name="provider_info_top_bottom_padding">8dp</dimen>

    <!-- Right padding for name and number fields in the call banner.
         This padding is used to ensure that ultra-long names or
         numbers won't overlap the elapsed time indication. -->
    <dimen name="call_banner_name_number_right_padding">50sp</dimen>

    <!-- Height of the main row of in-call buttons. -->
    <dimen name="in_call_button_height">76dp</dimen>

    <!-- Height of the in-call "End" button. -->
    <dimen name="in_call_end_button_height">74dp</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_height</dimen>

    <!-- Padding at the left and right edges of the incall_touch_ui button
         cluster.  This padding is necessary because we can't allow the
         buttons to be very close to the edges of the screen, due to the
         risk of false touches (from your finger wrapping around while
         holding the phone, *before* moving it up to your face and having
         the prox sensor kick in.) -->
    <dimen name="button_cluster_side_padding">20dp</dimen>


    <!-- Dimensions for OTA Call Card -->
    <dimen name="otaactivate_layout_marginTop">10dp</dimen>
    <dimen name="otalistenprogress_layout_marginTop">5dp</dimen>
    <dimen name="otasuccessfail_layout_marginTop">10dp</dimen>


    <!-- Dimensions for Emergency Dialer and dialpad inside the in-call screen -->
    <dimen name="dialpad_horizontal_margin">4dp</dimen>
    <dimen name="dialpad_vertical_margin">2dp</dimen>
    <dimen name="dialpad_digits_text_size">35sp</dimen>
    <!-- Just used in landscape mode -->
    <dimen name="emergency_dialer_digits_height">0px</dimen>

    <!-- Layout weight values for dialpad screen. These layouts will be used in one
         LinearLayout (dialpad_fragment.xml), configuring dialpad screen's vertical
         ratio. -->
    <integer name="dialpad_layout_weight_digits">20</integer>
    <integer name="dialpad_layout_weight_dialpad">65</integer>
    <integer name="dialpad_layout_weight_additional_buttons">15</integer>

    <!-- Dimension used to possibly down-scale high-res photo into what is suitable
         for notification's large icon. -->
    <dimen name="notification_icon_size">64dp</dimen>

    <!-- Circle size for incoming call widget's each item. -->
    <dimen name="incoming_call_widget_circle_size">94dp</dimen>
    <!-- Margin used for incoming call widget's icon for each item.
         This should be same as "(incoming_call_widget_circle_size - icon_size)/2".
         Right now answer/decline/reject icons have 38dp width/height.
         So, (94 - 38)/2 ==> 28dp -->
    <dimen name="incoming_call_widget_asset_margin">28dp</dimen>

</resources>
