<?xml version="1.0" encoding="utf-8"?>
<!--
     Copyright (C) 2022 The LeafOS 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <!-- About device -->
    <string name="build_date">Build date</string>
    <string name="leaf_version">LeafOS version</string>
    <string name="leaf_vendor_security_patch">Vendor security patch level</string>

    <!-- Back gesture height -->
    <string name="back_height_low_label">Full</string>
    <string name="back_height_high_label">Bottom</string>
    <string name="back_options_dialog_title">Options</string>
    <string name="back_height_message">Amount of screen height used as touchable region for back gesture.</string>

    <!-- Three-fingers-swipe to screenshot -->
    <string name="three_finger_gesture">Swipe to screenshot</string>
    <string name="three_finger_gesture_summary">Swipe down with three fingers to take a screenshot</string>

   <!-- Hide power menu on lockscreen -->
    <string name="hide_powermenu_lockscreen">Hide power menu on lockscreen</string>

    <!-- QS customization -->
    <string name="qs_panel_options_title">Quick settings</string>
    <string name="qs_panel_options_summary">Customize quick settings appearance</string>
    <string name="category_name_qs_tiles">QS tiles</string>

    <!-- QS tile shape -->
    <string name="qs_tile_shape">QS tile shape</string>
    <string name="qs_tile_round">Round</string>
    <string name="qs_tile_rect">Rounded Rectangle</string>
    <string name="qs_tile_mix">Round for active tiles and Rounded Rectangle for inactive tiles</string>

    <!-- QS brightness slider -->
    <string name="category_name_qs_brightness_slider">Brightness slider</string>
    <string name="qs_brightness_slider_title">Brightness slider</string>
    <string name="qs_brightness_slider_summary">Adjust brightness slider from the Quick Settings</string>
    <string name="qs_brightness_slider_never">Never show</string>
    <string name="qs_brightness_slider_expanded">Show when expanded</string>
    <string name="qs_brightness_slider_always">Show always</string>
    <string name="qs_brightness_slider_position_title">Brightness slider position</string>
    <string name="qs_brightness_slider_position_top">Top</string>
    <string name="qs_brightness_slider_position_bottom">Bottom</string>
    <!-- QS auto brightness icon -->
    <string name="qs_auto_brightness_title">Auto brightness icon</string>
    <string name="qs_auto_brightness_summary">Show toggle for adaptive brightness near the slider</string>

    <!-- Annoying Notifications -->
    <string name="notification_sound_vib_screen_on_title">Annoying Notifications</string>
    <string name="notification_sound_vib_screen_on_summary">Play sound and vibration for notifications when screen is on</string>

    <!-- Hardware info -->
    <string name="soc_model">SoC Model</string>
    <string name="total_ram">Total RAM</string>
</resources>
