<?xml version="1.0" encoding="utf-8"?>
<!--
     Copyright (C) 2012-2016 The CyanogenMod Project
     Copyright (C) 2017-2018 The LineageOS 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">

    <!-- Setting title for the flip action setting. -->
    <string name="flip_action_title">Device flip action</string>

    <!-- Setting title for the shake action setting. -->
    <string name="shake_action_title">Device shake action</string>

    <!-- Entries listed in the setting flip and shake. -->
    <string-array name="action_setting_entries">
        <item>Snooze</item>
        <item>Dismiss</item>
        <item>Nothing</item>
    </string-array>

    <!-- Strings for notification channel. -->
    <string name="firing_alarms_timers_channel">Firing alarms &amp; timers</string>
    <string name="alarm_missed_channel">Missed alarms</string>
    <string name="alarm_snooze_channel">Snoozed alarms</string>
    <string name="alarm_upcoming_channel">Upcoming alarms</string>
    <string name="stopwatch_channel">Stopwatch</string>
    <string name="timer_channel">Timer</string>

    <string name="add_label">Add label</string>

    <!-- Permissions dialog title -->
    <string name="dialog_permissions_title">Permissions</string>
    <!-- Permissions dialog action: ask permissions access again -->
    <string name="dialog_permissions_ask">Ask again</string>
    <!-- Permissions dialog action: dismiss dialog -->
    <string name="dialog_permissions_dismiss">Dismiss</string>
    <!-- Permission dialog: Go to settings -->
    <string name="dialog_permissions_settings">Settings</string>
    <!-- Permission dialog: ask for power off alarm permission -->
    <string name="dialog_permissions_power_off_alarm">Without this permission your device won\'t be able to power on itself to fire an alarm</string>
    <!-- No permissions granted error -->
    <string name="dialog_permissions_no_permission">Required permissions were denied, enable them from Settings app</string>
    <!-- Permission dialog: ask for post notification permission -->
    <string name="dialog_permissions_post_notifications">This app relies on notifications. Without them it cannot be run!</string>

    <!-- Description of the checkmark when a ringtone is selected -->
    <string name="selected">Selected</string>
    <!-- Description of the menu button which opens on custom ringtones -->
    <string name="more_options">More options</string>

    <!-- Title of the widget layout choice activity -->
    <string name="widget_choice_title">Choose your style</string>
    <!-- Name of the transparent widget layout -->
    <string name="widget_name_transparent">Unbacked</string>
    <!-- Name of the solid widget layout -->
    <string name="widget_name_solid">Backed</string>
</resources>
