<?xml version="1.0" encoding="utf-8"?>
<!--
     Copyright (C) 2011 Google Inc.
     Licensed to 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>
    <!-- Boolean value indicating whether the tablet UI should be used. -->
    <bool name="use_tablet_ui">false</bool>
    <integer name="conversation_header_mode">1</integer>
    <integer name="conversation_list_search_header_mode">1</integer>

    <!-- left/right conversations will auto-load if they have no more than this number of messages -->
    <integer name="max_auto_load_messages">20</integer>

    <!-- Frequency (in milliseconds) for the refresh of timestamps in conversation list fragments. -->
    <integer name="timestamp_update_interval">60000</integer>

    <integer name="conversation_list_weight">2</integer>
    <integer name="conversation_view_weight">3</integer>
    <!-- Max unread count to show for a folder -->
    <integer name="maxUnreadCount">99</integer>
    <integer name="swipeScrollSlop">2</integer>
    <integer name="leaveBehindSwipeScrollSlop">25</integer>
    <integer name="widget_refresh_delay_ms">4000</integer>
    <integer name="widget_folder_refresh_delay_ms">500</integer>
    <!-- Flip interval for account name and unread count -->
    <integer name="widget_account_unread_flip_ms">5000</integer>
    <!-- We don't want the unread count to flicker too much in the action bar, when a lot of
    activity.  Throttle loader updates. -->
    <integer name="folder_item_refresh_delay_ms">500</integer>
    <!-- Delay showing undo bar after a destructive action long enough for the user to process the animations for what just happened -->
    <integer name="show_undo_bar_delay_ms">200</integer>
    <!-- Delay dismissing undo bar after a touch so we know whether to hide the action bar or to reposition it during view mode change -->
    <integer name="dismiss_undo_bar_delay_ms">300</integer>
    <!-- Amount of time spent animating the popup and push down of the snack bar -->
    <integer name="toast_bar_animation_duration_ms">300</integer>
    <!-- The smallest amount of time the toast bar must remain visible -->
    <integer name="toast_bar_min_duration_ms">500</integer>
    <!-- The largest amount of time the toast bar can remain visible -->
    <integer name="toast_bar_max_duration_ms">5000</integer>
    <integer name="conversation_desired_font_size_px">14</integer>
    <!-- matches 'font-size' style in template_conversation_upper.html -->
    <integer name="conversation_unstyled_font_size_px">13</integer>
    <integer name="conversation_webview_viewport_px">980</integer>

    <!-- Whether we are in landscape mode on a tablet or not -->
    <bool name="is_tablet_landscape">false</bool>

    <!-- Whether to show single or 2 pane search results -->
    <bool name="show_two_pane_search_results">false</bool>

    <!-- Amount of memory in bytes allocated for image cache -->
    <integer name="config_image_cache_max_bytes">1500000</integer>

    <!-- Number of decoded contact photo bitmaps retained in an LRU cache -->
    <integer name="config_image_cache_max_bitmaps">24</integer>

    <!-- Whether to display folder colors in the widget -->
    <bool name="display_folder_colors_in_widget">true</bool>

    <integer name="max_num_notification_digest_items">10</integer>

    <!-- Wait at least this long for the webview to render conversation content before showing the loading dialog -->
    <integer name="conversationview_show_loading_delay">500</integer>

    <!-- Wait at least this long to dismiss the spinner when loading a conversation -->
    <integer name="conversationview_min_show_loading">500</integer>

    <integer name="webview_initial_delay">1000</integer>

    <!-- The width or height of the preview will not exceed this -->
    <integer name="attachment_preview_max_size">256</integer>

    <!-- The timeout, in milliseconds, before the "Undo" notification is removed. -->
    <integer name="undo_notification_timeout">6000</integer>

    <!-- The max number of contact images to show in a conversation list item -->
    <integer name="max_list_item_images">4</integer>


    <!-- True if addresses can be veiled, to show a friendly text message instead. -->
    <bool name="veiled_address_enabled">false</bool>

    <integer name="swipe_senders_length">25</integer>

    <!-- Duration of the animations for entering/exiting CAB mode -->
    <integer name="conv_item_view_cab_anim_duration">250</integer>

    <!-- Number of nested folders to display in the conversation list, before hiding the remainder under "Show more" -->
    <integer name="nested_folders_collapse_threshold">1</integer>

    <!-- True if messages should show inline images by default. -->
    <bool name="always_show_images_default">false</bool>

    <!-- Number of characters allowed for a vacation responder subject. -->
    <integer name="vacation_responder_subject_length">500</integer>
    <!-- Number of characters allowed for a vacation responder body. -->
    <integer name="vacation_responder_body_length">1024000</integer>

    <!-- Indicates whether help URLs should be opened by a system browser outside the application or with a webview inside the application -->
    <bool name="openHelpWithBrowser">true</bool>

    <!-- Used to force 70% of max width in compose for landscape tablet -->
    <integer name="compose_padding_weight">0</integer>
    <!-- Whether or not we should scroll down so cc aligns with the top -->
    <bool name="auto_scroll_cc">true</bool>

    <!-- Maximum number of folders to be displayed in the thread list -->
    <integer name="conversation_list_max_folder_count">4</integer>
    <integer name="folder_max_width_proportion">31</integer>
    <integer name="folder_cell_max_width_proportion">22</integer>
</resources>
