<?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>

    <!-- AdBlock -->
    <string name="enable_adblock">Enable AdBlock</string>
    <string name="enable_adblock_summary">Blocks various ads and trackers system-wide.</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>
    <!-- Brightness slider styles -->
    <string name="brightness_slider_style_title">Brightness slider style</string>
    <string name="brightness_slider_style_default">Default</string>
    <string name="brightness_slider_style_filled">Filled</string>
    <string name="brightness_slider_style_thin">Thin</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>
