<?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. Match with Contact's dimens/call_button_height -->
    <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>
    <dimen name="dialpad_space_above_keys">29dp</dimen>
    <dimen name="dialpad_bottom_key_height">113dp</dimen>

    <!-- Just used in landscape mode -->
    <dimen name="emergency_dialer_digits_height">0px</dimen>
    <dimen name="dialpad_center_margin">3dp</dimen>
    <dimen name="dialpad_button_margin">3dp</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>
    <!-- Action bar dimensions.  Keep in sync with same value in Dialer. -->
    <dimen name="action_bar_height">56dp</dimen>
    <dimen name="action_bar_elevation">2dp</dimen>
    <dimen name="actionbar_contentInsetStart">72dp</dimen>

    <!-- Width, height and bottom margin for the floating action button. These values are
         intentionally larger than the values used inside Dialer, since the dialpad is larger
         inside the Emergency Dialer than the regular Dialer. -->
    <dimen name="floating_action_button_width">67dp</dimen>
    <dimen name="floating_action_button_height">67dp</dimen>
    <dimen name="floating_action_button_margin_bottom">26dp</dimen>
</resources>
